一、④段整套同步(用户选候选 A)
- 新增 `references/stage-proto-doc/assets/产品文档模板.html`(16 KB/247 行,从备份拷、转 LF)。
- ④段 SKILL.md 换成备份 15:28 那版,并按模板口径改齐:
· 「产品文档框架」从「四块+一附录」改成**六节** —— 页面结构/功能清单/使用场景/操作流程/
跨页与界面状态/待确认与偏离;与模板同构,⛔ 不从空白页重写结构。
· 编号从 R/S/F 改成 **P 页面/S 场景/F 功能/J 二级功能**,各自唯一、按展示顺序通排。
· 保留旧版有价值的要求:每项功能补齐 做什么/入口在哪/输入边界/异常与恢复;重点功能三处标红;
横向流程图每步写清页面/功能/操作/完成判据。
· 完成标准「七节」→「六节」,自查清单同步换掉「需求」那批条目,补模板与配图两条。
· 路径 `designs/<项目>/` → `docs/pm/<项目>/ui/`(2 处)。
· 补回本机那条「每份产出文档开头都要有一张图」的引用(指向主 skill,段内不复述)。
- 主 skill 同步:四段结构表④行、④段沿革、画图小节(④段画页面结构图 + 用户路径)。
二、open-design 移到技能根(用户选候选 A)
- `git mv product-planning/references/stage-delivery/assets/open-design → open-design/`(4178 文件)。
- `.gitignore` 白名单加 `!/open-design/` —— 否则移出去就不再纳入版本控制。
- 引用改 11 处:路径形态 `assets/open-design/...` → `<技能根>/open-design/...`;
「随段携带的自带件」改称「同根技能」;「路径怎么找」那条改成自带件(段内相对路径)与
同根技能(`<技能根>/<技能名>/`)两类分开写。
- open-design 自己的 ATTRIBUTION.md 两处同步(它现在与 oil-ui-pro 同层)。
- 副作用(有益):命名闸门读数由 2063 降到 225 —— 此前它把 open-design 里 919 个第三方 md
当成规则一起扫了;现在只扫本包 23 个 md。已确认④段的 H1 与 4a/4b/4c 子步仍在检查范围内。
三、验收
- check_naming.py --ws E:/ProgramData/AIProject/contentm_agent = 通过 225 / 失败 0 / 提示 27。
- 活文件里 `assets/open-design` 残留 0;工作区 CRLF 文件 0。
9.8 KiB
9.8 KiB
Duolingo にインスパイアされたデザインシステム
Category: 生産性 & SaaS 語学学習プラットフォーム。明るいフクロウグリーン、ぶ厚いシャドウ、ゲーミフィケーションの喜び。
1. ビジュアルテーマと雰囲気
Duolingo はゲーミフィケーションをビジュアル言語として体現したデザインです。インターフェースは遠慮なく鮮やかで、フクロウグリーン(#58cc02)をブランドプライマリとし、すべてのインタラクティブ要素の下部に 4px のぶ厚いシャドウを持ち、まるで押されるのを待っている 3D ボタンのように見えます。ページは白(#ffffff)で、2〜3px の太いボーダーは深いグレー(#e5e5e5)、システム全体がより良い階層構造で生まれ変わった 2015 年の iOS アプリのように読めます。
タイポグラフィは、クロームに Feather Bold(カスタムの丸みを帯びたサンセリフ)、本文に Mona Sans(または Inter)を使用しています。ディスプレイサイズは大きく自信に満ちており——Duolingo は決してささやきません。見出しはグリーンのアンダーラインストロークを持つか、グリーンのピルの上に置かれることが多く、マスコットの Duo(緑のフクロウ)は静的なロゴではなく、アクティブなイラストキャラクターとして登場します。
形状言語は親しみやすく:カードは 16〜20px の角丸、ボタンは 12px、チップとプログレスバーは 9999px です。アイコノグラフィは塗りつぶし、丸みを帯び、スキルでカラーコード化されており——すべてのレッスン面には一目で識別できるカラーペアリングがあります。
主要な特徴:
- フクロウグリーン(
#58cc02)が支配的なブランドカラーとして、サーフェスの 30% 以上を占める - すべてのボタンに 4px のぶ厚いボトムシャドウ(「触覚的プレス」のアフォーダンス)
- 2〜3px のソリッドボーダー、ヘアラインは一切使わない
- Feather Bold(丸みのあるディスプレイ)+ Mona Sans(本文)
- 大きく自信のあるテキスト——ディスプレイサイズは 48px から始まり上昇する
- マスコット=キャラクター:Duo フクロウはオンボーディング、エラー、ストリークに登場
- ストリークオレンジ(
#ff9600)とジェムピンク(#ce82ff)がセカンダリブランドカラー
2. カラーパレットと役割
プライマリ
- フクロウグリーン(
#58cc02):ブランドプライマリ、プライマリ CTA、正解。 - フクロウグリーンディープ(
#58a700):グリーンボタンのプレス/シャドウカラー。 - フクロウグリーンライト(
#89e219):ホバー、ソフトフィル。 - フクロウグリーンペール(
#dbf8c5):ソフトサーフェス、成功バナー。
セカンダリアクセント
- ストリークオレンジ(
#ff9600):ストリークカウンター、炎アイコン、プレミアムエネルギー。 - ストリークオレンジディープ(
#cc7a00):オレンジのプレス状態。 - ジェムピンク(
#ce82ff):ジェム通貨、Super Duolingo。 - ウナギブルー(
#1cb0f6):ヒントボタン、情報リンク。 - カーディナルレッド(
#ff4b4b):不正解、ライフ喪失。 - ビーイエロー(
#ffc800):プロバッジ、実績。
サーフェス
- スノー(
#ffffff):プライマリ背景。 - ウナギ(
#f7f7f7):セクション区切り、セカンダリサーフェス。 - スワン(
#e5e5e5):無効化背景、インセットブロック。 - ウルフ(
#777777):ダークディバイダー、セカンダリテキスト。
インクとテキスト
- ウナギブラック(
#3c3c3c):プライマリテキスト。 - ウルフ(
#777777):セカンダリテキスト、キャプション。 - ヘア(
#afafaf):無効化、プレースホルダー。
ボーダー
- スワン(
#e5e5e5):標準 2px ボーダー。 - ヘア(
#afafaf):ホバー時の強調ボーダー。
3. タイポグラフィルール
フォントファミリー
- ディスプレイ / UI / 見出し:
Feather Bold、フォールバック:'DIN Round Pro', 'Helvetica Neue', sans-serif - 本文 / 長文:
Mona Sans、フォールバック:'Helvetica Neue', system-ui, sans-serif - コード(稀、学校/管理):
JetBrains Mono、フォールバック:ui-monospace, Menlo, monospace
階層
| 役割 | フォント | サイズ | ウェイト | 行間 | 字間 | 備考 |
|---|---|---|---|---|---|---|
| ディスプレイ | Feather Bold | 56px (3.5rem) | 800 | 1.05 | -0.01em | オンボーディングヒーロー |
| H1 | Feather Bold | 32px (2rem) | 800 | 1.15 | -0.005em | ページタイトル |
| H2 | Feather Bold | 24px (1.5rem) | 800 | 1.2 | normal | セクション見出し |
| H3 | Feather Bold | 18px (1.125rem) | 700 | 1.25 | normal | カードタイトル、レッスン行 |
| 本文ラージ | Mona Sans | 17px (1.0625rem) | 500 | 1.5 | normal | レッスンプロンプト、説明 |
| 本文 | Mona Sans | 15px (0.9375rem) | 400 | 1.5 | normal | 標準テキスト |
| キャプション | Mona Sans | 13px (0.8125rem) | 600 | 1.4 | 0.01em | XP カウンター、メタデータ |
| ボタン | Feather Bold | 16px (1rem) | 800 | 1.2 | 0.02em | 標準ボタンラベル |
| ストリーク | Feather Bold | 14px (0.875rem) | 800 | 1.2 | normal | ストリーク数字、炎の上 |
原則
- 800 がデフォルト:Feather Bold は見出しとボタンで 800 で動作します。700 はこのシステムでは弱く見えます。
- 大きなタイプ:見出しサイズは典型的なプロダクトブランドより 25〜40% 大きく——自信がアイデンティティです。
- 丸みのある字形:すべてのグリフにソフトなターミナルがあります。シャープなセリフは親しみやすさの契約を壊します。
4. コンポーネントスタイリング
ボタン
プライマリ(フクロウグリーン)
- 背景:
#58cc02 - テキスト:
#ffffff - パディング:14px 24px
- 角丸:16px
- ボーダーボトム:4px solid
#58a700(ぶ厚いシャドウ) - ホバー:背景
#89e219 - アクティブ:translate-y 4px、ボーダーボトム 0(ボタンが「押される」)
- 使用:「続ける」、「確認」、メイン CTA。
セカンダリ(ボトムシャドウ付き白)
- 背景:
#ffffff - テキスト:
#777777 - ボーダー:2px solid
#e5e5e5 - ボーダーボトム:4px solid
#e5e5e5 - 角丸:16px
- パディング:14px 24px
- ホバー:テキスト
#3c3c3c、ボーダー#afafaf
ストリークオレンジ
- 背景:
#ff9600 - テキスト:
#ffffff - ボーダーボトム:4px solid
#cc7a00 - 使用:ストリークゴール、「ストリーク開始」
エラー(カーディナルレッド)
- 背景:
#ff4b4b - テキスト:
#ffffff - ボーダーボトム:4px solid
#cc3b3b - 使用:不正解フィードバック。
カード / レッスンタイル
- 背景:
#ffffff - ボーダー:2px solid
#e5e5e5 - ボーダーボトム:4px solid
#e5e5e5 - 角丸:16px
- パディング:16px
- ホバー:2px 浮上、シャドウ
0 4px 0 #d7d7d7
スキルツリーノード(レッスンバブル)
- サイズ:80×72px
- 背景:スキルカラー色調(アクティブは緑、ロック済みはグレー)
- ボーダーボトム:6px solid 暗いバリアント
- 角丸:50%(円形)
- アクティブ:1.6s ごとに 1.0 → 1.05 でパルス
入力
- 背景:
#ffffff - ボーダー:2px solid
#e5e5e5 - 角丸:12px
- パディング:12px 16px
- フォーカス:ボーダー
#1cb0f6(ウナギブルー)、リング0 0 0 3px rgba(28, 176, 246, 0.2)
プログレスバー
- トラック:
#e5e5e5 - フィル:
#58cc02(またはストリーク時#ff9600) - 角丸:9999px
- 高さ:16px
- アニメーションフィル:増分時 320ms ease-out。
5. スペーシングとレイアウト
- ベースユニット:4px。スケール:4、8、12、16、24、32、48、64。
- コンテナ:最大 1080px、24px ガター。
- レッスンツリー列:幅 320px;デスクトップで中央配置。
6. モーション
- デュレーション:ボタンプレス 180ms;スキルノードアンロック 320ms;アクティブノードパルス 1.6s。
- イージング:
cubic-bezier(0.34, 1.56, 0.64, 1)(バックアウト、わずかなオーバーシュート)アンロック用。 - マスコット:Duo は 4〜6s ごとにまばたきし、ストリークのマイルストーンでジャンプ(480ms ease-out スプリング)。
7. 使用ガイドライン
- 高彩度のフクロウグリーン、ぶ厚いボトムシャドウ、丸みのあるレッスンジオメトリは一緒に保ってください。フラットなグリーンボタン単体では Duolingo らしく読まれません。
- 特大の太字テキストは、プロダクトが励ましやフィードバックを必要とするレッスン、ストリーク、進捗の瞬間のために取っておいてください。
- プレイフルなモーションは進捗状態の変化の周りに控えめに使い、すべてのコントロールに汎用のバウンシーアニメーションを使うのは避けてください。