No. 05

透明感のクリーンビューティー Clean Beauty

白背景・パステル・丸ゴシック・ぷっくりボタンの量産クリーンビューティー形に堕ちない、写真主役の透明感。細く硬質な幾何サンセリフと余白、締めの濃墨1色で「透明感の中の芯」を作る。スキンケアD2C・美容クリニック・ウェルネス系の定期購入モデルに。

透明感のクリーンビューティーのスクリーンショット

仕様

typographygothic-geometric
color-strategylow-saturation
densityairy
layoutsplit-screen
ornamentphoto-dominant
motionrich
moodserene / trust
industrybeauty-salon / ec-retail / clinic-medical
架空企業架空・スキンケアD2C「KOUSA SKIN(光紗スキン)」。角質ケアに特化した化粧水・美容液・クリームの3ステップ、成分と濃度の全面開示、トライアル¥1,800/定期便15%オフのCV導線。※tier-B差し戻し対応で改名(旧称「AWAI SKIN/あわいスキン」は既存見本sumi-to-yohakuの架空ブランド日本料理「あわい」と重複していたため)。ライブラリ内で他パターンとの名称重複がないことを確認済み
license商用利用可・改変可・クレジット不要

検証記録

verified_at: 2026-07-16

公式パイプライン検証(Claude Code / sonnet subagent): DESIGN.md+tokens.cssのみを別セッションに渡し、別ビジネス業種=オーガニックヘアケアD2C『room』で再生成(verification/haircare-d2c)→一発合格(MD改稿不要)。Jost×Zen Kaku Gothic Newの混植・面/線用と文字用を分けた配色トークン・写真の一律filter(saturate0.9 brightness1.02)・split-screen40/60・締めセクションの濃墨反転まで一致(tier-A 🔴0/🟡0)。写真はWikimedia CommonsのCC0のみ

DESIGN.md

DESIGN.mdtokens.css

https://3pt.co.jp/design-library/md/clean-beauty/DESIGN.md

# DESIGN.md — 透明感のクリーンビューティー / clean-beauty

> **使い方**: このファイルをプロジェクトに置き、AIに
> 「DESIGN.md に従って◯◯のサイトを作って」と指示してください。
> ライセンス: 商用利用可・改変可・クレジット不要(AIっぽくないデザイン見本帳 / サードパーティートラスト)

## 1. コンセプト

スキンケアD2Cの王道「クリーンビューティー」を、白背景・パステル・丸ゴシック・
ぷっくりボタンの量産形に堕とさずに作る。細く硬質なサンセリフの規律と、
質の高い写真、たっぷりの余白で「透明感の中に芯がある」を成立させる。
彩度は抑えるが、締める場所は黒に近い濃いインクで一段落とす。ふわっとさせない。

**キーワード**: 透明感 / 規律 / 余白 / 写真主役 / 締め
**この見た目が向く場面**: スキンケア・コスメD2C、美容クリニックのオウンドEC、
オーガニック/ウェルネス系の定期購入モデル

## 2. タイポグラフィ

- 欧文・数字: Jost / ウェイト 300〜400 / 字間 +0.08em(製品名・成分名・数値・
  英字ラベルに使う。声を張らない幾何サンセリフ。太らせて主張させない)
- 和文見出し: Zen Kaku Gothic New / ウェイト 500
- 和文本文: Zen Kaku Gothic New / ウェイト 400 / サイズ 15〜16px / 行間 1.8
- 混植ルール: `font-family: "Jost", "Zen Kaku Gothic New", sans-serif;` を
  本文に指定し、英数字は自動的に Jost、和文は Zen Kaku Gothic New に
  フォールバックさせる(個別に `<span>` で切り替える必要はない)
- 見出しスケール: h1 38px / h2 27px / h3 18px(大見出しでも38pxを超えない。
  声を張らない。強さは余白と写真の質量で出す)
- 特記: 全角約物混じりの日本語見出しに欧文の字間ルールを適用しない
  (字間+0.08emは Jost 使用箇所限定。和文見出し全体に掛けると間延びする)

## 3. カラー

無彩色に近い低彩度パレット+締めのための濃墨。マルチパステルにしない。

| 役割 | 値 | 使用比率の目安 |
|---|---|---|
| 背景(ベース) | #f7f5f2(ごく淡い温白) | 55% |
| 背景(節替え) | #f0ece5 | — |
| 背景(締めセクション) | #23201c(濃墨。ページ内1箇所のみ) | 10%程度 |
| テキスト(主・見出し) | #23201c | 25% |
| テキスト(弱) | #6b6259 | — |
| アクセント1(くすみモーヴ・面/線専用) | #b7a4a8 | 5%以下 |
| アクセント1文字用(モーヴを文字にする時だけ) | #785f64 | — |
| アクセント2(セージ・面/線専用) | #9aa89a | 5%以下 |
| アクセント2文字用(セージを文字にする時だけ) | #566655 | — |
| 罫線 | #e5e1da | — |

- 配色ルール: `--color-mauve` と `--color-sage` は**面(塗り)と細線にのみ使う**。
  文字として使う場合は必ず `-text` の濃色版を使う(実測値は§8直前を参照)。
  この2色を「地の色を薄く変えたパステル塗り」として多用しない
  (アクセント2色までの排他ルール。3色目を足さない)
- パステルの多色使い(水色・ピンク・ラベンダーの同時使用等)を禁止。
  低彩度に抑えつつも、ページ中に必ず1箇所、濃墨 #23201c の締めセクション
  (定期便・トライアルのCV導線)を置き、「軽さだけ」で終わらせない

## 4. レイアウト・余白

- コンテンツ最大幅: 1320px / 左右パディング 40px(1080px以下は28px、880px以下は22px)
- グリッドの性格: split-screen を基本とする。ヒーローは 40%(テキスト)/60%(写真)
  の非対称2カラム。成分セクションは 44%/56%。3ステップは 42%/58%
  (偶数ステップで反転し 58%/42%)
- セクション間の余白: 上下 128px 基準(モバイルは84px)。要素間は8pxの倍数
- ヒーローの構成: 中央寄せにしない。左カラムに「静かな一文の見出し+
  製品哲学2文+CTAボタン1つ」を配置し、右カラムは写真を裁ち落とし
  (画面端まで、余白なし)で敷く。ボタンを2つ並べない
- 3ステップは3カラム角丸カードにしない。**縦の流れ**で、各ステップを
  「番号+写真+説明」の横並び行(行ごとに写真の左右を反転)として積む

## 5. コンポーネントの質感

- ヘッダー・ナビゲーション: 背景は地色に近い半透明(`rgba(247,245,242,0.97)`)で
  sticky。ナビリンクは下線なし・ホバーで文字色がモーヴ文字色に変わり、
  下線が1pxで出る。本文中の通常リンクとは分けず、同じ考え方で統一する
- 角丸: 2px(ボタン・入力欄のみ、最小限)。**写真は角丸0で固定**(排他。
  写真にだけ`--radius-photo:0`を必ず使い、ボタンの`--radius`を流用しない)
- 影: 使わない(box-shadowを一切使わない。奥行きは写真そのものと余白で出す)
- ボタン: 角2px・塗り。主ボタンは濃墨地×オフホワイト文字(締めセクション上では
  オフホワイト地×濃墨文字に反転)。ホバーで背景がわずかに明転するのみ
  (0.25s)。ピル型にしない。矢印は自作インラインSVGを添える
- カード的要素: 作らない。区切りは1px罫線(#e5e1da)と余白のみ
- フォーム要素: 本DEMOでは扱わないが、使う場合は背景=地色、罫線1px、
  角丸2px、フォーカス時に罫線がセージ文字色に変わる
- 画像の扱い: 角丸なし・枠なし・影なし。`object-fit: cover`で敷き、
  全写真に共通の`filter: saturate(0.9) brightness(1.02)`を適用してトーンを統一
  (個別の写真ごとにフィルタ値を変えない)
- アクセント色の適用範囲: モーヴ=ステップ番号・ラベル文字(-text版)・
  ホバー時の文字色。セージ=section-label・成分値の数字・声のクレジット行
  (-text版)。この用法以外(ボタン背景、罫線の強調、大面積の塗り)には使わない

## 6. モーション

- 量: rich。ただし「動き=賑やかしい」にしない。役割ごとに速度と遅延を変える
  (階段ディレイ)。全要素が同じ0.6sで均一にフェードする実装を禁止
- 使う動き:
  - 主役(写真, `data-role="lead"`): scale(1.07)→1 と opacity 0→1 を
    1.4〜1.6s の `cubic-bezier(0.16,1,0.3,1)` でゆっくり
  - 見出し(`data-role="heading"`): translateY(20px)→0, 0.7s, 遅延0s
  - 本文(`data-role="body"`): translateY(12px)→0, 0.55s, 遅延0.16s
  - CTA(`data-role="cta"`): translateY(8px)→0, 0.5s, 遅延0.3s
  - ヒーローのみ控えめなパララックス(写真をscrollに応じて最大26px程度
    translateY。`will-change`を使いすぎない)
- 使わない動き: 数字のカウントアップ、自動カルーセル、マーキー、
  backdrop-filterによるグラスモーフィズム、均一0.6sフェード
- `prefers-reduced-motion: reduce` で上記アニメーションとパララックスを
  すべて無効化し、最終状態(opacity:1, transform:none)を即時表示する
- 実装上の注意: `html { scroll-behavior: smooth; }` は使わない
  (アンカー遷移のスムーススクロールと、スクロール連動のIntersectionObserver /
  rAFベースの演出が競合し、体感の重さや意図しない挙動につながるため。
  画面遷移は一瞬で、要素の出現アニメーションだけで魅せる)

## 7. 写真・イラスト・図版

- Wikimedia Commons の CC0 / Public Domain 写真のみを4〜5枚使用し、
  data URI で1ファイルに埋め込む(出典は本文に表示せず、HTMLコメントと
  meta.json の photo_sourcing に記録する)
- 被写体は「水」「肌のマクロ」「植物(逆光・光と影)」「ボトルに見立てられる
  静物(ガラスの器)」「光と影の抽象」の5系統を目安に選び、商品写真の
  代わりに質感と光で語らせる
- 写真の上に文字を重ねない。隣に置く(不透明な地の帯を挟むのは可。
  半透明スクリムや`backdrop-filter`は使わない)
- 全写真に共通の`filter: saturate(0.9) brightness(1.02)`でトーンを統一する
  (§9のコード参照)。個別に彩度や色相を変えて「作家性」を足さない

---

**色面×文字ペアの実測コントラスト(WCAG相対輝度比)— 両方向で確認済み**
```
ink        #23201c on bg        #f7f5f2  →  14.90 : 1   (本文・見出し)
text-weak  #6b6259 on bg        #f7f5f2  →   5.49 : 1   (弱文字)
ink        #23201c on bg-alt    #f0ece5  →  13.77 : 1
mauve-text #785f64 on bg        #f7f5f2  →   5.33 : 1   (モーヴを文字にする時)
sage-text  #566655 on bg        #f7f5f2  →   5.63 : 1   (セージを文字にする時)
offwhite   #f7f5f2 on bg-ink    #23201c  →  14.90 : 1   (締めセクション見出し)
weak-ink   #c9c2b8 on bg-ink    #23201c  →   9.18 : 1   (締めセクション弱文字)
mauve      #b7a4a8 on bg-ink    #23201c  →   6.87 : 1   (締めセクション上でモーヴを文字にする場合)
sage       #9aa89a on bg-ink    #23201c  →   6.52 : 1
ink        #23201c on mauve-fill #b7a4a8 →   6.87 : 1   (モーヴを面として使い、文字を乗せる場合)
ink        #23201c on sage-fill  #9aa89a →   6.52 : 1
--- 不合格につき「文字色として直接使わない」と確定した組み合わせ ---
mauve(base) #b7a4a8 on bg #f7f5f2 → 2.17 : 1   ✕ 文字には -text 版を使う
sage(base)  #9aa89a on bg #f7f5f2 → 2.29 : 1   ✕ 文字には -text 版を使う
```

## 8. 禁止事項(must not)

- Inter / Roboto / Arial / Noto Sans をデフォルトで使わない(Jost / Zen Kaku
  Gothic New で組む)
- 紫〜青の装飾グラデーションを使わない。グラデーション全般(背景・文字・
  ボタン)を使わない
- box-shadow・backdrop-filter を使わない(影で奥行きを作らない。
  半透明スクリムでグラスモーフィズムを作らない)
- 「白背景+パステル+丸ゴシック+ぷっくりボタン」の量産クリーンビューティー形を
  作らない。角丸は最小2px(ボタン・入力欄のみ)。**写真の角丸は常に0**
  (排他:写真にだけ`--radius-photo:0`を使い、他要素の`--radius`を写真に流用しない)
- アクセントのモーヴ・セージを**文字色として直接使わない**(本節直前の実測値の
  とおり、地に対して2.17:1・2.29:1でAA不合格。文字にする場合は`-text`濃色版を使う)
- パステルの多色使い(3色以上の淡い色を同一画面に併存させる)をしない。
  アクセントはモーヴ・セージの2色まで(排他リスト)
- 中央寄せの定型ヒーロー(特大見出し+サブコピー+ボタン2つ)を作らない。
  ボタンを2つ並置しない(CTAは「トライアルを試す」1本を軸に統一する)
- 3ステップ等の紹介を角丸カード×3列(アイコン+見出し+説明)にしない。
  番号+写真+説明の縦の流れで組む
- 顔写真アバター+星5評価の均質なレビュー羅列を作らない。声の長さ・
  文体・満足度にばらつきを持たせる
- 統計数字のカウントアップ・自動カルーセル・マーキー・全要素均一0.6sフェードを
  使わない(モーション演出は§6の役割別ディレイに従う)
- 絵文字をアイコンとして使わない(矢印などの記号約物は可。アイコンが必要な
  場合は線幅1.4px統一の自作インラインSVG線画のみ)

## 9. 実装ノート

```css
/* tokens.css — この変数セットをそのまま使うこと */
:root {
  --color-bg: #f7f5f2;
  --color-bg-alt: #f0ece5;
  --color-bg-ink: #23201c;

  --color-ink: #23201c;
  --color-text-weak: #6b6259;
  --color-offwhite: #f7f5f2;
  --color-weak-on-ink: #c9c2b8;

  --color-mauve: #b7a4a8;       /* 面・細線専用 */
  --color-mauve-text: #785f64;  /* 文字にする時だけ(5.33:1) */
  --color-sage: #9aa89a;        /* 面・細線専用 */
  --color-sage-text: #566655;   /* 文字にする時だけ(5.63:1) */

  --color-line: #e5e1da;

  --font-latin: "Jost";
  --font-heading: "Zen Kaku Gothic New";
  --font-body: "Zen Kaku Gothic New";

  --space-unit: 8px;
  --radius: 2px;       /* ボタン・入力欄のみ */
  --radius-photo: 0;   /* 写真は常にこれ。排他で上書きしない */
  --max-width: 1320px;

  /* 写真トーン統一:全写真に一律適用。個別に変えない */
  --photo-filter: saturate(0.9) brightness(1.02);
}

body {
  font-family: var(--font-latin), var(--font-body), sans-serif;
  /* ↑ 英数字は自動でJost、和文は自動でZen Kaku Gothic Newにフォールバックする */
}

.photo {
  width: 100%; height: 100%;
  object-fit: cover;
  border-radius: var(--radius-photo, 0); /* 常に0 */
  filter: var(--photo-filter);
}
```

```css
/* split-screen ヒーロー:中央寄せにしない。ボタン2つ並べない */
.hero {
  display: grid;
  grid-template-columns: 40% 60%;
  min-height: calc(100vh - 76px);
}
.hero-text { display: flex; flex-direction: column; justify-content: center; padding: 60px 56px 60px 40px; }
.hero-photo-frame { position: relative; overflow: hidden; }
.hero-photo-frame img { position: absolute; inset: 0; }

@media (max-width: 880px) {
  .hero { grid-template-columns: 1fr; min-height: auto; }
  .hero-photo-frame { height: 62vh; }
}
```

```css
/* モーション:役割差+階段ディレイ(均一0.6sフェード禁止) */
[data-role="lead"] {
  transform: scale(1.07); opacity: 0;
  transition: opacity 1.4s cubic-bezier(.16,1,.3,1), transform 1.6s cubic-bezier(.16,1,.3,1);
}
[data-role="lead"].is-visible { opacity: 1; transform: scale(1); }

[data-role="heading"] { transform: translateY(20px); transition: opacity .7s cubic-bezier(.22,1,.36,1), transform .7s cubic-bezier(.22,1,.36,1); }
[data-role="body"]    { transform: translateY(12px); transition: opacity .55s ease-out, transform .55s ease-out; transition-delay: .16s; }
[data-role="cta"]     { transform: translateY(8px);  transition: opacity .5s ease-out,  transform .5s ease-out;  transition-delay: .3s; }
[data-role="heading"], [data-role="body"], [data-role="cta"] { opacity: 0; }
[data-role].is-visible { opacity: 1; transform: translateY(0); }

@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-role] { opacity: 1 !important; transform: none !important; transition: none !important; }
}
```

```js
// IntersectionObserver で出現させる要素には必ず data-reveal を付ける。
// data-role="lead" の写真も data-reveal がないと永久に opacity:0 のまま
// (実装時に頻出するミス。ヒーローの写真だけは手動制御なので data-reveal 不要)
document.querySelectorAll('[data-reveal]').forEach(el => io.observe(el));
```

- フォント読み込み:
  `https://fonts.googleapis.com/css2?family=Jost:wght@300;400;500&family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap`
- 写真は Wikimedia Commons の CC0 のみを採用し、出典を HTMLコメントに列挙する
  (表示ページ上には出典テキストを出さない。§7参照)