「自分だけがうまくできていないのか」と思ったことはないか。ウェビナー・交流会・noteで、現場の生の声を集め、一緒に前に進む場をつくっています。
STYLE GUIDE β
Style Guide β
DiSAのページは、この設計書に基づいて実装されています。カラートークン・コンポーネント・グリッド・アニメーションを1ファイルで一元管理することで、ブランドの統一感と実装の再現性を保証します。
Token First
色・サイズ・余白はすべて CSS 変数で定義。デザイン変更は1箇所の編集で全ページに反映されます。
Component Based
15 のコンポーネントパターンで構成。同じクラス名・同じ構造で、どのページも一貫した見た目を保証します。
Mobile Ready
全グリッドは 960px 以下で自動的に 1カラムへ折り返し。追加実装なしにモバイル対応を実現します。
DESIGN TOKENS
1. デザイントークン
カラー — アクセント
カラー — ベース & ニュートラル
タイポグラフィスケール
| 変数 | 値 (clamp) | 用途 |
|---|---|---|
| --fs-1 | 38px〜64px | 超大見出し (.h2-accent) |
| --fs-2 | 22px〜34px | セクション見出し (h2) |
| --fs-3 | 17px〜20px | カード見出し (h3) |
| --fs-4 | 14px〜17px | 本文 |
| --fs-5 | 12px〜14px | 補足テキスト・ラベル |
行間 (Line Height) ポリシー
| 行間タイプ | 値 (line-height) | 用途・特徴 |
|---|---|---|
| 本文・リスト | 1.8 | 日本語文章に最も適した、読み疲れしないゆったりとした余白感(.content-stackなど) |
| カード・解説文 | 1.7 | グリッド内などの限られたスペースで可読性を保ちつつコンパクトに収める行間 |
| 大見出し (h2) | 1.25 | 見出しテキストの一体感と力強さを引き出すための狭い行間 |
| 超大見出し (h2-accent) | 1.2 | フォントサイズが極大のタイトル用として、最も引き締まった行間 |
シャドウ
ボーダーラジウス
8px
12px
14px
999px
レイアウト・ブレイクポイント
| 定義・変数 | 値 | 用途 |
|---|---|---|
| --site-max | 1140px | コンテンツ全体の最大表示幅 |
| --gutter | 15px | 画面左右のセーフティ余白 |
| グリッド崩し (SP崩し) | 960px以下 | これ以下で全グリッドが自動的に1カラムに折り返します(@media) |
| モバイル表示切替 (SP) | 768px以下 | これ以下で一部のカード群が横スワイプカルーセル化、フォントサイズ調整、改行無効化などが発生します(@media) |
BUTTONS
2. ボタン
サービスカード内 CTA — .service-banner-btn
<a class="service-banner-btn" href="/inquiry/">詳細はこちら →</a>
TYPOGRAPHY
3. タイポグラフィ
フォントファミリー
Inter
"Inter" — 欧文・数字・UI要素
Noto Sans JP
"Noto Sans JP" — 日本語テキスト
font-family: "Inter", "Noto Sans JP", sans-serif;
フォントウェイト
ページ最大見出し — h1.page-title
<h1 class="page-title">ページタイトル</h1>
セクションラベル + 見出し — .eyebrow + h2
■ トップページ(.page-top)での表示例 — 中央揃え
SECTION LABEL
セクション見出し
■ 下層ページ(.page-main)での表示例 — 左揃え
SECTION LABEL
セクション見出し
<p class="eyebrow">SECTION LABEL</p> <h2>セクション見出し</h2>
補足見出し — .sub
■ トップページ(.page-top)での表示例 — 中央揃え
サブ見出し・補足テキスト
■ 下層ページ(.page-main)での表示例 — 左揃え
サブ見出し・補足テキスト
<p class="sub">サブ見出し・補足テキスト</p>
本文テキストコンテナ — .content-stack
本文テキスト。複数段落はこの中に並べます。
2段落目。リスト要素も使えます。
- リスト項目 1
- リスト項目 2
<div class="content-stack"> <p>本文テキスト。</p> <p>2段落目。</p> </div>
LAYOUT
4. パネル & レイアウト
標準パネル — .panel
背景: --panel (#dfdfdf), padding: clamp(20px, 3vw, 40px), border-radius: 14px
<section class="panel" data-aos="fade-up" data-aos-duration="700"> <p class="eyebrow">LABEL</p> <h2>見出し</h2> <!-- コンテンツ --> </section>
イントロパネル — .panel.about-intro-dark
<section class="panel about-intro-dark" data-aos="fade-up" data-aos-duration="700">
<h1 class="page-title">ページタイトル</h1>
<div class="content-stack">
<p>概要文。</p>
</div>
</section>
インナーパネル — .inner-panel
パネル内のサブエリア。背景色は --bg (#ededed) と同じ。パネル (#dfdfdf) の中で明るく浮き上がる。
<div class="inner-panel"> <!-- ネストしたコンテンツ --> </div>
CARDS
5. カード
カード内タイポグラフィ原則 (Card Typography Policy)
カード型コンポーネント(.card, .member-card, .support-card, .flow-item等)のテキスト配置には、全ページ共通で以下の統一ルールが適用されます:
- 太字(Bold)テキストは中央揃え(text-align: center;):見出し(h3等)、肩書き(.role)、ラベル(.en-label)など、太字の構成要素はすべて中央揃えで配置します。
- 細字(Regular/Thin)テキストは左寄せ(text-align: left;):複数行にわたる説明文、プロフィール文、本文等、細字の通常テキストは可読性向上のためすべて左寄せで配置します。
- リスト・フロー項目(.flow-item):バッジ付フロー内であっても原則通り、太字の見出しは中央揃え、細字の説明テキストは左寄せを維持し、明快な構造を作ります。
5-1. 汎用カード — .cards > .card(3カラム) ※太字中央・細字左寄せ
現場で積み上げてきた経験やノウハウを整理し、次の世代に渡せる形にする。それがナレッジ化の目的です。
困ったときに頼れる専門家が、すぐそこにいる環境をつくります。
<div class="cards">
<article class="card" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="0" data-aos-easing="ease" data-aos-once="true">
<div class="card-banner">
<img src="/assets/wp/photo.webp" alt="説明" loading="lazy">
<h3>見出し</h3>
<h4>サブ見出し</h4>
<a class="card-banner-btn" href="/...">詳細はこちら →</a>
</div>
<div class="card-body"><p>本文。</p></div>
</article>
</div>
5-2. サポートカード(3カラム) — .support-grid--3 > .support-card ※太字中央・細字左寄せ
※ モバイル(≤768px)では3個以上の子要素を持つ場合、自動でスワイプ可能なスライダーに変換されます(2個以下の場合は静的グリッドレイアウトを維持)
▼ 画像あり(アバター写真)
ディレクター
説明文テキスト。
デザイナー
説明文テキスト。
エンジニア
説明文テキスト。
<div class="support-grid support-grid--3">
<div class="support-card" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="0" data-aos-easing="ease" data-aos-once="true">
<div class="support-icon">
<img src="/assets/wp/support-faces/director.webp" alt="ディレクター" loading="lazy">
</div>
<span class="en-label">DIRECTOR</span>
<h3>ディレクター</h3>
<p>説明文。</p>
</div>
</div>
▼ 絵文字アイコン
ミッション
説明文テキスト。
ビジョン
説明文テキスト。
バリュー
説明文テキスト。
<div class="support-grid support-grid--3">
<article class="support-card">
<div class="support-icon">🏔️</div>
<span class="en-label">MISSION</span>
<h3>ミッション</h3>
<p>説明文。</p>
</article>
</div>
▼ 画像なし(.detail-card 修飾子)
得られるもの
・沈黙を恐れず、落ち着いて言葉を待てる精神的なゆとり
・聴衆一人ひとりと目が合う、深いコンタクトスキル
実施概要
・120分 × 3回:300,000円
・参加人数:6名まで
実施方法・時間
・第1回:依頼企業様のオフィスで実施
・1セッション120分 / 平日10:00〜17:00対応
<div class="support-grid support-grid--3">
<article class="support-card cm-card detail-card">
<h3>見出し</h3>
<p>説明文。</p>
</article>
</div>
5-3. サポートカード(4カラム / 丸アバタ写真) — .support-grid > .support-card ※太字中央・細字左寄せ
※ モバイル(≤768px)では3個以上の子要素を持つ場合、自動でスワイプ可能なスライダーに変換されます
▼ 画像あり(アバター写真)
ディレクター
説明文テキスト。
デザイナー
説明文テキスト。
エンジニア
説明文テキスト。
マーケター
説明文テキスト。
<div class="support-grid">
<div class="support-card" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="0" data-aos-easing="ease" data-aos-once="true">
<div class="support-icon">
<img src="/assets/wp/support-faces/director.webp" alt="ディレクター" loading="lazy">
</div>
<span class="en-label">DIRECTOR</span>
<h3>ディレクター</h3>
<p>説明文。</p>
</div>
</div>
▼ 絵文字アイコン
企画
説明文テキスト。
設計
説明文テキスト。
開発
説明文テキスト。
リリース
説明文テキスト。
<div class="support-grid">
<article class="support-card">
<div class="support-icon">🎯</div>
<span class="en-label">PLAN</span>
<h3>企画</h3>
<p>説明文。</p>
</article>
</div>
5-4. サービスカード — .service-grid > .service-card(3カラム) ※太字中央・細字左寄せ
LINE-CRM導入支援サービス。
<div class="service-grid">
<article class="service-card" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="0" data-aos-easing="ease" data-aos-once="true">
<div class="service-banner">
<img class="service-banner-avatar" src="/assets/wp/photo.webp" alt="担当者名">
<p class="service-banner-title">サービス名</p>
<a class="service-banner-btn" href="/partner/">詳細はこちら →</a>
</div>
<div class="service-body"><p>説明文。</p></div>
</article>
</div>
5-5. 制作実績カード — .tile-grid > .works-tile(3カラム) ※太字中央・細字左寄せ
実績の概要文。DX、業務改善PJのPMO、イベントレポートなど実績の詳細を記載します。
<div class="tile-grid">
<article class="works-tile" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="0" data-aos-easing="ease" data-aos-once="true">
<div class="works-tile-banner">
<img src="/assets/wp/toma.webp" alt="TOMAP" loading="lazy">
<h3>DXプロジェクト支援</h3>
<a class="works-tile-btn" href="https://tomap.co/" target="_blank"
rel="noopener noreferrer">サイトを見る →</a>
</div>
<div class="works-tile-body">
<p>実績の概要文。</p>
</div>
</article>
</div>
5-6. メンバーカード — .member-cards > .member-card(3カラム) ※太字中央・細字左寄せ
助田 正樹(すけだ)
代表理事
プロフィール文が入ります。
<div class="member-cards">
<article class="member-card" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="0" data-aos-easing="ease" data-aos-once="true">
<img src="/assets/wp/photo.webp" alt="氏名" loading="lazy">
<h3>氏名(ニックネーム)</h3>
<p class="role">役職</p>
<p>プロフィール文。</p>
<div class="member-links">
<a href="/member/...">↗詳細プロフィール</a>
<a class="x-icon-link" href="https://x.com/handle" target="_blank"
rel="noopener noreferrer">𝕏</a>
</div>
</article>
</div>
5-7. FAQカード — .faq-grid > .faq-card(2カラム)
- Q:どんな人が対象ですか?
- A:Webディレクター、デザイナー、エンジニアなど制作に関わる方が対象です。
- Q:費用はかかりますか?
- A:活動によって異なります。詳しくはお問い合わせください。
<div class="faq-grid">
<dl class="faq-card" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="0" data-aos-easing="ease" data-aos-once="true">
<dt>Q:質問文</dt>
<dd>A:回答文。</dd>
</dl>
</div>
5-8. スポットCTAカード — .spot-cta-card.cm-card
INQUIRY
メールはASAPで返信します
お問い合わせはこちら →<article class="spot-cta-card cm-card"> <p class="spot-cta-label">INQUIRY</p> <p class="spot-cta-copy">メールはASAPで返信します</p> <a class="service-banner-btn cm-btn" href="/inquiry/">お問い合わせはこちら →</a> </article>
5-9. Slackカード — .slack-cards > .slack-card.cm-card(ai-bu専用)
🛠️ 自作デモ
英語学習アプリ作りました!日常で出会ったフレーズをGemini APIでアーカイブできます。
DB管理どうしてる?うちスプレッドシートでなんとかしてるんだけど…w
<div class="slack-cards">
<div class="slack-card cm-card" data-aos="fade-up" data-aos-duration="500"
data-aos-delay="0" data-aos-once="true">
<p class="slack-card-label">🛠️ ラベル</p>
<div class="slack-msgs">
<div class="slack-msg">
<span class="slack-avatar">M</span>
<div class="slack-body">
<span class="slack-name">ユーザー名</span>
<p>メッセージ。</p>
</div>
</div>
<div class="slack-reactions">
<span class="slack-reaction">👍 3</span>
</div>
</div>
</div>
</div>
FLOW
6. フロー
.flow-list > .flow-item(縦並び)
ステップ 1
最初のステップの説明文が入ります。
ステップ 2
次のステップの説明文が入ります。
ステップ 3
最後のステップの説明文が入ります。
<div class="flow-list">
<div class="flow-item">
<div class="flow-num">1</div>
<div class="flow-content">
<h3>ステップ見出し</h3>
<p>説明文。</p>
</div>
</div>
</div>
TABLE
7. 法人概要テーブル
.law-grid > .law-table
| 法人名 | 一般社団法人ディレクションサポート協会 |
|---|---|
| 代表理事 | 助田 正樹 |
| 設立 | 2022年 |
<table class="law-table">
<tr>
<th>法人名</th>
<td>一般社団法人ディレクションサポート協会</td>
</tr>
</table>
GRID SYSTEM
8. グリッドシステム
グリッドクラス一覧
| クラス | カラム数 | 使用コンポーネント |
|---|---|---|
| .cards | 3 | 汎用 .card |
| .member-cards | 3 | .member-card |
| .service-grid | 3 | .service-card |
| .support-grid--3 | 3 | .support-card(3列) |
| .support-grid--2 | 2 | .support-card(2列) |
| .support-grid | 4 | .support-card |
| .faq-grid | 2 | .faq-card |
| .law-grid | 2 | .law-table + 地図 |
※ すべてのグリッドは 960px 以下で 1カラムに折り返します。
ANIMATION
9. AOS アニメーション
使用パターン
| 要素 | 属性 |
|---|---|
| .panel(セクション) | data-aos="fade-up" data-aos-duration="700" |
| カード 1枚目 | data-aos="flip-left" data-aos-duration="400" data-aos-delay="0" data-aos-easing="ease" data-aos-once="true" |
| カード 2枚目 | data-aos-delay="100" |
| カード 3枚目 | data-aos-delay="200" |
| カード 4枚目 | data-aos-delay="300" |
<!-- data-aos-once="true" は必須 -->
<div class="support-card" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="0" data-aos-easing="ease" data-aos-once="true">
<div class="support-card" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="100" data-aos-easing="ease" data-aos-once="true">
<div class="support-card" data-aos="flip-left" data-aos-duration="400"
data-aos-delay="200" data-aos-easing="ease" data-aos-once="true">
UI / UX QUALITY
10. UI/UX 品質基準
ユーザビリティチェックリストを基に定めた全ページ共通のルール。styles.css Section 12 および main.js に実装済み。
10-1. スキップリンク(キーボードナビゲーション)
Tab キーを押したときのみ左上に表示されるリンク。main.js が全ページに自動挿入します。
/* main.js — 全ページ自動挿入 */
const skip = document.createElement('a');
skip.href = '#main-content';
skip.className = 'skip-link';
skip.textContent = 'メインコンテンツへスキップ';
10-2. フォーカスリング(:focus-visible)
/* マウス操作では非表示、Tab/キーボード操作時のみ表示 */
a:focus-visible,
button:focus-visible {
outline: 3px solid var(--blue);
outline-offset: 2px;
border-radius: 4px;
}
10-3. 必須フィールドマーク(自動付与)
required 属性を持つ input/textarea の label には CSS :has() で自動的に * を付与。HTML 変更不要。
/* HTML — required を付けるだけで * が自動表示される */
<label for="name">お名前</label>
<input type="text" id="name" required aria-required="true" autocomplete="name">
/* CSS */
.form-field:has(input[required]) label::after,
.form-field:has(textarea[required]) label::after {
content: " *";
color: #c0392b;
font-weight: 900;
}
10-4. フォームエラー状態(:user-invalid)
/* ユーザーが操作した後 invalid になった場合のみ赤枠 */
.form-field input:user-invalid,
.form-field textarea:user-invalid {
border-color: #c0392b;
background: #fff8f8;
}
/* JS から付与するフォールバック用クラス */
.form-field input.is-invalid { ... }
10-5. フォーム送信フィードバック
/* HTML — フォーム直下に配置 */ <div id="form-result" class="form-result" role="alert" aria-live="polite" hidden></div> /* main.js が送信結果に応じてクラスを付与して hidden を解除 */ resultEl.className = 'form-result form-result--success'; resultEl.hidden = false;
10-6. ナビゲーション現在ページ表示(aria-current)
main.js が URL を照合して現在ページのリンクに自動付与。HTML 変更不要。
/* CSS */
nav a[aria-current="page"]:not(.nav-cta) {
color: var(--blue-deep);
}
nav a[aria-current="page"]:not(.nav-cta)::after {
opacity: 1;
transform: scaleX(1); /* アンダーラインを表示 */
}
/* main.js — 全ページ自動実行 */
const path = window.location.pathname.replace(/\/$/, '');
for (const link of document.querySelectorAll('.site-header nav a')) {
const linkPath = link.getAttribute('href').replace(/\/$/, '');
if (linkPath === path || path.startsWith(linkPath + '/')) {
link.setAttribute('aria-current', 'page');
}
}
10-7. タッチターゲット最小サイズ
| 要素 | 変更前 | 変更後 | 基準 |
|---|---|---|---|
| .member-links a(SNS・外部リンクボタン) | 30 × 30px | 40 × 40px | WCAG 2.5.5 推奨 44px に近づけた |
.member-links a:not(.x-icon-link),
.member-links .x-icon-link {
width: 40px;
height: 40px;
min-width: 40px;
min-height: 40px;
}
10-8. ボタンホバートランジション
.card-banner-btn,
.service-banner-btn,
.works-tile-btn,
.cm-btn {
transition: background-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
}
.card-banner-btn:hover,
.service-banner-btn:hover,
.works-tile-btn:hover,
.cm-btn:hover {
transform: translateY(-1px);
box-shadow: 0 6px 14px rgba(0, 0, 0, 0.14);
}
/* 送信ボタン */
.form-submit {
transition: background-color 0.2s ease, transform 0.15s ease;
}
.form-submit:active:not(:disabled) { transform: scale(0.98); }
.form-submit:disabled { opacity: 0.6; cursor: not-allowed; }
10-9. フォーム autocomplete 属性
| フィールド | autocomplete 値 |
|---|---|
| お名前 | name |
| 会社名 | organization |
| メールアドレス |
<input type="text" id="name" name="name"
required aria-required="true" autocomplete="name">
<input type="text" id="company" name="company" autocomplete="organization">
<input type="email" id="email" name="email"
required aria-required="true" autocomplete="email">



