Design Decisions — contact / Variant A — Round 1

Surface: marketing site / お問い合わせ (contact)
Variant: A — 「ものすごく B2B」 (大企業 / 保守的買い手向け極)
File: workspace/strategy/ui-redesign/ROUND_001/site/contact/A/index.html (~67KB)
Round: 1
Regenerate reason: 前回出力で SOC 2 / ISO 27001 / 法人番号 / 1 営業日 SLA / 専任 CS 等を creative fabricate → canon-purity 違反 → strict 再生成
Canon source: /tmp/site_canon_facts.txt + kashi/docs/design/permanent-ui-principles.md + kashi/messages/ja.json

本ドキュメントは contact ページ Variant A の設計判断・採用 token・canon-purity 維持のために削った要素・Justine 確認判断点を、 後続の実装フェーズ担当者および共同創業者レビュー担当者向けに記録するものです。

0. Regenerate 経緯 (前回失敗の総括)

前回 (2026-05-27) の Variant A で生じた canon-purity 違反

前回出力で 「弊社営業担当より 1 営業日以内にご返信」 「ISO 27001 / SOC 2 Type II 取得済」 「専任 CS 1 名併走」 「法人番号 1234567890123」 「gold accent #B8915A による corporate-trust signal」 等を、 enterprise SaaS の典型 UI pattern として creative fabricate しました。 これらはいずれも canon source で確認できない claim で、 共同創業者共有前に Justine が catch して redo 判断となりました。 本 v.2 では /tmp/site_canon_facts.txt のホワイトリストのみを根拠とし、 不明な値は明示的に [DEMO] / 「準備中」 / 「ご相談ください」 placeholder に統一しています。

1. 主タスクと上位構造

決定: contact ページの主タスクを 「ご検討段階に応じた窓口振り分け + 適切な情報を収集できる構造化フォーム」 と定義し、 7 セクション構成 (hero → routing → form → schedule → security → process → FAQ → org) で配置。

根拠: B2B 極の買い手 (大企業 人事部長 / CTO / 法務 / 調達 / セキュリティ部門) は 「自分が誰として、 何のために連絡しているか」 を最初に分類しないと正しい窓口に届かない不安を持つ。 4-card routing matrix で目的別の入口を視覚化し、 fold 内で 「フォーム / 商談予約 / セキュリティ問い合わせ」 のいずれに行けばよいか判断可能にした。

canon: site_mockup_brief.txt §「Variant A」 dense layout + sticky CTA + 多段グリッド指針 / permanent-ui-principles.md §7 progressive disclosure

2. レイアウト

決定: utility-bar (深緑) → sticky header (白 + nav + 2 CTA) → breadcrumb (stone) → hero 1.4 : 1 二段組 (title + 6 行 meta dl) → routing 4-card grid → form 1 : 320px (form + sticky right rail) → schedule 1 : 1.2 (copy + calendar mock) → security 2x2 grid → process 5-step dark band → FAQ details accordion → org dl + procurement/legal cards → footer 1.5 : 4-col。

根拠: 大企業の購買部門・人事部長・法務部門は 1 ページに 「自分が必要とする情報」 が全部入っていないと社内で稟議に回せない。 dense + multi-rail で 「商談予約 / メール / 必要書類 / pilot slot 状況」 を rail に分け、 form をスクロールしても rail が見える sticky 配置で、 何度も上に戻らずに済む。 mobile では rail を解除して縦積み + bottom sticky CTA bar に切替。

canon: site_mockup_brief.txt 「dense data / 3-4 列 / sticky CTA バー」 / 1280 / 1024 / 768 / 480 breakpoints
決定: 全 section に Section 0X / 英字ラベル の eyebrow + Fraunces 大きな番号を配置。

根拠: B2B 大企業向け資料 (IR / 監査報告書 / 投資銀行 deck) で頻出する 「章番号」 「節番号」 メタファ。 「契約書を読むモード」 で訪れた読者に 「この資料は構造化されている」 という安心感を与える役割。 同時に Fraunces を見出し以外でも 「番号」 として再利用することで brand の typography 一貫性を保つ。

canon: design_system_v1.md typography hierarchy / Linear changelog + Stripe docs の章番号 pattern

3. 採用したトークン

Token Hex 使用箇所
--color-kashi-evergreen #1F3D33 brand mark / h1-h3 / primary button / sticky-cta / focus ring / section-num / fieldset-legend / footer
--color-kashi-evergreen-deep #244A3D utility bar / process timeline band / primary button hover
--color-emerald-700 #047857 inline link / anchor CTAs (「フォームへ」 ↓)
--color-cream #F5F0E6 badge-status (月 3 枠) / dark-on-light text / footer brand mark
--ink / --ink-soft / --ink-faint #2A3A1E / #4B5746 / #7A8273 本文 / 副次テキスト / placeholder / DEMO mark
--surface / --surface-alt #FFFFFF / #F4F4F2 カード / 補助背景 (form section / breadcrumb / 引用 box)
--border / --border-strong #D6D8D2 / #B7B9B2 カード境界 / 入力 hover / dashed separator

新しい token は導入していません

Fraunces / IBM Plex Sans / IBM Plex Mono / Zen Kaku Gothic New の 4 family、 Evergreen / Emerald / Cream の 3 brand color、 ink scale 4 段、 stone surface 3 段、 全て kashi/src/app/globals.css + design_system_v1.md の canonical token 範囲内です。 前回 Variant A の gold accent #B8915A は本 v.2 では使用していません (judgement §「gold accent 判断点」 参照)。

4. 採用した evidence-grade 表現

contact ページは evidence-grade を表示する surface ではない (= signal を示すページではなく、 connect するページ) ため、 grade badge は配置していません。 代わりに以下の neutral status 表現のみ使用:

5. 削った要素 (現状の Kashi /contact から)

6. 追加した要素 (現状にない)

7. Canon-purity 維持のために 敢えて書かなかった もの

Variant A B2B 極で書きたくなる典型仕様 → 全て canon に無いため削除

書きたくなった内容削除理由 (canon source)代替表現
「弊社営業担当より 1 営業日以内にご連絡」 Kashi の team はまだ小規模、 専任営業 / SLA 約束できる体制無し 「Kashi 担当者よりご連絡いたします」 / 「内容により、 ご回答にお時間をいただく場合がございます」
「ISO 27001 / SOC 2 Type II / ISO 27018 取得済」 canon に取得状況の記述無し 「セキュリティ要件は pilot 担当者と協議」 + [DEMO PLACEHOLDER] note
「セキュリティ白書 PDF / DPA 草案 PDF ダウンロード CTA」 canon source 不明、 PDF も存在未確認 「詳細仕様および契約書面 (DPA 草案を含む) は、 個別にご請求ください」
「専任 CS 1 名 + ソリューションエンジニア 1 名が併走」 canon に dedicated role 言及無し、 Kashi 早期スタートアップ process step 02-03 で 「Kashi 担当者」 「ご担当者」 のみ言及
「Google Meet / Microsoft Teams 対応」 canon は Zoom Pro plan のみ運用可 FAQ Q4 で 「現時点では Zoom (Pro plan) での運用に対応」 + 「その他は個別案内」
「本契約 月額 ¥240,000」 等の具体金額 canon に公開価格無し FAQ Q1 「公開価格はございません。 個別お見積もり」 + form 内 budget select で 「個別見積もり希望」 を選択肢化
「離職率 15% 改善」 「ROI ¥xxx 万」 等の成果保証 canon doctrine 「Kashi は予測しない / 成果保証しない」 (FORBIDDEN_CLAIMS_REGISTRY) FAQ Q6 で disavow pattern: 「Kashi は個人を対象とした予測や成果保証を行うプロダクトではありません」
法人番号 (例: 1234567890123) 運営会社確定情報が canon に無い org section で 「準備中」 + [DEMO PLACEHOLDER] mark
「90 日 pilot」 等の期間 canon は 30 日固定 全箇所 「30 日間」 で統一 (hero meta / routing card 01 / process step 04 / FAQ Q2)
SSO / SAML / OIDC / SCIM 言及 canon に実装状態の記述無し security section で 「認証連携は導入時にご相談」 (= 言及せず)

8. Self-audit (forbidden patterns grep 結果)

mockup 完成後、 /tmp/site_canon_facts.txt §「Forbidden patterns」 全 10 種を grep で検証。 全 0 件 PASS。

=== 1. 金額 ¥xxx,xxx パターン === -> 0 件 OK === 2. 90日 / 60日 / 180日 === -> 0 件 OK === 3. Google Meet / Teams / Webex === -> 0 件 OK === 4. SSO / SAML / OIDC / SCIM === -> 0 件 OK === 5. SOC 2 / ISO 27001 / 27018 / 30414 === -> 0 件 OK === 6. 専任 CS / ソリューションエンジニア === -> 0 件 OK === 7. 離職率xx% / ROI ¥ / 生産性xx% === -> 0 件 OK === 8. 1営業日 / 24時間 / 翌営業日 SLA === -> 0 件 OK === 9. gold accent #B8915A === -> 0 件 OK === 10. 弊社営業担当 / 営業担当より === -> 0 件 OK

9. 既知のトレードオフ / 未解決

10. Justine が気にしそうな判断点

判断点 1 (NEW): gold accent #B8915A の扱い

前回 v.A では 「corporate-trust signal」 として gold accent (#B8915A) を hero / 認証バッジ / 章番号に配置していました。 v.2 では canon-purity 優先で 削除し、 全アクセントを evergreen / emerald / cream の 3 brand color に統一 しました。 結果として 「B2B 大企業らしい高級感・別格感」 は減り、 「Kashi らしい evergreen 統一の硬派 SaaS」 に近づいています。
判断ポイント: gold accent を corporate signal として再導入したい場合は brand palette への正式追加が必要 (canon: project_kashi_brand_palette.md = 「ワイド緑系 + 白 + 黒」 が canon、 gold は範囲外)。 共同創業者 hearing で 「Kashi らしさ」 vs 「大企業向け差別化」 のどちらに振るか確認したい点。

判断点 2: form 必須項目の保守度

会社名 / 姓名 / メール / ご検討段階の 4 項目を required に設定。 業種 / 規模 / 役職 / 部署 / 関心領域は任意。 B2C 寄り (B variant) では会社名すら任意化する選択もありますが、 v.A は大企業の窓口振り分け前提のため会社名を必須化。 「フリーメールでも連絡可だが法人ドメイン推奨」 は help text に降ろし、 reject pattern にはしていません。

判断点 3: 「営業時間 平日 10:00–18:00 (JST)」 を hero meta に記載

これも 「1 営業日 SLA」 と同様に 「team の応答能力を約束」 と取られないか境界の表現です。 「営業時間」 = 連絡が届く時間帯の説明であり、 「この時間内に返信する」 commit ではないと解釈して残しました。 もし共同創業者から 「営業時間も書きたくない」 という意見が出たら、 hero meta から外して utility-bar の info-text に降ろす方針で対応可能。

判断点 4: FAQ Q5 「従業員の発言内容は誰が閲覧できますか?」 の disavow pattern

お問い合わせ前段階の FAQ で、 surveillance 懸念を anticipate して先回り回答しています。 「Member / Manager / Org Admin の役割ごとに可視範囲制御」 「発言内容そのものは DB に保存されない」 と canon 表現で書きました。 ただ contact ページで深く触れすぎると 「やはり監視ツールなのでは」 という不安を逆に喚起する可能性もあります。 共同創業者から 「ここまで先回りせず product ページに任せる」 という意見が出たら Q5 を削る方針も検討余地あり。

11. 実装フェーズへの引き継ぎ

本 mockup を Kashi コードベースに移植する際の注意:

該当する Kashi コード

影響を受ける共有コンポーネント

必要な新規コンポーネント

実装フェーズで再確認が必要な canon-source

r19 既存課題のうち本案で同時解決されるもの