feat(site): rework 19 marketing showcases for composition diversity
Some checks are pending
ci / build (push) Waiting to run
Some checks are pending
ci / build (push) Waiting to run
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.
This commit is contained in:
parent
88c11682b1
commit
8e3cdb0d3b
296 changed files with 19131 additions and 17538 deletions
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
|
@ -1,13 +0,0 @@
|
|||
# MaruBuri source record
|
||||
|
||||
Downloaded 2026-09-12 from the official NAVER Hangeul static host. The files are retained unchanged: no conversion or subsetting was performed.
|
||||
|
||||
| File | Official URL | HTTP content type | Size | SHA-256 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `MaruBuri-Regular.woff2` | https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-Regular.woff2 | `font/woff2` | 433776 bytes | `4CF1341CF2F23FB3E263712DFDE1D8F25EEDCC328B696A2E5A2C8ADD55E5C17B` |
|
||||
| `MaruBuri-SemiBold.woff2` | https://hangeul.pstatic.net/hangeul_static/webfont/MaruBuri/MaruBuri-SemiBold.woff2 | `font/woff2` | 466108 bytes | `7AEF4862FA3219B0A7DEB6746E27116A38C4069F4424EB51EDF103B29795F5C2` |
|
||||
|
||||
- Official stylesheet checked: https://hangeul.pstatic.net/hangeul_static/css/maru-buri.css
|
||||
- Official NAVER license page saved verbatim as `LICENSE.html`: https://help.naver.com/service/11029/contents/18088?lang=ko&osType=PC
|
||||
- `LICENSE.html` SHA-256: `8538F7921744D5E040F603BC301465EFBD038F1054D0754B7508DE3286452EC3`
|
||||
- The saved official page includes the NAVER copyright notice and the SIL Open Font License 1.1 text for MaruBuri.
|
||||
|
|
@ -1,17 +1,129 @@
|
|||
# 비색의 침묵
|
||||
# design.md — 비색, 1,280°C (고려청자 특별전)
|
||||
|
||||
암실의 청자 사진을 주연으로 유지하고 회색 카드나 격자는 추가하지 않는다. 제1·2실의 방 번호, 제목, 재질 설명, 매크로 캡션을 공통 레일로 정리했다. 첫 사진은 기존 4:5 비율을 보존하고 관람 구성 CTA와 가상 관람 안내를 인접하게 둔다.
|
||||
## 진행 상태
|
||||
|
||||
| 판단 축 | 적용 | 한계 |
|
||||
| --- | --- | --- |
|
||||
| 구도 | Hofmann의 레일과 비대칭을 참고해 방 정보와 캡션을 같은 열에 맞췄다. | 전시 사진의 감상 효과를 보편적으로 예측하지 않는다. |
|
||||
| 타입 | Ruder를 참고해 방 번호와 제목·설명의 크기 차이를 명확히 했다. | 서체만으로 체류나 이해가 바뀐다고 단정하지 않는다. |
|
||||
| 색 | Albers를 참고해 어두운 바탕, 비색 강조, 밝은 CTA의 역할을 나눴다. | 실제 명도 대비는 브라우저 검증에서 확인한다. |
|
||||
- 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단계 완료 — 이 문서.
|
||||
|
||||
토큰은 `--surface`, `--ink`, `--accent`, `--container`, `--space-*`를 유지한다. 로컬 MaruBuri 400/600은 `styles/fonts.css`, Pretendard는 기존 CDN을 유지한다. 가상 전시·관람 안내와 기존 앵커는 보존했다.
|
||||
## 브리프
|
||||
|
||||
## 2026-09-12 현재 검증 기록
|
||||
- 무엇을: 고려청자 특별전 "비색, 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차 페이지 없음.
|
||||
|
||||
- `verify-final` 18개 묶음은 16개가 즉시 통과했다. 전체 묶음의 invariant·visual 검사는 Gaon·Dure를 대상으로 하며, 나머지 2개는 수정 뒤 release 독립 재실행에서 ALL PASS·ALL MATCH였다.
|
||||
- root는 28개 모바일, 21개 데스크톱, 7개 하위 경로와 30개 앱 상태를 직접 검토해 수용했다. stress 112건은 hard failure 0이며, 가로 넘침 4건은 targeted fix 뒤 390px 재측정에서 0이다.
|
||||
- 이 기록은 렌더·계약 범위의 현재 결과다. 모든 폭·키보드 경로·인쇄 등 개별 기능을 완전 재실행했다는 뜻이 아니며, 참여자 과업 효과도 미측정이다.
|
||||
## 미확정
|
||||
|
||||
- `[관람료]` — 푸터 카드. 가상 전시라 값이 없다.
|
||||
- `[전시 장소와 주소]` — 푸터 카드.
|
||||
- `[문의 전화]` — 푸터 카드.
|
||||
- 표식은 `--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, 암실 사진 주연.
|
||||
|
|
|
|||
|
|
@ -3,180 +3,238 @@
|
|||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>비색의 침묵 · 고려청자 전시 구성</title>
|
||||
<title>비색, 1,280°C — 고려청자 특별전</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="고려청자의 빙렬과 상감을 세 개의 방으로 읽는 가상 전시 구성입니다. 일정·장소·예약 정보는 예시입니다."
|
||||
content="1,280°C 환원 불로 구운 고려청자 특별전. 제1실 빙렬, 제2실 상감을 접사로 보고, 2026년 9월 5일부터 11월 22일까지의 관람 시간과 해설 시간을 확인합니다."
|
||||
/>
|
||||
<meta property="og:title" content="비색의 침묵 · 고려청자 전시 구성" />
|
||||
<meta property="og:title" content="비색, 1,280°C — 고려청자 특별전" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="유약의 빙렬과 상감 문양을 세 개의 방으로 읽는 가상 전시 구성."
|
||||
content="1,280°C 환원 불로 구운 고려청자의 빙렬과 상감을 전시실 두 곳에서 접사로 보는 특별전."
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta name="theme-color" content="#121514" />
|
||||
<meta property="og:image" content="https://designpaca.chanpaca.net/work/baekje-celadon/assets/crazing.webp" />
|
||||
<meta property="og:image:alt" content="청자 유약 표면의 빙렬 접사" />
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="theme-color" content="#0f1a18" />
|
||||
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="./styles/fonts.css?v=20260912all"
|
||||
href="https://fonts.googleapis.com/css2?family=Song+Myung&family=Noto+Sans+KR&display=swap"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css"
|
||||
/>
|
||||
<link rel="stylesheet" href="./styles/main.css?v=20260912all" />
|
||||
<link rel="stylesheet" href="./styles/main.css?v=20261006" />
|
||||
<link
|
||||
rel="icon"
|
||||
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='%23121514'/%3E%3Cpath d='M11 6h10c-1 3-1 5 0 7 2 3 3 5 3 8 0 4-3 7-8 7s-8-3-8-7c0-3 1-5 3-8 1-2 1-4 0-7z' fill='none' stroke='%236FA08F' stroke-width='1.5'/%3E%3C/svg%3E"
|
||||
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='%230f1a18'/%3E%3Cpath d='M11 6h10c-1 3-1 5 0 7 2 3 3 5 3 8 0 4-3 7-8 7s-8-3-8-7c0-3 1-5 3-8 1-2 1-4 0-7z' fill='none' stroke='%2384c3a9' stroke-width='1.5'/%3E%3C/svg%3E"
|
||||
/>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<a class="skip" href="#main">본문으로 건너뛰기</a>
|
||||
|
||||
<header class="site-head">
|
||||
<div class="wrap head-inner">
|
||||
<a class="wordmark" href="#main">비색의 침묵</a>
|
||||
<nav class="nav" aria-label="섹션">
|
||||
<a href="#room-1">빙렬의 방</a>
|
||||
<a href="#room-2">상감의 방</a>
|
||||
<a href="#visit">관람</a>
|
||||
<!-- 재질 필터. 듀오톤 램프는 tokens.css의 --duo-shadow / --duo-high 와 같은 값이다.
|
||||
feTurbulence 는 정적 오버레이 한 장에만 쓴다(svg-filters §6). -->
|
||||
<svg class="defs" aria-hidden="true" focusable="false">
|
||||
<filter id="duotone" color-interpolation-filters="sRGB">
|
||||
<feComponentTransfer>
|
||||
<feFuncR type="linear" slope="1.18" intercept="-0.08" />
|
||||
<feFuncG type="linear" slope="1.18" intercept="-0.08" />
|
||||
<feFuncB type="linear" slope="1.18" intercept="-0.08" />
|
||||
</feComponentTransfer>
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0"
|
||||
/>
|
||||
<feComponentTransfer>
|
||||
<feFuncR type="table" tableValues="0.059 0.345 0.812" />
|
||||
<feFuncG type="table" tableValues="0.102 0.600 0.890" />
|
||||
<feFuncB type="table" tableValues="0.094 0.541 0.855" />
|
||||
</feComponentTransfer>
|
||||
</filter>
|
||||
<filter id="glaze" x="0" y="0" width="100%" height="100%" color-interpolation-filters="sRGB">
|
||||
<feTurbulence type="fractalNoise" baseFrequency="0.85 0.55" numOctaves="2" seed="7" stitchTiles="stitch" result="n" />
|
||||
<feColorMatrix
|
||||
in="n"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0.81 0 0 0 0 0.89 0 0 0 0 0.85 0 0 0 0.55 -0.08"
|
||||
/>
|
||||
</filter>
|
||||
</svg>
|
||||
|
||||
<header class="hero">
|
||||
<div class="hero-media">
|
||||
<img
|
||||
src="./assets/crazing.webp"
|
||||
alt="청자 유약 표면의 빙렬 접사. 비취색 유약 위에 미세한 균열망이 퍼져 있다"
|
||||
width="1600"
|
||||
height="1200"
|
||||
loading="eager"
|
||||
fetchpriority="high"
|
||||
decoding="async"
|
||||
/>
|
||||
</div>
|
||||
<div class="hero-glaze" aria-hidden="true"></div>
|
||||
<div class="hero-scrim" aria-hidden="true"></div>
|
||||
|
||||
<div class="wrap hero-band">
|
||||
<div class="hero-title">
|
||||
<h1 id="hero-h">비색, 1,280°C</h1>
|
||||
<p class="lead">
|
||||
가마 안 산소를 줄인 1,280°C 환원 불로 구운 고려청자 특별전입니다. 유약 속 철분이
|
||||
만든 비취색을 전시실 두 곳에서 접사로 봅니다.
|
||||
</p>
|
||||
</div>
|
||||
<nav class="toc" aria-label="전시 차례">
|
||||
<ol>
|
||||
<li>
|
||||
<a href="#room-1">
|
||||
<span class="toc-no">1</span>
|
||||
<span class="toc-name">빙렬</span>
|
||||
<span class="toc-desc">유약 표면의 잔금</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#room-2">
|
||||
<span class="toc-no">2</span>
|
||||
<span class="toc-name">상감</span>
|
||||
<span class="toc-desc">새기고 흙으로 메운 무늬</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#visit">
|
||||
<span class="toc-no">3</span>
|
||||
<span class="toc-name">관람 안내</span>
|
||||
<span class="toc-desc">9월 5일부터 11월 22일까지</span>
|
||||
</a>
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="main">
|
||||
<section class="hero" aria-labelledby="hero-h">
|
||||
<div class="wrap hero-grid">
|
||||
<figure class="hero-figure reveal">
|
||||
<section id="room-1" class="room" aria-labelledby="room1-h">
|
||||
<div class="wrap room-grid">
|
||||
<p class="room-no"><span class="room-digit" aria-hidden="true">1</span><span class="room-word">제1실</span></p>
|
||||
<div class="room-text">
|
||||
<h2 id="room1-h">빙렬은 청자가 식으면서 유약에 생긴 잔금입니다</h2>
|
||||
<p>
|
||||
가마에서 꺼낸 청자는 식으면서 유약에 잔금이 생깁니다. 흙과 유약이 줄어드는 속도가
|
||||
다르기 때문입니다. 빙렬은 결함으로 보지 않으며, 같은 가마에서 나온 그릇이라도 잔금
|
||||
모양이 모두 다릅니다.
|
||||
</p>
|
||||
<p>
|
||||
제1실 입구에 청자 주자 한 점을 두고 조명 하나를 비춥니다. 첫 화면의 접사는 12세기
|
||||
청자 표면의 빙렬을 측광으로 찍은 것입니다.
|
||||
</p>
|
||||
</div>
|
||||
<figure class="room-figure">
|
||||
<img
|
||||
class="duo"
|
||||
src="./assets/ewer-dark.webp"
|
||||
alt="암실 조명 아래 어두운 받침대 위에 놓인 고려청자 주자의 비취색 실루엣"
|
||||
alt="어두운 받침대 위에 놓인 고려청자 주자. 조명 하나가 비취색 유약을 비춘다"
|
||||
width="960"
|
||||
height="1280"
|
||||
loading="eager"
|
||||
fetchpriority="high"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
/>
|
||||
<figcaption>
|
||||
<span>청자 주자 · 전시 연출 이미지</span>
|
||||
<span>가상 전시 소품</span>
|
||||
</figcaption>
|
||||
<figcaption>제1실 입구의 청자 주자. 연출 이미지</figcaption>
|
||||
</figure>
|
||||
<div class="hero-text">
|
||||
<p class="hero-kicker reveal" style="--delay: 100ms">
|
||||
가상 전시 구성 · 고려청자
|
||||
</p>
|
||||
<h1 id="hero-h" class="reveal" style="--delay: 160ms">
|
||||
천 년의 비색은<br />말이 없다
|
||||
</h1>
|
||||
<p class="lead reveal" style="--delay: 240ms">
|
||||
비색은 말로 설명되는 색이 아닙니다. 1,280°C의 환원 불에서만
|
||||
나오는, 푸르름과 푸름이 아닌 사이의 색. 이 전시는 그 색을 설명하지
|
||||
않고 세 개의 암실에 놓아 두었습니다.
|
||||
</p>
|
||||
<div class="hero-actions reveal" style="--delay: 300ms">
|
||||
<a class="btn" href="#visit">관람 구성 보기</a>
|
||||
<p class="hero-note">일정·장소·예약 정보는 전시 구성 예시이며 실제 관람을 접수하지 않습니다.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="room-1" class="section plate" aria-labelledby="room1-h">
|
||||
<div class="wrap plate-head">
|
||||
<p class="room-no reveal">제1실</p>
|
||||
<h2 id="room1-h" class="reveal" style="--delay: 60ms">빙렬 — 유약이 남긴 지도</h2>
|
||||
<p class="lead reveal" style="--delay: 120ms">
|
||||
가마에서 꺼내진 청자는 식으면서 유약이 갈라집니다. 흙과 유약이 줄어드는
|
||||
속도가 다르기 때문입니다. 그 균열은 결함이 아니라, 그릇마다 단 한 번만
|
||||
그려지는 지도입니다.
|
||||
</p>
|
||||
</div>
|
||||
<figure class="plate-figure reveal" style="--delay: 160ms">
|
||||
<img
|
||||
src="./assets/crazing.webp"
|
||||
alt="청자 유약 표면의 빙렬 — 미세한 균열망이 비취색 유약 위에 퍼져 있다"
|
||||
width="1600"
|
||||
height="1200"
|
||||
loading="lazy"
|
||||
/>
|
||||
<figcaption class="wrap">
|
||||
<span>빙렬 확대 · 12세기 청자 표면 · 측광</span>
|
||||
</figcaption>
|
||||
</figure>
|
||||
</section>
|
||||
|
||||
<section id="room-2" class="section" aria-labelledby="room2-h">
|
||||
<div class="wrap two">
|
||||
<div class="two-text">
|
||||
<p class="room-no reveal">제2실</p>
|
||||
<h2 id="room2-h" class="reveal" style="--delay: 60ms">
|
||||
상감 — 새기고,<br />흙으로 채우다
|
||||
</h2>
|
||||
<p class="reveal" style="--delay: 120ms">
|
||||
상감은 그림을 그리는 게 아니라 파내는 기술입니다. 흙 그릇에 무늬를
|
||||
새기고, 그 홈에 백토와 자토를 문질러 채운 뒤 유약을 입힙니다. 불에
|
||||
들어가기 전까지는 무늬가 보이지 않습니다 — 가마를 열기 전까지 장인도
|
||||
결과를 알 수 없었습니다.
|
||||
</p>
|
||||
<p class="muted reveal" style="--delay: 180ms">
|
||||
제2실에는 구름·학·버드나무의 세 가지 문양만을 전시합니다. 상감청자의
|
||||
문양은 자연의 모방이 아니라, 보이지 않는 것(구름, 바람, 계절)을
|
||||
보이는 것으로 옮긴 문법입니다.
|
||||
</p>
|
||||
</div>
|
||||
<figure class="two-photo reveal" style="--delay: 100ms">
|
||||
<section id="room-2" class="room room-wall" aria-labelledby="room2-h">
|
||||
<figure class="wall">
|
||||
<div class="wall-media">
|
||||
<img
|
||||
class="duo"
|
||||
src="./assets/inlay.webp"
|
||||
alt="청자 상감 문양 접사 — 흑백 상감 획이 비취 유약 위에 새겨져 있다"
|
||||
alt="청자 상감 모란당초문 접사. 비취 유약 위에 흰 꽃과 검은 줄기 무늬가 새겨져 있다"
|
||||
width="1100"
|
||||
height="825"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
/>
|
||||
<figcaption>상감 모란당초문 · 접사</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
<figcaption class="wrap">상감 모란당초문 접사</figcaption>
|
||||
</figure>
|
||||
<div class="wrap room-grid">
|
||||
<p class="room-no"><span class="room-digit" aria-hidden="true">2</span><span class="room-word">제2실</span></p>
|
||||
<div class="room-text">
|
||||
<h2 id="room2-h">상감은 무늬를 파내고 다른 색 흙으로 메우는 기법입니다</h2>
|
||||
<p>
|
||||
그릇 표면에 무늬를 새긴 뒤 홈에 백토와 자토를 문질러 채우고, 유약을 입혀 굽습니다. 흰
|
||||
무늬와 검은 무늬는 이 두 가지 흙의 색입니다.
|
||||
</p>
|
||||
<p>
|
||||
제2실에는 구름, 학, 버드나무 세 가지 문양의 상감청자를 전시합니다. 조명을 비스듬히 두어
|
||||
흙을 메운 홈의 깊이까지 보이게 했습니다.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="visit" class="section band" aria-labelledby="visit-h">
|
||||
<div class="wrap visit-grid">
|
||||
<div>
|
||||
<p class="room-no reveal">안내</p>
|
||||
<h2 id="visit-h" class="reveal" style="--delay: 60ms">세 개의 방으로 보는 전시 구성</h2>
|
||||
<p class="reveal" style="--delay: 120ms">
|
||||
조명과 동선이 관람 경험을 어떻게 바꾸는지 보여 주기 위한 예시입니다.
|
||||
아래 일정과 해설 방식은 실제 전시 운영 정보가 아닙니다.
|
||||
<section id="visit" class="room" aria-labelledby="visit-h">
|
||||
<div class="wrap room-grid">
|
||||
<p class="room-no"><span class="room-digit" aria-hidden="true">3</span><span class="room-word">안내</span></p>
|
||||
<div class="room-text">
|
||||
<h2 id="visit-h">전시실마다 조명은 하나, 동선은 한 방향입니다</h2>
|
||||
<p>
|
||||
제1실에서는 빙렬을 가까이서 보고, 제2실에서는 비스듬한 조명으로 상감의 홈을 봅니다.
|
||||
</p>
|
||||
<dl class="facts">
|
||||
<div>
|
||||
<dt>해설</dt>
|
||||
<dd>11:00, 14:00, 16:00에 시작하며 회당 40분입니다.</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>예약</dt>
|
||||
<dd>가상 전시라 관람 예약을 받지 않습니다.</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
<dl class="visit-dl reveal" style="--delay: 160ms">
|
||||
<div>
|
||||
<dt>전시 기간 예시</dt>
|
||||
<dd>2026년 9월 5일 – 11월 22일 · 월요일 휴관</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>관람 시간 예시</dt>
|
||||
<dd>10:00–18:00 · 금·토 21:00까지</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>해설 구성 예시</dt>
|
||||
<dd>11:00 / 14:00 / 16:00 · 회당 40분</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>예약</dt>
|
||||
<dd>실제 예약 시스템과 연결되지 않습니다.</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="site-foot">
|
||||
<div class="wrap foot-inner">
|
||||
<p>비색의 침묵 · 고려청자 전시 구성</p>
|
||||
<p class="muted">가상 전시 프로젝트 · 장소와 소장 정보는 예시입니다.</p>
|
||||
<div class="wrap foot-grid">
|
||||
<p class="foot-mark">비색, 1,280°C</p>
|
||||
<div class="foot-card">
|
||||
<dl>
|
||||
<div>
|
||||
<dt>전시 기간</dt>
|
||||
<dd>2026년 9월 5일 토요일부터 11월 22일 일요일까지</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>관람 시간</dt>
|
||||
<dd>10:00부터 18:00까지. 금요일과 토요일은 21:00까지</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>휴관</dt>
|
||||
<dd>매주 월요일</dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>관람료</dt>
|
||||
<dd><span class="placeholder">[관람료]</span></dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>장소</dt>
|
||||
<dd><span class="placeholder">[전시 장소와 주소]</span></dd>
|
||||
</div>
|
||||
<div>
|
||||
<dt>문의</dt>
|
||||
<dd><span class="placeholder">[문의 전화]</span></dd>
|
||||
</div>
|
||||
</dl>
|
||||
</div>
|
||||
<p class="foot-note">
|
||||
가상 전시 쇼케이스입니다. 일정과 소장 정보는 예시이고, 대괄호 자리는 값이 정해지면 채웁니다.
|
||||
</p>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
@font-face {
|
||||
font-family: "MaruBuri";
|
||||
src: url("../assets/fonts/MaruBuri-Regular.woff2") format("woff2");
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "MaruBuri";
|
||||
src: url("../assets/fonts/MaruBuri-SemiBold.woff2") format("woff2");
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
font-display: swap;
|
||||
}
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
@import url("./tokens.css?v=20260912all");
|
||||
@import url("./tokens.css");
|
||||
|
||||
/* ==========================================================================
|
||||
비색의 침묵 — editorial-archival. 암실의 세 개의 방.
|
||||
비색, 1,280°C — 세 개의 벽. 섹션 하나가 암실의 벽 하나다.
|
||||
값은 tokens.css 에만 있다. 여기서는 var() 만 쓴다.
|
||||
========================================================================== */
|
||||
|
||||
*,
|
||||
|
|
@ -18,6 +19,7 @@ html {
|
|||
scroll-behavior: smooth;
|
||||
background: var(--surface);
|
||||
color-scheme: dark;
|
||||
font-synthesis-style: none;
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
html {
|
||||
|
|
@ -29,51 +31,61 @@ body {
|
|||
background: var(--surface);
|
||||
color: var(--ink);
|
||||
font-family: var(--font-body);
|
||||
font-weight: var(--weight-body);
|
||||
font-size: var(--step-0);
|
||||
line-height: var(--leading-normal);
|
||||
line-height: var(--leading-body);
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
:where(h1, h2) {
|
||||
font-family: var(--font-display);
|
||||
font-weight: 500;
|
||||
line-height: var(--leading-tight);
|
||||
/* 한글 조판 정본(typography §6-5) */
|
||||
:lang(ko) {
|
||||
word-break: keep-all;
|
||||
overflow-wrap: break-word;
|
||||
overflow-wrap: anywhere;
|
||||
line-break: strict;
|
||||
}
|
||||
:lang(ko) :is(p, li, dd, dt, figcaption) {
|
||||
line-height: var(--leading-body);
|
||||
letter-spacing: 0;
|
||||
text-wrap: pretty;
|
||||
}
|
||||
:lang(ko) :is(h1, h2) {
|
||||
line-height: var(--leading-heading);
|
||||
text-wrap: balance;
|
||||
}
|
||||
:lang(ko) :is(em, i, cite, dfn, address) {
|
||||
font-style: normal;
|
||||
}
|
||||
:lang(ko) a {
|
||||
text-underline-position: under;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
.room-digit,
|
||||
.toc-no,
|
||||
.foot-mark {
|
||||
font-family: var(--font-display);
|
||||
font-weight: 400;
|
||||
}
|
||||
h1 {
|
||||
font-size: var(--step-3);
|
||||
line-height: var(--leading-tight);
|
||||
letter-spacing: -0.01em;
|
||||
white-space: nowrap; /* 한 줄 큰 낱말. 390 에서는 아래 미디어쿼리가 푼다 */
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
h2 {
|
||||
font-size: var(--step-2);
|
||||
max-width: var(--measure);
|
||||
}
|
||||
:where(p, li, dd, dt, th, td, figcaption) {
|
||||
word-break: keep-all;
|
||||
overflow-wrap: break-word;
|
||||
line-height: var(--leading-normal);
|
||||
text-wrap: pretty;
|
||||
}
|
||||
|
||||
.lead {
|
||||
font-size: var(--step-1);
|
||||
color: var(--ink-muted);
|
||||
max-width: 32em;
|
||||
}
|
||||
.muted {
|
||||
color: var(--ink-muted);
|
||||
max-width: var(--measure);
|
||||
}
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
.link {
|
||||
color: var(--accent);
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: border-color var(--dur-quick) var(--ease-soft);
|
||||
}
|
||||
.link:hover {
|
||||
border-color: var(--accent);
|
||||
}
|
||||
|
||||
:focus-visible {
|
||||
outline: 2px solid var(--accent);
|
||||
|
|
@ -84,22 +96,20 @@ a {
|
|||
position: absolute;
|
||||
left: -9999px;
|
||||
top: 0;
|
||||
z-index: 100;
|
||||
background: var(--ink);
|
||||
color: var(--surface);
|
||||
padding: var(--space-3) var(--space-4);
|
||||
z-index: 100;
|
||||
}
|
||||
.skip:focus {
|
||||
left: 0;
|
||||
}
|
||||
.sr-only {
|
||||
|
||||
.defs {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
width: 0;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
clip: rect(0 0 0 0);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.wrap {
|
||||
|
|
@ -107,327 +117,368 @@ a {
|
|||
margin-inline: auto;
|
||||
}
|
||||
|
||||
/* ── 헤더 ─────────────────────────────────────────────────────────────── */
|
||||
|
||||
.site-head {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 50;
|
||||
background: color-mix(in srgb, var(--surface) 86%, transparent);
|
||||
backdrop-filter: blur(8px);
|
||||
border-bottom: 1px solid var(--line);
|
||||
}
|
||||
.head-inner {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
justify-content: space-between;
|
||||
gap: var(--space-4);
|
||||
padding-block: var(--space-3);
|
||||
}
|
||||
.wordmark {
|
||||
font-family: var(--font-display);
|
||||
font-size: var(--step-1);
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
}
|
||||
.nav {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: clamp(var(--space-3), 2vw, var(--space-5));
|
||||
font-size: var(--step--1);
|
||||
}
|
||||
.nav a {
|
||||
text-decoration: none;
|
||||
color: var(--ink-muted);
|
||||
padding-block: 2px;
|
||||
border-bottom: 1px solid transparent;
|
||||
transition: color var(--dur-quick) var(--ease-soft),
|
||||
border-color var(--dur-quick) var(--ease-soft);
|
||||
}
|
||||
.nav a:hover {
|
||||
color: var(--ink);
|
||||
border-color: var(--accent);
|
||||
/* 듀오톤 — 사진 세 장을 한 톤으로 묶는다 */
|
||||
.duo,
|
||||
.hero-media img {
|
||||
filter: url("#duotone");
|
||||
}
|
||||
|
||||
/* ── 첫 방(히어로) ────────────────────────────────────────────────────── */
|
||||
/* ── 벽 1: 유약 접사 전면 + 표제부 ────────────────────────────────────── */
|
||||
|
||||
.hero {
|
||||
position: relative;
|
||||
isolation: isolate;
|
||||
overflow: clip;
|
||||
min-height: 100svh;
|
||||
display: grid;
|
||||
align-items: center;
|
||||
min-block-size: min(46rem, calc(100svh - 4rem));
|
||||
padding-block: var(--space-6);
|
||||
border-bottom: 1px solid var(--line);
|
||||
align-items: end;
|
||||
}
|
||||
.hero-grid {
|
||||
.hero-media {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: -3;
|
||||
transform-origin: 50% 35%;
|
||||
}
|
||||
.hero-media img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: 50% 40%;
|
||||
}
|
||||
/* feTurbulence 유약 결 — 정적 오버레이 한 장. 움직이는 래퍼와 분리한다 */
|
||||
.hero-glaze {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: -2;
|
||||
background: var(--surface);
|
||||
filter: url("#glaze");
|
||||
mix-blend-mode: soft-light;
|
||||
opacity: 0.7;
|
||||
pointer-events: none;
|
||||
}
|
||||
/* 표제가 앉는 하단만 먹으로 가라앉힌다. 글자 대비는 이 면 위에서 잰다 */
|
||||
.hero-scrim {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
z-index: -1;
|
||||
background: linear-gradient(
|
||||
to top,
|
||||
rgb(var(--surface-rgb) / 1) 0%,
|
||||
rgb(var(--surface-rgb) / 0.96) 22%,
|
||||
rgb(var(--surface-rgb) / 0.6) 46%,
|
||||
rgb(var(--surface-rgb) / 0) 72%
|
||||
);
|
||||
pointer-events: none;
|
||||
}
|
||||
.hero-band {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(15rem, 34rem) minmax(0, 1fr);
|
||||
gap: clamp(var(--space-5), 6vw, var(--space-8));
|
||||
align-items: center;
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
align-items: end;
|
||||
column-gap: var(--space-7);
|
||||
row-gap: var(--space-5);
|
||||
padding-block: var(--space-6) var(--space-5);
|
||||
}
|
||||
.hero-grid > *,
|
||||
.two > *,
|
||||
.visit-grid > * {
|
||||
.hero-band > * {
|
||||
min-width: 0;
|
||||
}
|
||||
.hero-figure {
|
||||
width: min(100%, 34rem);
|
||||
}
|
||||
.hero-figure img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
.hero-figure figcaption {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: var(--space-3);
|
||||
margin-top: var(--space-2);
|
||||
font-size: var(--step--1);
|
||||
color: var(--ink-faint);
|
||||
}
|
||||
.hero-kicker {
|
||||
font-size: var(--step--1);
|
||||
color: var(--accent);
|
||||
letter-spacing: 0.12em;
|
||||
margin-bottom: var(--space-4);
|
||||
}
|
||||
.hero-text {
|
||||
max-width: 39rem;
|
||||
padding-block: var(--space-4);
|
||||
}
|
||||
.hero-text .lead {
|
||||
.hero-title .lead {
|
||||
margin-top: var(--space-4);
|
||||
}
|
||||
.hero-actions {
|
||||
margin-top: var(--space-5);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-4);
|
||||
flex-wrap: wrap;
|
||||
|
||||
/* 표제부에 녹인 차례 */
|
||||
.toc ol {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
display: grid;
|
||||
gap: var(--space-1);
|
||||
}
|
||||
.hero-note {
|
||||
font-size: var(--step--1);
|
||||
color: var(--ink-faint);
|
||||
}
|
||||
.btn {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
min-height: 44px;
|
||||
padding-inline: var(--space-4);
|
||||
background: var(--ink);
|
||||
color: var(--surface);
|
||||
font-weight: 500;
|
||||
.toc a {
|
||||
display: grid;
|
||||
grid-template-columns: 2.25rem minmax(0, auto);
|
||||
grid-template-areas:
|
||||
"no name"
|
||||
"no desc";
|
||||
align-items: baseline;
|
||||
column-gap: var(--space-3);
|
||||
min-height: 48px;
|
||||
padding-block: var(--space-2);
|
||||
text-decoration: none;
|
||||
padding: 0.75rem 1.5rem;
|
||||
border-radius: var(--radius);
|
||||
transition: background var(--dur-quick) var(--ease-soft);
|
||||
border-bottom: 1px solid var(--line);
|
||||
transition: border-color var(--dur-quick) var(--ease-soft);
|
||||
}
|
||||
.btn:hover {
|
||||
background: var(--ink-bright);
|
||||
.toc li:first-child a {
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
|
||||
/* ── 방 번호 ──────────────────────────────────────────────────────────── */
|
||||
|
||||
.room-no {
|
||||
.toc a:hover {
|
||||
border-bottom-color: var(--accent);
|
||||
}
|
||||
.toc-no {
|
||||
grid-area: no;
|
||||
color: var(--accent);
|
||||
font-size: var(--step-2);
|
||||
line-height: 1;
|
||||
}
|
||||
.toc-name {
|
||||
grid-area: name;
|
||||
font-weight: var(--weight-strong);
|
||||
}
|
||||
.toc-desc {
|
||||
grid-area: desc;
|
||||
font-size: var(--step--1);
|
||||
color: var(--accent-dim);
|
||||
letter-spacing: 0.4em;
|
||||
margin-bottom: var(--space-3);
|
||||
color: var(--ink-muted);
|
||||
}
|
||||
|
||||
/* ── 섹션 공통 ────────────────────────────────────────────────────────── */
|
||||
/* ── 벽 2·3·4: 전시실 ───────────────────────────────────────────────── */
|
||||
|
||||
.section {
|
||||
.room {
|
||||
padding-block: var(--space-8);
|
||||
}
|
||||
.section[id] {
|
||||
scroll-margin-top: 6rem;
|
||||
.room[id] {
|
||||
scroll-margin-top: var(--space-5);
|
||||
}
|
||||
.band {
|
||||
background: var(--surface-raised);
|
||||
border-block: 1px solid var(--line);
|
||||
.room + .room {
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
|
||||
/* ── 제1실 — 풀블리드 판 ──────────────────────────────────────────────── */
|
||||
|
||||
.plate-head {
|
||||
.room-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(8rem, 1fr) minmax(0, 5fr);
|
||||
column-gap: var(--space-5);
|
||||
max-width: var(--container);
|
||||
grid-template-columns: minmax(6rem, 1fr) minmax(0, 4fr) minmax(0, 3fr);
|
||||
column-gap: var(--space-6);
|
||||
row-gap: var(--space-5);
|
||||
align-items: start;
|
||||
}
|
||||
.plate-head .room-no {
|
||||
grid-column: 1;
|
||||
grid-row: 1 / span 2;
|
||||
margin: 0;
|
||||
.room-grid > * {
|
||||
min-width: 0;
|
||||
}
|
||||
.plate-head h2 {
|
||||
grid-column: 2;
|
||||
margin-top: var(--space-1);
|
||||
}
|
||||
.plate-head .lead {
|
||||
grid-column: 2;
|
||||
margin-top: var(--space-4);
|
||||
}
|
||||
.plate-figure {
|
||||
width: min(100% - 2 * var(--pad-inline), var(--container-wide));
|
||||
margin: var(--space-6) auto 0;
|
||||
}
|
||||
.plate-figure img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.plate-figure figcaption {
|
||||
.room-no {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(8rem, 1fr) minmax(0, 5fr);
|
||||
column-gap: var(--space-5);
|
||||
gap: var(--space-2);
|
||||
line-height: 1;
|
||||
}
|
||||
.room-digit {
|
||||
font-size: var(--step-numeral);
|
||||
line-height: 0.85;
|
||||
color: var(--accent);
|
||||
}
|
||||
.room-word {
|
||||
font-size: var(--step--1);
|
||||
color: var(--ink-faint);
|
||||
margin-top: var(--space-2);
|
||||
color: var(--ink-muted);
|
||||
}
|
||||
.plate-figure figcaption span {
|
||||
grid-column: 2;
|
||||
.room-text {
|
||||
max-width: var(--measure);
|
||||
}
|
||||
|
||||
/* ── 제2실 — 2단 ──────────────────────────────────────────────────────── */
|
||||
|
||||
.two {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);
|
||||
gap: var(--space-6) var(--space-7);
|
||||
align-items: center;
|
||||
}
|
||||
.two-text h2 {
|
||||
margin-top: var(--space-1);
|
||||
}
|
||||
.two-text p + p {
|
||||
.room-text > * + * {
|
||||
margin-top: var(--space-4);
|
||||
}
|
||||
.two-photo img {
|
||||
.room-text h2 + p {
|
||||
margin-top: var(--space-5);
|
||||
}
|
||||
.room-figure img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
border-radius: var(--radius);
|
||||
}
|
||||
.two-photo figcaption {
|
||||
.room-figure figcaption,
|
||||
.wall figcaption {
|
||||
margin-top: var(--space-2);
|
||||
font-size: var(--step--1);
|
||||
color: var(--ink-faint);
|
||||
margin-top: var(--space-2);
|
||||
}
|
||||
|
||||
/* ── 안내 ─────────────────────────────────────────────────────────────── */
|
||||
/* 제2실 — 상감 접사 풀블리드 띠. 글은 띠 아래로 */
|
||||
.room-wall {
|
||||
padding-top: 0;
|
||||
}
|
||||
.wall {
|
||||
margin-bottom: var(--space-7);
|
||||
}
|
||||
.wall-media {
|
||||
position: relative;
|
||||
overflow: clip;
|
||||
width: 100%; /* max-height 가 걸리면 aspect-ratio 가 폭을 줄인다(2560 실측) — 폭을 고정한다 */
|
||||
aspect-ratio: 16 / 7;
|
||||
max-height: 80svh;
|
||||
}
|
||||
/* 띠보다 12% 크게 두고 세로로만 밀어 가로 오버플로가 생기지 않게 한다(scale 금지 — 감사가 clip 전 rect를 잰다) */
|
||||
.wall-media img {
|
||||
position: absolute;
|
||||
inset: -6% 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 112%;
|
||||
object-fit: cover;
|
||||
object-position: 18% 50%;
|
||||
}
|
||||
|
||||
.visit-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
||||
gap: var(--space-5) var(--space-7);
|
||||
align-items: start;
|
||||
}
|
||||
.visit-grid h2 {
|
||||
margin-top: var(--space-1);
|
||||
}
|
||||
.visit-dl {
|
||||
/* 사실 목록 */
|
||||
.facts {
|
||||
display: grid;
|
||||
gap: var(--space-3);
|
||||
}
|
||||
.visit-dl dt {
|
||||
.facts dt {
|
||||
font-size: var(--step--1);
|
||||
color: var(--ink-faint);
|
||||
}
|
||||
.visit-dl dd {
|
||||
margin-top: 2px;
|
||||
.facts dd {
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
|
||||
/* ── 푸터 ─────────────────────────────────────────────────────────────── */
|
||||
/* ── 푸터: 연락처·시간 카드 ────────────────────────────────────────── */
|
||||
|
||||
.site-foot {
|
||||
border-top: 1px solid var(--line);
|
||||
padding-block: var(--space-5);
|
||||
font-size: var(--step--1);
|
||||
padding-block: var(--space-7) var(--space-6);
|
||||
}
|
||||
.foot-inner {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
gap: var(--space-3) var(--space-5);
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
/* ── 등장 모션 ────────────────────────────────────────────────────────── */
|
||||
|
||||
.reveal {
|
||||
opacity: 1;
|
||||
translate: 0 0;
|
||||
}
|
||||
.two-text {
|
||||
.foot-grid {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(8rem, 1fr) minmax(0, 5fr);
|
||||
column-gap: var(--space-5);
|
||||
grid-template-columns: minmax(6rem, 1fr) minmax(0, 7fr);
|
||||
column-gap: var(--space-6);
|
||||
row-gap: var(--space-5);
|
||||
align-items: start;
|
||||
}
|
||||
.two-text .room-no {
|
||||
grid-column: 1;
|
||||
grid-row: 1 / span 3;
|
||||
margin: 0;
|
||||
.foot-grid > * {
|
||||
min-width: 0;
|
||||
}
|
||||
.two-text h2,
|
||||
.two-text p {
|
||||
.foot-mark {
|
||||
font-size: var(--step-1);
|
||||
white-space: nowrap;
|
||||
}
|
||||
.foot-card {
|
||||
background: var(--surface-raised);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius);
|
||||
padding: var(--space-5);
|
||||
}
|
||||
.foot-card dl {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: var(--space-5) var(--space-6);
|
||||
}
|
||||
.foot-card dt {
|
||||
font-size: var(--step--1);
|
||||
color: var(--ink-faint);
|
||||
}
|
||||
.foot-card dd {
|
||||
margin-top: var(--space-1);
|
||||
font-variant-numeric: tabular-nums;
|
||||
}
|
||||
.placeholder {
|
||||
border-bottom: var(--placeholder-line);
|
||||
color: var(--ink-muted);
|
||||
}
|
||||
.foot-note {
|
||||
grid-column: 2;
|
||||
font-size: var(--step--1);
|
||||
color: var(--ink-faint);
|
||||
max-width: var(--measure);
|
||||
}
|
||||
|
||||
/* ── 모션: scroll-driven. 지원 안 되면·감소 모션이면 정지 ─────────────── */
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
@supports (animation-timeline: scroll()) {
|
||||
.hero-media {
|
||||
animation: hero-zoom 1ms linear both;
|
||||
animation-timeline: scroll(root block);
|
||||
animation-range: 0 100dvh;
|
||||
}
|
||||
.wall-media img {
|
||||
animation: wall-drift 1ms linear both;
|
||||
animation-timeline: view();
|
||||
animation-range: cover 0% cover 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
@keyframes hero-zoom {
|
||||
from {
|
||||
transform: translate3d(0, 0, 0) scale(1);
|
||||
}
|
||||
to {
|
||||
transform: translate3d(0, var(--hero-shift-to), 0) scale(var(--hero-scale-to));
|
||||
}
|
||||
}
|
||||
@keyframes wall-drift {
|
||||
from {
|
||||
transform: translate3d(0, -4%, 0);
|
||||
}
|
||||
to {
|
||||
transform: translate3d(0, 4%, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* ── 반응형 ───────────────────────────────────────────────────────────── */
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.hero-grid,
|
||||
.two,
|
||||
.visit-grid {
|
||||
@media (max-width: 1023px) {
|
||||
.room-grid {
|
||||
grid-template-columns: minmax(5rem, 1fr) minmax(0, 5fr);
|
||||
}
|
||||
.room-figure {
|
||||
grid-column: 2;
|
||||
max-width: 30rem;
|
||||
}
|
||||
.foot-grid {
|
||||
grid-template-columns: 1fr;
|
||||
gap: var(--space-5);
|
||||
row-gap: var(--space-4);
|
||||
}
|
||||
.hero-grid {
|
||||
align-items: start;
|
||||
.foot-card dl {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
.hero {
|
||||
min-block-size: auto;
|
||||
}
|
||||
.hero-text {
|
||||
order: -1;
|
||||
padding-top: 0;
|
||||
}
|
||||
.hero-figure {
|
||||
max-width: 26rem;
|
||||
}
|
||||
.hero,
|
||||
.section {
|
||||
padding-block: var(--space-6);
|
||||
}
|
||||
.plate-head,
|
||||
.two-text,
|
||||
.plate-figure figcaption {
|
||||
grid-template-columns: 1fr;
|
||||
row-gap: var(--space-3);
|
||||
}
|
||||
.plate-head .room-no,
|
||||
.plate-head h2,
|
||||
.plate-head .lead,
|
||||
.two-text .room-no,
|
||||
.two-text h2,
|
||||
.two-text p {
|
||||
grid-column: 1;
|
||||
grid-row: auto;
|
||||
}
|
||||
.plate-figure figcaption span {
|
||||
.foot-note {
|
||||
grid-column: 1;
|
||||
}
|
||||
}
|
||||
@media (max-width: 560px) {
|
||||
.head-inner {
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: var(--space-1);
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.hero-band {
|
||||
grid-template-columns: 1fr;
|
||||
padding-block: var(--space-6) var(--space-4);
|
||||
}
|
||||
.nav {
|
||||
width: 100%;
|
||||
justify-content: flex-start;
|
||||
/* 좁은 화면은 표제부가 세로로 길어 먹을 더 올린다. 리드 뒤 실측 3.98:1 → 4.5 이상으로 */
|
||||
.hero-scrim {
|
||||
background: linear-gradient(
|
||||
to top,
|
||||
rgb(var(--surface-rgb) / 1) 0%,
|
||||
rgb(var(--surface-rgb) / 0.97) 42%,
|
||||
rgb(var(--surface-rgb) / 0.65) 60%,
|
||||
rgb(var(--surface-rgb) / 0) 82%
|
||||
);
|
||||
}
|
||||
/* 390 에서 한 줄에 안 들면 어절에서 끊는다. 크기는 줄이지 않는다 */
|
||||
h1 {
|
||||
white-space: normal;
|
||||
}
|
||||
.toc a {
|
||||
grid-template-columns: 1.75rem minmax(0, auto);
|
||||
}
|
||||
.room {
|
||||
padding-block: var(--space-7);
|
||||
}
|
||||
.room-grid {
|
||||
grid-template-columns: 1fr;
|
||||
row-gap: var(--space-4);
|
||||
}
|
||||
.room-no {
|
||||
grid-template-columns: auto auto;
|
||||
justify-content: start;
|
||||
align-items: baseline;
|
||||
gap: var(--space-3);
|
||||
}
|
||||
.room-figure {
|
||||
grid-column: 1;
|
||||
}
|
||||
.wall-media {
|
||||
aspect-ratio: 4 / 3;
|
||||
}
|
||||
.foot-card dl {
|
||||
grid-template-columns: 1fr;
|
||||
gap: var(--space-4);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1920px) {
|
||||
/* 초광폭: 읽는 글은 measure 를 지키고, 접사만 벽처럼 넓어진다 */
|
||||
.room-grid {
|
||||
column-gap: var(--space-7);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,39 +1,46 @@
|
|||
/* ==========================================================================
|
||||
비색의 침묵 — 디자인 토큰
|
||||
프리셋: editorial-archival
|
||||
컨셉 한 문장: 암실의 세 개의 방 — 사진이 어두울수록 유약이 가까워진다.
|
||||
레퍼런스: 방향 앵커는 dogfood-celadon(국립중앙박물관 등 전시 계열). 그 파일의
|
||||
6축 수치는 audit-references.md 에서 날조로 판명 — 토큰은 브리프에서
|
||||
다시 정했다. 박물관 암실의 실제 조건(어두운 벽, 스포트라이트)에서 유래.
|
||||
하지 않은 것: 포스터형 그라디언트 배경, 관람객 수 지표, 전시 인트로 영상
|
||||
자리. 이유: 암실의 권위는 어둠의 면적에서 나온다.
|
||||
비색, 1,280°C — 디자인 토큰 (2026-10-06 재작업)
|
||||
컨셉: 관람객이 유약 접사를 화면 가득 보고, 전시실 두 곳의 차례를 그 자리에서
|
||||
읽은 뒤 기간·시간을 확인한다. 섹션 하나가 암실의 벽 하나다.
|
||||
배정(outputs/rework-2026-10-06/plan.md): Song Myung / Noto Sans KR ·
|
||||
청록빛 먹 #0f1a18 · 167° 청록 · radius 4px · scroll-driven · feTurbulence · 듀오톤.
|
||||
값은 여기 한 곳에만 둔다. 다른 CSS 파일은 var()만 쓴다.
|
||||
========================================================================== */
|
||||
|
||||
:root {
|
||||
/* 타입 — 최대(58px) ÷ 본문(16px) ≈ 3.6배 */
|
||||
--step--1: 0.8125rem; /* 13px */
|
||||
--step-0: 1rem; /* 16px */
|
||||
--step-1: 1.25rem; /* 20px */
|
||||
--step-2: clamp(1.375rem, 1.2rem + 0.9vw, 1.75rem); /* 28px */
|
||||
--step-3: clamp(2.125rem, 1.4rem + 3.4vw, 3.625rem);/* 58px */
|
||||
/* 타입 — 본문 16px, 표제는 한 줄 큰 낱말. 1440에서 표제 ÷ 본문 ≈ 7.5배 */
|
||||
--step--1: 0.8125rem; /* 13px — 캡션·보조. 한글 하한(typography §6-5) */
|
||||
--step-0: 1rem; /* 16px */
|
||||
--step-1: 1.1875rem; /* 19px — 리드 */
|
||||
--step-2: clamp(1.5rem, 1.2rem + 1.4vw, 2.25rem); /* 24→36px — 섹션 제목 문장 */
|
||||
--step-3: clamp(2.75rem, 1rem + 7.5vw, 7.5rem); /* 44→120px — h1 한 줄 큰 낱말 */
|
||||
--step-numeral: clamp(4rem, 2rem + 9vw, 9rem); /* 전시실 번호 */
|
||||
|
||||
--leading-tight: 1.3;
|
||||
--leading-normal: 1.85;
|
||||
--leading-tight: 1.15; /* 한 줄 표제·숫자 */
|
||||
--leading-heading: 1.3;
|
||||
--leading-body: 1.7;
|
||||
|
||||
--font-display: "MaruBuri", serif;
|
||||
--font-body: "Pretendard Variable", Pretendard, -apple-system, sans-serif;
|
||||
--font-display: "Song Myung", "Apple SD Gothic Neo", serif;
|
||||
--font-body: "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
|
||||
--weight-body: 400;
|
||||
--weight-strong: 500;
|
||||
|
||||
/* 색 — 암실. 배경은 순흑이 아니라 석재 회색(벽), 강조는 비색 그 자체. */
|
||||
--surface: #121514;
|
||||
--surface-raised: #191d1c;
|
||||
--ink: #eceae2; /* 백색이 아니라 골동지의 밝기 */
|
||||
--ink-muted: #a7a69b;
|
||||
--ink-faint: #878982;
|
||||
--line: #2b302e;
|
||||
--accent: #8fbcaa; /* 비색 — 텍스트용으로 밝힘. 배경 채움 금지 */
|
||||
--accent-dim: #80ac99;
|
||||
--ink-bright: #ffffff; /* CTA hover */
|
||||
/* 색 — 청록빛 먹. 조명 밖의 전시실 벽. 강조는 유약 색 하나(167°). */
|
||||
--surface: #0f1a18;
|
||||
--surface-raised: #15231f;
|
||||
--surface-rgb: 15 26 24;
|
||||
--ink: #e8ece9;
|
||||
--ink-muted: #aab6b0; /* #0f1a18 위 8.9:1 */
|
||||
--ink-faint: #8a9892; /* #0f1a18 위 5.6:1 — 캡션 */
|
||||
--line: #243632;
|
||||
--accent: #84c3a9; /* OKLCH 167° (similarity.mjs 기준). 차례 번호·링크 밑줄·포커스에만 */
|
||||
--accent-ink: #0b1513; /* 강조 면 위 글자 */
|
||||
|
||||
/* 듀오톤 램프 — index.html의 #duotone 필터가 같은 값을 쓴다 */
|
||||
--duo-shadow: var(--surface);
|
||||
--duo-high: #cfe3da;
|
||||
|
||||
/* 간격 — 8px 리듬 */
|
||||
--space-1: 0.25rem;
|
||||
--space-2: 0.5rem;
|
||||
--space-3: 1rem;
|
||||
|
|
@ -41,17 +48,21 @@
|
|||
--space-5: 2.5rem;
|
||||
--space-6: 4rem;
|
||||
--space-7: 6rem;
|
||||
--space-8: clamp(4.5rem, 3rem + 6vw, 9rem);
|
||||
--space-8: clamp(5rem, 3rem + 8vw, 11rem); /* 벽 사이 — 의도된 극단 */
|
||||
|
||||
--radius: 2px;
|
||||
--radius: 4px;
|
||||
|
||||
/* 읽는 폭과 유물 판은 분리한다. 2560px에서도 문장이 늘어지지 않고,
|
||||
빙렬 이미지만 전시 벽처럼 넓어진다. */
|
||||
--container: 1200px;
|
||||
--container-wide: 1600px;
|
||||
--pad-inline: clamp(1.25rem, 1rem + 2.5vw, 4.5rem);
|
||||
--measure: 34em; /* 한글 본문 34자 안팎 */
|
||||
--container: 1280px;
|
||||
--pad-inline: clamp(1.25rem, 0.5rem + 3vw, 4rem);
|
||||
|
||||
--dur-quick: 160ms;
|
||||
--dur-normal: 480ms;
|
||||
--ease-soft: cubic-bezier(0.25, 1, 0.35, 1);
|
||||
|
||||
/* 히어로 접사의 스크롤 확대·이동 끝값 */
|
||||
--hero-scale-to: 1.14;
|
||||
--hero-shift-to: -5%;
|
||||
|
||||
/* placeholder 표식 — 사용자만 아는 값(장소·문의) */
|
||||
--placeholder-line: 1px dashed var(--ink-faint);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue