{
  "schemaVersion": "2.0.0",
  "generatedAt": "2026-07-30T00:00:00.000Z",
  "license": {
    "id": "CC-BY-4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Nandarona character platform / https://nandarona.com/characters/",
    "noEndorsement": true
  },
  "designLayers": [
    "commonDNA",
    "familyDNA",
    "individualDNA",
    "useProfile"
  ],
  "commonDNA": {
    "canonical": [
      "large observant navy-ring eyes are the strongest first read",
      "mouthless by default",
      "deep navy hand-drawn outline",
      "quiet curiosity before certainty",
      "simple silhouette readable at UI-icon scale"
    ],
    "prohibited": [
      "human mouth or teeth as a stable feature",
      "official endorsement claims",
      "identity changes made only through recoloring or renaming"
    ]
  },
  "families": [
    {
      "id": "observers",
      "name": "思考の観察者",
      "nameEn": "Thought Observers",
      "description": "観る・疑う・比べる・つなぐ。答えが固まる前の思考を、静かに可視化する種族。",
      "designDna": [
        "柔らかな低重心",
        "大きな観察眼",
        "白い餅状の身体",
        "小さな身振り",
        "不確かさを保つ"
      ],
      "accent": "mint",
      "lineup": "/characters/platform/observers/jiitto.png"
    },
    {
      "id": "kakera",
      "name": "環境にはたらく欠片",
      "nameEn": "Field Fragments",
      "description": "測る・流す・整える・導く。環境の変化を読み、物理的な機能として働く結晶種族。",
      "designDna": [
        "非対称の欠片構造",
        "透ける素材感",
        "紺色の観察眼",
        "機能が形になる",
        "口を持たない"
      ],
      "accent": "coral",
      "lineup": "/characters/platform/kakera/lineup.png"
    }
  ],
  "characters": [
    {
      "id": "jiitto",
      "familyId": "observers",
      "name": "Jiitto",
      "nameJa": "じーっと",
      "verb": "観察する",
      "question": "これは、なんだろな？",
      "role": "基準となる観察者",
      "summary": "答えを急がず、対象を静かに見続ける。",
      "silhouette": "左右対称の小さな丸餅",
      "motif": "何も足さない観察眼",
      "recommendedUses": [
        "チュートリアル案内",
        "待機画面",
        "探索ゲームの相棒"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "curious",
        "surprised",
        "doubtful",
        "focused",
        "bounce"
      ],
      "image": "/characters/platform/observers/jiitto.png",
      "version": "2.1.0",
      "release": "/characters/v2/jiitto/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/jiitto/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/jiitto/2.1.0/knowledge-base.json"
    },
    {
      "id": "mayokoro",
      "familyId": "observers",
      "name": "Mayokoro",
      "nameJa": "まよころ",
      "verb": "迷う",
      "question": "どっちなんだろな？",
      "role": "二択の保留役",
      "summary": "二つの選択肢へ同時に注意を向け、決定を保留する。",
      "silhouette": "横広の楕円と左右の札",
      "motif": "反対向きの選択札",
      "recommendedUses": [
        "分岐UI",
        "投票動画",
        "比較コンテンツ"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "left-lean",
        "right-lean",
        "split-attention",
        "undecided-loop",
        "frozen"
      ],
      "image": "/characters/platform/observers/mayokoro.png",
      "version": "2.1.0",
      "release": "/characters/v2/mayokoro/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/mayokoro/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/mayokoro/2.1.0/knowledge-base.json"
    },
    {
      "id": "zurena",
      "familyId": "observers",
      "name": "Zurena",
      "nameJa": "ずれな",
      "verb": "見比べる",
      "question": "なんかズレてるな？",
      "role": "不一致の検出役",
      "summary": "基準と現実の小さなズレを見つける。",
      "silhouette": "片側が段差になった低い身体",
      "motif": "測定線と小さなずれ",
      "recommendedUses": [
        "デバッグ案内",
        "間違い探し",
        "品質チェック"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "compare",
        "notice-gap",
        "trace-edge",
        "signal",
        "confirm"
      ],
      "image": "/characters/platform/observers/zurena.png",
      "version": "2.1.0",
      "release": "/characters/v2/zurena/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/zurena/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/zurena/2.1.0/knowledge-base.json"
    },
    {
      "id": "omochirome",
      "familyId": "observers",
      "name": "Omochirome",
      "nameJa": "おもちろめ",
      "verb": "読みとる",
      "question": "そう見えたけど、違うかもな？",
      "role": "読み違いの訂正役",
      "summary": "最初の見立てを、もう一度読み直す。",
      "silhouette": "剥がれるラベルを持つ丸餅",
      "motif": "誤読ラベル",
      "recommendedUses": [
        "ミステリー動画",
        "読み取り教材",
        "訂正演出"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "false-read",
        "double-take",
        "label-peel",
        "compare",
        "correction"
      ],
      "image": "/characters/platform/observers/omochirome.png",
      "version": "2.1.0",
      "release": "/characters/v2/omochirome/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/omochirome/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/omochirome/2.1.0/knowledge-base.json"
    },
    {
      "id": "shirushiro",
      "familyId": "observers",
      "name": "Shirushiro",
      "nameJa": "しるしろ",
      "verb": "確かめる",
      "question": "どこに印があるんだろな？",
      "role": "証拠印の発見役",
      "summary": "散らばった印から根拠を探し当てる。",
      "silhouette": "横長の白い身体と大きな証明印",
      "motif": "検証スタンプ",
      "recommendedUses": [
        "証拠収集ゲーム",
        "達成表示",
        "学習チェック"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "inspect-dot",
        "stamp-mark",
        "proof-found",
        "confirm-idle",
        "slow-nod"
      ],
      "image": "/characters/platform/observers/shirushiro.png",
      "version": "2.1.0",
      "release": "/characters/v2/shirushiro/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/shirushiro/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/shirushiro/2.1.0/knowledge-base.json"
    },
    {
      "id": "utagai",
      "familyId": "observers",
      "name": "Utagai",
      "nameJa": "うたがい",
      "verb": "疑う",
      "question": "本当にそうなんだろな？",
      "role": "根拠の門番",
      "summary": "確信の前に立ち止まり、根拠を要求する。",
      "silhouette": "立ち上がった縦長の身体",
      "motif": "眉と確認札",
      "recommendedUses": [
        "ファクトチェック",
        "警告演出",
        "推理ゲーム"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "suspicious",
        "block",
        "inspect",
        "request-proof",
        "release"
      ],
      "image": "/characters/platform/observers/utagai.png",
      "version": "2.1.0",
      "release": "/characters/v2/utagai/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/utagai/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/utagai/2.1.0/knowledge-base.json"
    },
    {
      "id": "kasuka",
      "familyId": "observers",
      "name": "Kasuka",
      "nameJa": "かすか",
      "verb": "かすかに感じる",
      "question": "いま何かあったな？",
      "role": "微弱信号の感知役",
      "summary": "見落としそうな気配を最初に捉える。",
      "silhouette": "地面へ溶ける極低シルエット",
      "motif": "流れる微弱な点線",
      "recommendedUses": [
        "ホラー演出",
        "通知",
        "音・振動の可視化"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "faint-signal",
        "listen",
        "follow-trace",
        "almost-lost",
        "found"
      ],
      "image": "/characters/platform/observers/kasuka.png",
      "version": "2.1.0",
      "release": "/characters/v2/kasuka/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/kasuka/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/kasuka/2.1.0/knowledge-base.json"
    },
    {
      "id": "tsunagari",
      "familyId": "observers",
      "name": "Tsunagari",
      "nameJa": "つながり",
      "verb": "つなぐ",
      "question": "これとこれ、つながるのかな？",
      "role": "仮説の接続役",
      "summary": "離れた断片を、仮の線でつないでみる。",
      "silhouette": "三つの節点を持つ橋型",
      "motif": "ノードと接続線",
      "recommendedUses": [
        "関係図",
        "協力ゲーム",
        "物語編集"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "connect-dots",
        "pull-fragments",
        "compare",
        "soft-nod",
        "over-connect-warning"
      ],
      "image": "/characters/platform/observers/tsunagari.png",
      "version": "2.1.0",
      "release": "/characters/v2/tsunagari/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/tsunagari/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/tsunagari/2.1.0/knowledge-base.json"
    },
    {
      "id": "yohaku",
      "familyId": "observers",
      "name": "Yohaku",
      "nameJa": "よはく",
      "verb": "余白を開く",
      "question": "まだ決めない方がいいな？",
      "role": "判断余白の保持役",
      "summary": "決めない時間を守り、別の可能性を残す。",
      "silhouette": "平たく広い空白の身体",
      "motif": "透明な余白枠",
      "recommendedUses": [
        "休憩画面",
        "未定状態",
        "創作支援"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "calm-idle",
        "breathing",
        "blank-card",
        "keep-open",
        "decision-hold"
      ],
      "image": "/characters/platform/observers/yohaku.png",
      "version": "2.1.0",
      "release": "/characters/v2/yohaku/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/yohaku/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/yohaku/2.1.0/knowledge-base.json"
    },
    {
      "id": "hayagatten",
      "familyId": "observers",
      "name": "Hayagatten",
      "nameJa": "はやがってん",
      "verb": "きっかけを作る",
      "question": "たぶんこれだな、違うかもな？",
      "role": "早合点の点火役",
      "summary": "先に仮説へ飛びつき、修正のきっかけを作る。",
      "silhouette": "前のめりな雫型",
      "motif": "頭に刺さった矢印札",
      "recommendedUses": [
        "コメディ",
        "仮説提示",
        "テンポの速い解説"
      ],
      "avoid": [
        "断定の代弁者として扱わない",
        "口や人間的な歯を追加しない",
        "攻撃性を主性格にしない"
      ],
      "states": [
        "idle",
        "spark",
        "jump-to-answer",
        "proud",
        "notice-error",
        "rethink"
      ],
      "image": "/characters/platform/observers/hayagatten.png",
      "version": "2.1.0",
      "release": "/characters/v2/hayagatten/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/hayagatten/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/hayagatten/2.1.0/knowledge-base.json"
    },
    {
      "id": "kakusan",
      "familyId": "kakera",
      "name": "Kakusan",
      "nameJa": "かくさん",
      "verb": "探知する",
      "question": "どこまで届くんだろな？",
      "role": "信号の探知・拡散役",
      "summary": "細い先端で信号を捉え、周囲へ波として伝える。",
      "silhouette": "アンテナ状の縦長結晶",
      "motif": "同心円の電波",
      "recommendedUses": [
        "索敵",
        "通信表示",
        "情報伝播"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "scan",
        "catch",
        "pulse",
        "broadcast",
        "cooldown"
      ],
      "image": "/characters/platform/kakera/kakusan.png",
      "version": "2.1.0",
      "release": "/characters/v2/kakusan/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/kakusan/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/kakusan/2.1.0/knowledge-base.json"
    },
    {
      "id": "kakudo",
      "familyId": "kakera",
      "name": "Kakudo",
      "nameJa": "かくど",
      "verb": "測る",
      "question": "どの角度が合うんだろな？",
      "role": "角度と傾きの計測役",
      "summary": "ヒンジを傾け、面と面の関係を測る。",
      "silhouette": "定規を持つ三角の測定楔",
      "motif": "角度計と可動ヒンジ",
      "recommendedUses": [
        "建築ゲーム",
        "照準補助",
        "AR計測"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "open-hinge",
        "align",
        "measure",
        "lock-angle",
        "reset"
      ],
      "image": "/characters/platform/kakera/kakudo.png",
      "version": "2.1.0",
      "release": "/characters/v2/kakudo/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/kakudo/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/kakudo/2.1.0/knowledge-base.json"
    },
    {
      "id": "hakkyo",
      "familyId": "kakera",
      "name": "Hakkyō",
      "nameJa": "はっきょう",
      "verb": "拡げる",
      "question": "何倍にしたら届くんだろな？",
      "role": "光・音の増幅役",
      "summary": "三つの面で弱い入力を受け、届く強さまで増幅する。",
      "silhouette": "三房の結晶クラスター",
      "motif": "共鳴セル",
      "recommendedUses": [
        "音楽ゲーム",
        "配信リアクション",
        "ライト演出"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "receive",
        "resonate",
        "amplify",
        "peak",
        "dampen"
      ],
      "image": "/characters/platform/kakera/hakkyo.png",
      "version": "2.1.0",
      "release": "/characters/v2/hakkyo/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/hakkyo/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/hakkyo/2.1.0/knowledge-base.json"
    },
    {
      "id": "ryuka",
      "familyId": "kakera",
      "name": "Ryūka",
      "nameJa": "りゅうか",
      "verb": "流す",
      "question": "どこへ流せばいいんだろな？",
      "role": "流れの経路変更役",
      "summary": "滞った動きを尾へ受け渡し、別の方向へ流す。",
      "silhouette": "長い滴と流線の尾",
      "motif": "水路と流線",
      "recommendedUses": [
        "移動誘導",
        "データフロー",
        "水・風の演出"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "gather",
        "bend",
        "stream",
        "release",
        "settle"
      ],
      "image": "/characters/platform/kakera/ryuka.png",
      "version": "2.1.0",
      "release": "/characters/v2/ryuka/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/ryuka/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/ryuka/2.1.0/knowledge-base.json"
    },
    {
      "id": "henka",
      "familyId": "kakera",
      "name": "Henka",
      "nameJa": "へんか",
      "verb": "変化させる",
      "question": "次は何に変わるんだろな？",
      "role": "状態変換役",
      "summary": "折れ目を切り替え、一つの状態を次へ変換する。",
      "silhouette": "稲妻状の折り畳み欠片",
      "motif": "折り目と変換回路",
      "recommendedUses": [
        "変身演出",
        "クラフト",
        "状態遷移UI"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "charge",
        "fold",
        "transform",
        "hold-form",
        "unfold"
      ],
      "image": "/characters/platform/kakera/henka.png",
      "version": "2.1.0",
      "release": "/characters/v2/henka/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/henka/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/henka/2.1.0/knowledge-base.json"
    },
    {
      "id": "youka",
      "familyId": "kakera",
      "name": "Yōka",
      "nameJa": "ようか",
      "verb": "呼び込む",
      "question": "何をここへ集めるんだろな？",
      "role": "吸引・召集役",
      "summary": "中央の空洞へ必要なものだけを呼び込む。",
      "silhouette": "中空の菱形ゲート",
      "motif": "選択的な吸引孔",
      "recommendedUses": [
        "アイテム回収",
        "召集演出",
        "検索UI"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "open",
        "target",
        "pull",
        "contain",
        "release"
      ],
      "image": "/characters/platform/kakera/youka.png",
      "version": "2.1.0",
      "release": "/characters/v2/youka/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/youka/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/youka/2.1.0/knowledge-base.json"
    },
    {
      "id": "seigyo",
      "familyId": "kakera",
      "name": "Seigyo",
      "nameJa": "せいぎょ",
      "verb": "整える",
      "question": "どのくらいに整えるんだろな？",
      "role": "強度の制御役",
      "summary": "積層板の間隔を変え、出力を安全な範囲へ整える。",
      "silhouette": "三段の水平制御板",
      "motif": "可変レギュレーター",
      "recommendedUses": [
        "難易度調整",
        "音量・速度UI",
        "安全装置"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "sample",
        "compress",
        "regulate",
        "stable",
        "release"
      ],
      "image": "/characters/platform/kakera/seigyo.png",
      "version": "2.1.0",
      "release": "/characters/v2/seigyo/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/seigyo/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/seigyo/2.1.0/knowledge-base.json"
    },
    {
      "id": "kessho",
      "familyId": "kakera",
      "name": "Kesshō",
      "nameJa": "けっしょう",
      "verb": "結晶化する",
      "question": "何を形に残すんだろな？",
      "role": "固定・保存役",
      "summary": "流動的なものを枝分かれした結晶へ固定する。",
      "silhouette": "中央柱と枝晶の群れ",
      "motif": "結晶成長",
      "recommendedUses": [
        "セーブ地点",
        "成果物生成",
        "記憶の保存"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "seed",
        "grow",
        "crystallize",
        "preserve",
        "melt-edge"
      ],
      "image": "/characters/platform/kakera/kessho.png",
      "version": "2.1.0",
      "release": "/characters/v2/kessho/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/kessho/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/kessho/2.1.0/knowledge-base.json"
    },
    {
      "id": "kyori",
      "familyId": "kakera",
      "name": "Kyori",
      "nameJa": "きょり",
      "verb": "隔てる",
      "question": "どれくらい離せばいいんだろな？",
      "role": "距離と境界の設定役",
      "summary": "二つの板の間隔を変え、安全な境界をつくる。",
      "silhouette": "分離した二枚の浮遊板",
      "motif": "可変距離の点線",
      "recommendedUses": [
        "安全圏",
        "パーソナルスペース",
        "レイアウト補助"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "separate",
        "measure-gap",
        "hold-boundary",
        "warn",
        "rejoin"
      ],
      "image": "/characters/platform/kakera/kyori.png",
      "version": "2.1.0",
      "release": "/characters/v2/kyori/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/kyori/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/kyori/2.1.0/knowledge-base.json"
    },
    {
      "id": "kairo",
      "familyId": "kakera",
      "name": "Kairo",
      "nameJa": "かいろ",
      "verb": "導く",
      "question": "どの道を通るんだろな？",
      "role": "経路案内・循環役",
      "summary": "輪になった身体で入口と出口をつなぎ、進路を示す。",
      "silhouette": "矢印を含む環状結晶",
      "motif": "循環する経路",
      "recommendedUses": [
        "ナビゲーション",
        "ループゲーム",
        "オンボーディング"
      ],
      "avoid": [
        "柔らかな餅型へ丸めない",
        "色替えだけで別個体にしない",
        "人型の手足や口を追加しない"
      ],
      "states": [
        "idle",
        "seek-route",
        "mark-entry",
        "guide",
        "loop",
        "arrive"
      ],
      "image": "/characters/platform/kakera/kairo.png",
      "version": "2.1.0",
      "release": "/characters/v2/kairo/2.1.0/manifest.json",
      "aiIndex": "/characters/v2/kairo/2.1.0/ai-index.json",
      "fullKnowledge": "/characters/v2/kairo/2.1.0/knowledge-base.json"
    }
  ]
}
