DOCUMENT 06

デザインガイドライン

calendar_today 作成日:2026-05-13 person 作成者:清水宏美 push_pin Ver 1.0

1 デザインコンセプト

デザインキーワード 必須
デザインの方向性を表すキーワード3つとその説明

1. 信頼感
理由:健康管理・診療導線を扱うため、安心して情報入力・相談できる印象を最優先する必要がある。
表現方法:青・白を基調にした配色、十分な余白、見出し階層の明確化、実績や監修情報を上部に配置する。

2. 伴走感
理由:忙しい飼い主が「ひとりで判断しなくてよい」と感じる体験が継続利用につながるため。
表現方法:ミント系の補助色、ガイド文・次アクションの明示、ステップ表示で進行状況を可視化する。

3. 俊敏性
理由:体調不安時は素早い判断・予約が必要で、迷うUIは離脱や不安増大につながるため。
表現方法:主CTAを目立たせる、1画面1目的の構成、入力項目の最小化、検索/予約導線を固定配置する。

2 カラーパレット

カラーパレット 必須
frontend/public/assets/css/style.css の :root トークンに合わせた定義(色見本付き)
色の種類 カラーコード 色見本 使用場面
メインカラー(--brand) #FF8FB1 主要CTA、強調ラベル、ブランド訴求
メイン濃色(--brand-dark) #FF6E9A 主要CTAホバー、強調時の状態変化
サブカラー(--accent) #8C6EE6 統計値の強調、補助アクセント
アクセント(--mint) #C9F7EF 補助背景、やわらかいハイライト
アクセント(--peach) #FFE6D6 補助背景、暖色系のアクセント
背景色(--bg) #FFF9FB ページ背景、余白領域
カード背景(--card) #FFFFFF カード、フォーム背景
境界線(--line) #F2DBE7 罫線、カード境界、区切り線
テキスト色(メイン / --text) #4A2D3C 本文、重要情報
テキスト色(サブ / --muted) #7A6170 補助説明、注釈、ヒント文

選定理由(色彩心理を考慮)

・メイン(#FF8FB1)と濃色(#FF6E9A)でCTAの通常/ホバーを明確化し、行動しやすさを担保する。

・サブ(#8C6EE6)とアクセント(#C9F7EF / #FFE6D6)で、情報の区切りと柔らかい印象を両立する。

・背景(#FFF9FB)とカード(#FFFFFF)、境界線(#F2DBE7)で、可読性と立体感を安定させる。

・テキスト(#4A2D3C / #7A6170)はコントラストを維持しつつ、全体トーンを統一する。

実装では「安心感」と「行動しやすさ」を両立するため、やわらかい配色の中でCTAを明確に目立たせる設計とする。

3 タイポグラフィ

フォント設定 必須
要素 フォント名 サイズ 太さ 行間 用途
h1(大見出し) Fredoka 30px 700 1.18 ページタイトル、ヒーロー見出し
h2(中見出し) Fredoka 22px 600 約1.3 セクション見出し
h3(小見出し) Fredoka 16px 600 約1.4 カード見出し、補助見出し
本文 M PLUS Rounded 1c 16px 400 1.6 通常テキスト、説明文
キャプション M PLUS Rounded 1c 13px 600 1.5 画像説明、補助情報
ボタン M PLUS Rounded 1c 14px 700 約1.2 ボタンテキスト
ブランド名(.brand) Fredoka 16px 800 通常 ヘッダー左上のサービス名
ナビリンク(.global-nav > a) M PLUS Rounded 1c 14px 400(現在ページは700) 通常 グローバルナビゲーション

Google Fonts 運用方針(日本語対応)
見出しフォント:Fredoka(wght 500/600/700)
本文フォント:M PLUS Rounded 1c(wght 400/500/700/800)

letter-spacing 実装値
h1:0.01em / brand:0.01em / h2:指定なし(0相当) / h3:指定なし(0相当) / 本文:指定なし(0相当) / ボタン:指定なし(0相当)

見出しは親しみやすい丸みを保ち、本文は可読性を優先。行動導線に使うボタンは太字で視認性を高める。

4 UIコンポーネント

ボタン 必須
現行実装はプライマリ / セカンダリの2種類(pill型)(実物のHTMLサンプル付き)

デザイン条件
角丸:999px / 文字サイズ:14px / 太さ:700 / 主ボタン背景:#FF8FB1 / ホバー:#FF6E9A / 副ボタン背景:#FFFFFF

実装クラス
`.btn`, `.btn-primary`, `.btn-secondary`

HTML(実装準拠)

<div class="actions">
  <a class="btn btn-primary" href="https://line.me/R/ti/p/@434idigg" target="_blank" rel="noopener noreferrer">LINE お友達登録</a>
  <a class="btn btn-secondary" href="f_service.html#pricing">機能と料金を見る</a>
</div>

CSS(主要部分)

.btn {
  border-radius: 999px;
  border: 1px solid var(--line);
  padding: 11px 12px;
  font-size: 14px;
  font-weight: 700;
}
.btn-primary { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn-primary:hover { background: var(--brand-dark); border-color: var(--brand-dark); }
.btn-secondary { background: #fff; }
.btn-secondary:hover { background: #fff3f9; }

表示サンプル

フォーム要素 必須
テキスト入力・セレクト・テキストエリア・チェックボックス・ラジオボタン(実物のHTMLサンプル付き)

デザイン条件
入力高さ:40px前後 / 枠線:1px solid #F2DBE7 / 角丸:16px / フォント:14px / エラー文字:12px

実装クラス
`.field`, `.field input`, `.field textarea`, `.error`

HTML(実装準拠)

<form class="contact-form">
  <div class="field">
    <label for="name">お名前</label>
    <input id="name" type="text" placeholder="例:山田 花子">
  </div>

  <div class="field">
    <label for="category">お問い合わせ種別</label>
    <select id="category">
      <option>選択してください</option>
      <option>サービスについて</option>
      <option>料金について</option>
    </select>
  </div>

  <div class="field">
    <label for="message">内容</label>
    <textarea id="message" rows="4" placeholder="お問い合わせ内容を入力"></textarea>
  </div>

  <label><input type="checkbox"> 利用規約に同意する</label>
  <label><input type="radio" name="contactMethod"> メール連絡を希望</label>
  <label class="switch">
    <input type="checkbox" class="switch-input" checked>
    <span class="switch-slider"></span>
    通知を有効にする(トグルスイッチ)
  </label>
  <div class="field">
    <label for="email">メールアドレス(エラー表示例)</label>
    <input id="email" type="email" value="sample@" aria-invalid="true">
    <p class="error">メールアドレスの形式が正しくありません。</p>
  </div>
</form>

CSS(主要部分)

.field label { display: block; font-weight: 700; margin-bottom: 4px; }
.field input,
.field textarea {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 9px 10px;
  font: inherit;
  background: #fff;
}
.switch { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; }
.switch-input { position: absolute; opacity: 0; width: 0; height: 0; }
.switch-slider { width: 44px; height: 24px; background: #cbd5e1; border-radius: 999px; position: relative; }
.switch-slider::after { content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform .2s ease; }
.switch-input:checked + .switch-slider { background: #FF8FB1; }
.switch-input:checked + .switch-slider::after { transform: translateX(20px); }
.error { min-height: 1.1em; margin: 4px 0 0; color: #b91c1c; font-size: 12px; }

表示サンプル

ナビゲーション 必須
モバイルはハンバーガー、PCは横並びナビに切替(実物のHTMLサンプル付き)

デザイン条件
ヘッダー:sticky固定 / 最小高さ:56px / 境界線:1px solid #F2DBE7 / モバイルはメニュー展開式 / 768px以上で横並び常時表示

実装クラス
`.site-header`, `.nav-wrap`, `.menu-toggle`, `.global-nav`, `.global-nav.open`, `.skip-link`

・`site-header` は sticky(上部固定)
・`global-nav` はモバイル初期非表示、`.open` 付与で展開
・`@media (min-width: 768px)` で常時表示の横並びへ切替

表示サンプル

ペットライフプラス
トップ総合案内導入事例と実績
カード・テーブル・その他 必須
カードコンポーネント・テーブルスタイル・アラート等(実物のHTMLサンプル付き)

デザイン条件
カード角丸:26px / 枠線:1px solid #F2DBE7 / 影:0 10px 20px rgba(221,136,170,0.12) / テーブル見出し背景:#EEF7FB / アラート角丸:10px

HTML(実装準拠)

<!-- カード -->
<article class="card">
  <h3>サービス紹介カード</h3>
  <p>健康記録・AI症状チェック・オンライン診療を一体化した導線を提供します。</p>
</article>

<!-- テーブル -->
<table class="price-table">
  <thead>
    <tr><th>プラン</th><th>月額</th><th>主な機能</th></tr>
  </thead>
  <tbody>
    <tr><td>ベーシック</td><td>¥980</td><td>健康記録・基本通知</td></tr>
    <tr><td>プレミアム</td><td>¥2,980</td><td>AI症状チェック・オンライン相談</td></tr>
  </tbody>
</table>

<!-- アラート -->
<div class="ui-alert info">情報:プロフィールが更新されました。</div>
<div class="ui-alert success">成功:登録処理が完了しました。</div>
<div class="ui-alert warning">警告:未入力項目があります。</div>
<div class="ui-alert error">エラー:通信に失敗しました。</div>

CSS(主要部分)

.card {
  border: 1px solid var(--line);
  border-radius: 26px;
  padding: 18px;
  box-shadow: 0 10px 20px rgba(221, 136, 170, 0.12);
}
.price-table thead th { background: #eef7fb; font-weight: 700; }
.ui-alert { border-radius: 10px; padding: 10px 12px; font-size: 14px; }
.ui-alert.info { background: #eff6ff; border: 1px solid #bfdbfe; color: #1e40af; }
.ui-alert.success { background: #ecfdf3; border: 1px solid #86efac; color: #166534; }
.ui-alert.warning { background: #fffbeb; border: 1px solid #fcd34d; color: #92400e; }
.ui-alert.error { background: #fef2f2; border: 1px solid #fca5a5; color: #b91c1c; }

表示サンプル

サービス紹介カード

健康記録・AI症状チェック・オンライン診療を一体化した導線を提供します。

プラン月額主な機能
ベーシック¥980健康記録・基本通知
プレミアム¥2,980AI症状チェック・オンライン相談
情報:プロフィールが更新されました。
成功:登録処理が完了しました。
警告:未入力項目があります。
エラー:通信に失敗しました。
カード・バナー・統計 必須
トップ画面の主構成要素を標準コンポーネント化(実物のHTMLサンプル付き)

デザイン条件
カード角丸:26px / カード余白:18px / 枠線:1px solid #F2DBE7 / 影:0 10px 20px rgba(221,136,170,0.12) / バナー角丸:16px

実装クラス
カード系:`.hero-card`, `.card`, `.image-card`, `.stat`
バナー系:`.value-banner`, `.value-track`, `.value-pill`

HTML(実装準拠)

<div class="card-grid">
  <article class="card">
    <h3>健康記録</h3>
    <p>体重・食事・運動・ワクチン情報をまとめて管理します。</p>
  </article>
  <article class="card">
    <h3>AI症状チェック</h3>
    <p>受診目安を可視化し、判断時の不安を軽減します。</p>
  </article>
</div>

<div class="value-banner">
  <div class="value-track">
    <div class="value-group">
      <span><strong class="value-pill">提供価値</strong> 日常記録・症状チェック・オンライン相談をひとつにつなぐ。</span>
    </div>
  </div>
</div>

CSS(主要部分)

.hero-card, .card, .stat, .image-card {
  border: 1px solid var(--line);
  border-radius: 26px;
  padding: 18px;
  box-shadow: 0 10px 20px rgba(221, 136, 170, 0.12);
}
.value-banner {
  overflow: hidden;
  border: 1px dashed var(--line);
  border-radius: 16px;
}
.value-track { animation: value-scroll 22s linear infinite; }

表示サンプル

健康記録

体重・食事・運動をまとめて管理。

AI症状チェック

受診目安を可視化して不安を軽減。

提供価値日常記録・症状チェック・オンライン相談をひとつにつなぐ。

5 レイアウトルール

レイアウト基本ルール 必須
グリッド・余白・角丸・シャドウ等の数値ルール

デザインコンセプト:信頼感 / 伴走感 / 俊敏性

項目 提案値 意図
コンテンツ最大幅 min(960px, 82vw) 視認性と可読性を維持しつつ、カードUIの密度を安定させる。
グリッドシステム 基本1カラム。PC(768px以上)で hero: 1.2fr / 0.8fr、card/stats: 3列 同一コンポーネントを保ったまま、画面幅で情報量のみを調整する。
セクション間の余白 36px(`.section`) 縦スクロール時のテンポを保ち、連続閲覧時の疲労を抑える。
要素間の余白 space-token基準:14px / 22px(tight / block) カードUIの視線移動を短くし、必要情報にすぐ到達できるようにする。
角丸 カード系:26px / 画像:18〜20px / ボタン:999px 親しみやすさを出しつつ、情報ブロック境界を明確にする。
シャドウ(box-shadow) カード:0 10px 20px rgba(221, 136, 170, 0.12) 背景からカードを浮かせ、タップ可能領域を直感的に示す。
ブレークポイント 単一主要BP:768px(未満=モバイル / 以上=PC) 実装複雑度を抑えつつ、ナビ・カード列・CTA配置を明確に切替する。

実装補足(CSS変数例)

:root {
  --space-section: 36px;
  --space-block: 22px;
  --space-tight: 14px;
}
.container { width: 82vw; max-width: 960px; }
.card { border-radius: 26px; box-shadow: 0 10px 20px rgba(221, 136, 170, 0.12); }
@media (min-width: 768px) {
  .hero-grid { grid-template-columns: 1.2fr .8fr; gap: 24px; }
  .card-grid, .stats-grid { grid-template-columns: repeat(3, 1fr); }
}