# DESIGN.md — JAL（日本航空）

> JAL（https://www.jal.co.jp/）のデザイン仕様書。
> 日本を代表する航空会社。国内線・国際線の予約をはじめ、マイレージ、旅行商品を提供する総合エアラインサイト。
> 実サイトの computed style 実測（2026-05-21 取得）に基づく。

---

## 1. Visual Theme & Atmosphere

- **デザイン方針**: 黒ヘッダーに **JALレッド `#cc0000`** のピル CTA を配した、航空ブランドらしい信頼感と格調。ページ背景はライトグレー `#f4f5f6` で情報密度の高い予約UIを整理する
- **密度**: 予約フォーム・プロモカード・お知らせが並ぶ情報密度の高い構成。line-height 1.5 で読みやすさを確保しつつ、コンパクトに詰める
- **キーワード**: JALレッド、ブラックヘッダー、ピル CTA、航空ブランドの信頼感、Noto Sans JP 統一
- **特徴**:
  - ヘッダーは **全面ブラック `#000000`** で、白文字＋レッドの CTA ボタンが際立つ
  - ブランドカラーは **`#cc0000`（JALレッド）**。CTA "空席照会"・"ログイン" のピルボタン背景に使用
  - ページ背景は `#f4f5f6`（クールグレー）で、白い `#ffffff` のカード・フォームとの階層を作る
  - 本文テキストは `#333333` を一貫して使用。純黒 `#000000` は見出し系のみ
  - `font-feature-settings: normal` — palt は使わず、ベタ組みで統一
  - letter-spacing は `0.336px`（≈ 0.02em）がグローバルに適用
  - ダークモード非対応（実測時点）

---

## 2. Color Palette & Roles

> 実サイトの computed style 実測値。すべて hex 表記。

### Brand

- **JAL Red** (`#cc0000`): メインのブランドカラー。ヘッダー CTA "空席照会"・"ログイン" のピルボタン背景。プロモバナーのアクセント
- **JAL Red (Alert Surface)** (`#fcf1f1`): 薄いレッド面。重要なお知らせ・アラート領域の背景

### CTA / Buttons

- **Primary CTA**: 背景 `#cc0000` / 文字 `#ffffff` / radius `50px`（pill）/ padding `13px 40px` / 16px / weight 700
- **Primary CTA (Small)**: 背景 `#cc0000` / 文字 `#ffffff` / radius `50px`（pill）/ padding `8px 16px` / 12px / weight 700 / border `1px solid #cc0000`
- **Secondary (Tab)**: 背景 `transparent` / 文字 `#333333` / radius `6px` / padding `12px 2px 2px` / weight 700
- **Text Link**: 文字 `#cccccc`（ヘッダー内）/ `#333333`（本文内）/ weight 700

### Neutral

| Token | hex | RGB | 役割 |
|-------|-----|-----|------|
| Black | `#000000` | (0, 0, 0) | ヘッダー背景・h1 見出し |
| Text Primary | `#333333` | (51, 51, 51) | 本文テキスト・見出し |
| Gray | `#666666` | (102, 102, 102) | フッター・補助テキスト |
| Light Gray Nav | `#cccccc` | (204, 204, 204) | ヘッダー内リンク色 |
| Border / Disabled | `#bfbfbf` | (191, 191, 191) | ボーダー・無効状態 |
| Surface Warm | `#f2f1ef` | (242, 241, 239) | ウォーム面背景 |
| Surface Cool | `#f1f1f1` | (241, 241, 241) | クール面背景 |
| Background | `#f4f5f6` | (244, 245, 246) | ページ全体の背景色 |
| Surface Alert | `#fcf1f1` | (252, 241, 241) | アラート・お知らせ面 |
| White | `#ffffff` | (255, 255, 255) | カード・フォーム・メインビュー面 |

### Semantic

- **Danger / Alert**: `#cc0000`（ブランドレッドと兼用）
- **Info Surface**: `#f2f1ef`（ウォームサーフェス）

### Header / Footer

- **Header BG**: `#000000`（ブラック）
- **Footer BG**: `#666666`（グレー）
- **Overlay**: `rgba(0, 0, 0, 0.7)`（モーダル背景）

---

## 3. Typography Rules

### 3.1 和文フォント

- **ゴシック体**: **Noto Sans JP** を最優先。Google Fonts のオープンソースフォント
- **フォールバック**: メイリオ → sans-serif
- **明朝体**: 使用しない（サイト全体ゴシック統一）

### 3.2 欧文フォント

- 専用の欧文書体は持たず、**Noto Sans JP の欧文グリフ**を優先
- フォールバックに各 OS のシステムフォント

### 3.3 font-family 指定

```css
/* 全要素共通（body, h1〜h3, p, a, span, button, nav, header, footer） */
font-family: "Noto Sans JP", メイリオ, sans-serif;
```

**フォールバックの考え方**:
- Noto Sans JP を最優先し、和文・欧文ともに統一
- メイリオは Windows 環境でのフォールバック
- フォールバックチェーンが短くシンプルなのが特徴

### 3.4 文字サイズ・ウェイト階層

> 実測値（トップページ、2026-05-21 取得）

| Role | Font | Size | Weight | Line Height | Letter Spacing | Color | 備考 |
|------|------|------|--------|-------------|----------------|-------|------|
| Hero H2 | Noto Sans JP | 30px | 700 | 45px (×1.5) | 0.336px (0.02em) | `#ffffff` | "最高のサービスのために" |
| Section H2 | Noto Sans JP | 24px | 700 | 36px (×1.5) | 0.336px (0.02em) | `#333333` / `#ffffff` | "あなたへのおすすめ情報"・"関連サービス" |
| Feature H2 | Noto Sans JP | 20px | 700 | 24px (×1.2) | 0.336px (0.02em) | `#333333` | "予約管理" |
| H3 Title | Noto Sans JP | 19.9px | 700 | 29.85px (×1.5) | 0.336px (0.02em) | `#333333` | "カテゴリから探す" |
| H3 Card | Noto Sans JP | 18px | 700 | 27px (×1.5) | 0.336px (0.02em) | `#333333` | "JALオンライン" |
| H3 Small | Noto Sans JP | 14px | 700 | 21px (×1.5) | 0.336px (0.02em) | `#333333` | カード内見出し |
| H3 Caption | Noto Sans JP | 12px | 400 | 18px (×1.5) | 0.336px (0.02em) | `#333333` | "共通" タブラベル |
| Body | Noto Sans JP | 16.8px | 400 | 25.2px (×1.5) | 0.336px (0.02em) | `#333333` | 本文（body デフォルト） |
| Body (Form) | Noto Sans JP | 15px | 400 | 19.5px (×1.3) | 0.336px (0.02em) | `#333333` | フォーム内注釈 |
| Caption | Noto Sans JP | 14px | 400 | 21px (×1.5) | 0.336px (0.02em) | `#333333` | 補足テキスト |
| Small | Noto Sans JP | 12px | 400 | 18px (×1.5) | 0.336px (0.02em) | `#333333` | 注釈・フッター |
| Nav Link (Header) | Noto Sans JP | 12px | 700 | 12px (×1.0) | 0.336px (0.02em) | `#cccccc` | ヘッダーナビ |
| CTA Label | Noto Sans JP | 16px | 700 | 16px (×1.0) | 0.336px (0.02em) | `#cccccc` / `#ffffff` | ピル CTA 文字 |
| Tab Label | Noto Sans JP | 16px | 700 | 25.6px (×1.6) | 0.336px (0.02em) | `#333333` | "国内線" タブ |

### 3.5 行間・字間

- **本文の行間 (line-height)**: 1.5（16.8px → 25.2px）
- **見出しの行間**: 1.2〜1.5
- **ナビ・ボタンの行間**: 1.0（タイトに詰める）
- **本文の字間 (letter-spacing)**: 0.336px（≈ 0.02em）— 全要素にグローバル適用
- **見出しの字間**: 同じく 0.02em

**ガイドライン**:
- letter-spacing がグローバルに 0.02em で統一されているのが特徴
- 見出しもトラッキングを詰めず、本文と同じ字間で揃える
- ナビやボタンは line-height: 1.0 でタイトに詰める

### 3.6 禁則処理・改行ルール

```css
word-break: break-all;
overflow-wrap: break-word;
line-break: strict;
```

### 3.7 OpenType 機能

```css
font-feature-settings: normal;
```

- **palt は使用しない**。全要素で `normal`（ベタ組み）
- letter-spacing: 0.02em のグローバル設定で字間を調整している

### 3.8 縦書き

該当なし

---

## 4. Component Stylings

### Buttons

**Primary (Pill)**
- Background: `#cc0000`
- Text: `#ffffff`
- Padding: 13px 40px
- Border Radius: 50px（pill）
- Font Size: 16px
- Font Weight: 700

**Primary Small (Pill)**
- Background: `#cc0000`
- Text: `#ffffff`
- Border: 1px solid `#cc0000`
- Padding: 8px 16px
- Border Radius: 50px（pill）
- Font Size: 12px
- Font Weight: 700

**Secondary (Tab)**
- Background: `transparent`
- Text: `#333333`
- Padding: 15px
- Border Radius: 0px
- Font Size: 16px
- Font Weight: 700

### Inputs

- Background: `#ffffff`
- Border: 1px solid `#bfbfbf`
- Border Radius: 6px
- Padding: 12px
- Font Size: 16.8px

### Cards

- Background: `#ffffff`
- Border: none
- Border Radius: 0px
- Padding: 15px
- Shadow: none（フラットなカードスタイル）

---

## 5. Layout Principles

### Spacing Scale

| Token | Value |
|-------|-------|
| XS | 4px |
| S | 8px |
| M | 16px |
| L | 24px |
| XL | 40px |
| XXL | 64px |

### Container

- Max Width: 1200px
- Padding (horizontal): 16px

### Grid

- Columns: 12
- Gutter: 16px

---

## 6. Depth & Elevation

| Level | Shadow | 用途 |
|-------|--------|------|
| 0 | none | カード、ボタン（フラット基調） |
| 1 | `0 2px 4px rgba(0,0,0,0.1)` | ドロップダウン |
| 2 | `0 4px 8px rgba(0,0,0,0.15)` | モーダル |

JAL のサイトはフラット基調で、shadow の使用は最小限。

---

## 7. Do's and Don'ts

### Do（推奨）

- ヘッダーは全面ブラック `#000000` にし、JALレッド `#cc0000` のピル CTA を配置する
- 本文テキストは `#333333`、背景は `#f4f5f6` で統一する
- letter-spacing は 0.02em をグローバルに適用する
- CTA ボタンは radius 50px のピル形状にする
- ナビゲーションリンクは weight 700 で統一する

### Don't（禁止）

- JALレッド `#cc0000` を本文テキスト色に使わない（CTA とアラート専用）
- ヘッダー以外の場所で `#000000` 背景を多用しない（ヘッダーの格調が薄れる）
- 本文の letter-spacing を 0.02em 以外に変更しない（全体の統一感が崩れる）
- font-feature-settings: palt を追加しない（ベタ組みで統一されている）
- 角丸 CTA（8px 等）を使わない（ピル形状で統一）

---

## 8. Responsive Behavior

### Breakpoints

| Name | Width | 説明 |
|------|-------|------|
| Mobile | ≤ 767px | モバイルレイアウト |
| Tablet | ≤ 1024px | タブレットレイアウト |
| Desktop | > 1024px | デスクトップレイアウト |

### タッチターゲット

- 最小サイズ: 44px × 44px（WCAG基準）

### フォントサイズの調整

- モバイルでは本文 14–16px、見出しはデスクトップの 70–80% 程度に縮小

---

## 9. Agent Prompt Guide

### クイックリファレンス

```
Brand Color: #cc0000
Text Color: #333333
Background: #f4f5f6
Surface: #ffffff
Header BG: #000000
Font: "Noto Sans JP", メイリオ, sans-serif
Body Size: 16.8px
Line Height: 1.5
Letter Spacing: 0.02em
CTA Radius: 50px (pill)
```

### プロンプト例

```
JAL のデザインシステムに従って、フライト検索結果カードを作成してください。
- ブランドカラー: #cc0000（CTAボタンのみ）
- フォント: "Noto Sans JP", メイリオ, sans-serif
- 行間: 本文は line-height: 1.5、letter-spacing: 0.02em
- カード背景: #ffffff、ページ背景: #f4f5f6
- ボタン: #cc0000 背景、白文字、border-radius: 50px のピル形状
- テキスト色: #333333
```
