// 参加者サンプルデータ + 軽量グローバルストア

const MIE_AREAS = [
  { id: 'kuwana', label: '桑名・いなべ', region: '北勢' },
  { id: 'yokkaichi', label: '四日市', region: '北勢' },
  { id: 'suzuka', label: '鈴鹿・亀山', region: '北勢' },
  { id: 'tsu', label: '津', region: '中勢' },
  { id: 'matsusaka', label: '松阪', region: '中勢' },
  { id: 'ise', label: '伊勢', region: '伊勢志摩' },
  { id: 'toba', label: '鳥羽・志摩', region: '伊勢志摩' },
  { id: 'iga', label: '伊賀・名張', region: '伊賀' },
  { id: 'kumano', label: '熊野・尾鷲', region: '東紀州' },
  { id: 'kenngai', label: '県外', region: '県外' },
];

const AGE_RANGES = ['20代', '30代', '40代', '50代', '60代〜'];

const ATTEND_COUNT = [
  { id: 'first', label: '初参加' },
  { id: 'second', label: '2回目以降' },
];

// サンプル参加者 (24名)
const PARTICIPANTS_SEED = [
  { id: 1, name: 'たけし', avatar: '🦊', area: 'tsu', age: '40代', count: 'second',
    themes: ['kasegu', 'blog', 'study'], action: '毎朝のウォーキングを1週間継続',
    talk: 'ブログ収益化のSEOコツ聞きたい', spot: '津餃子・大門', message: '同じく40代の方とお話したい！' },
  { id: 2, name: 'みき', avatar: '🌸', area: 'yokkaichi', age: '30代', count: 'first',
    themes: ['tameru', 'family', 'handmade'], action: 'サブスク3つ解約して月3000円浮かせた',
    talk: '子育てしながらの副業について', spot: '四日市とんてき', message: '初参加で緊張してます…よろしくお願いします' },
  { id: 3, name: 'りょう', avatar: '🌊', area: 'ise', age: '30代', count: 'first',
    themes: ['fuyasu', 'program', 'study'], action: 'NISAで毎月1万円積立スタート',
    talk: '新NISAの運用方法を共有したい', spot: '伊勢神宮おかげ横丁', message: '投資仲間ほしいです' },
  { id: 4, name: 'ゆうこ', avatar: '🍊', area: 'matsusaka', age: '50代', count: 'second',
    themes: ['mamoru', 'health', 'study'], action: '保険を見直して月8千円削減',
    talk: 'シニア世代の資産防衛', spot: '松阪牛ホルモン', message: '同世代の方ぜひ！' },
  { id: 5, name: 'けんじ', avatar: '🐢', area: 'suzuka', age: '40代', count: 'second',
    themes: ['kasegu', 'sedori', 'fuyasu'], action: 'メルカリで不用品3万円売却',
    talk: 'せどりの仕入れ先', spot: 'カフェドリップ亀山', message: '物販やってる方歓迎' },
  { id: 6, name: 'あい', avatar: '🌼', area: 'tsu', age: '20代', count: 'first',
    themes: ['tsukau', 'design', 'travel'], action: '初めて図書館カードを作った',
    talk: '20代の人と話したい', spot: '津のかき氷屋さん', message: '同世代少なそうですが…がんばります' },
  { id: 7, name: 'たけお', avatar: '🍶', area: 'kuwana', age: '60代〜', count: 'first',
    themes: ['mamoru', 'fuyasu', 'health'], action: 'スマホ決済を初めて使ってみた',
    talk: '退職後の資産取り崩し戦略', spot: '桑名はまぐり', message: '人生100年時代の備えを語りたい' },
  { id: 8, name: 'のりこ', avatar: '🌷', area: 'iga', age: '40代', count: 'second',
    themes: ['kasegu', 'writing', 'sns'], action: 'note記事を3本投稿',
    talk: 'Webライターの単価アップ', spot: '伊賀の蕎麦', message: 'ライター仲間募集！' },
  { id: 9, name: 'しゅん', avatar: '🐬', area: 'toba', age: '30代', count: 'second',
    themes: ['kasegu', 'douga', 'design'], action: 'YouTube動画を初投稿',
    talk: '動画編集の案件獲得', spot: '鳥羽の海女小屋', message: 'クリエイター系の方と' },
  { id: 10, name: 'ひろみ', avatar: '🍵', area: 'yokkaichi', age: '50代', count: 'first',
    themes: ['tameru', 'health', 'family'], action: 'ふるさと納税を初めて利用',
    talk: '節約レシピ交換したい', spot: '四日市あんかけうどん', message: '節約仲間ほしい！' },
  { id: 11, name: 'だい', avatar: '🦅', area: 'tsu', age: '30代', count: 'second',
    themes: ['fuyasu', 'program', 'kasegu'], action: 'プログラミング学習を毎日30分',
    talk: 'エンジニア副業の始め方', spot: '津のラーメン藤', message: 'コード書ける人と話したい' },
  { id: 12, name: 'まこと', avatar: '⛰️', area: 'kumano', age: '40代', count: 'first',
    themes: ['tameru', 'travel', 'study'], action: '家計簿アプリで支出を可視化',
    talk: '地方暮らしのコスパ', spot: '尾鷲のさんま寿司', message: '東紀州の人いますか？' },
  { id: 13, name: 'えみ', avatar: '🌻', area: 'matsusaka', age: '30代', count: 'first',
    themes: ['family', 'handmade', 'sns'], action: 'インスタを毎日3日連続更新',
    talk: 'ママ起業について', spot: '松阪のパフェ屋', message: 'ママさんと交流したい' },
  { id: 14, name: 'こうじ', avatar: '🐧', area: 'kenngai', age: '40代', count: 'second',
    themes: ['fuyasu', 'kasegu', 'study'], action: '愛知から三重に通うため新幹線割引調査',
    talk: '県外から参加の方の交流', spot: '伊勢うどん', message: '愛知からです！' },
  { id: 15, name: 'なお', avatar: '🌙', area: 'suzuka', age: '20代', count: 'first',
    themes: ['kasegu', 'design', 'douga'], action: 'ココナラで初めて案件受注',
    talk: 'デザイン案件の単価', spot: 'すずかの森ベーカリー', message: '20代クリエイター' },
  { id: 16, name: 'まなみ', avatar: '☕', area: 'ise', age: '50代', count: 'second',
    themes: ['tameru', 'health', 'mamoru'], action: '電気・ガスのプランを見直した',
    talk: 'シニア向けの節約', spot: '伊勢角屋麦酒', message: '同年代の方々と' },
  { id: 17, name: 'ともや', avatar: '🚲', area: 'yokkaichi', age: '30代', count: 'second',
    themes: ['kasegu', 'sns', 'travel'], action: 'X(旧Twitter)を毎日投稿1週間',
    talk: 'SNS伸ばし方', spot: '四日市港のカフェ', message: 'SNS運用してる方歓迎' },
  { id: 18, name: 'りえ', avatar: '🐱', area: 'tsu', age: '40代', count: 'first',
    themes: ['family', 'study', 'tameru'], action: '子供と一緒にお小遣い帳をつけ始めた',
    talk: 'マネー教育のリアル', spot: '津まつり', message: '子育てママと交流したい' },
  { id: 19, name: 'しょう', avatar: '🌿', area: 'iga', age: '20代', count: 'first',
    themes: ['program', 'study', 'fuyasu'], action: 'AI学習教材を毎日触ってる',
    talk: 'AI活用の最前線', spot: '名張の蕎麦', message: '若手エンジニア募集' },
  { id: 20, name: 'ゆき', avatar: '🐰', area: 'kuwana', age: '30代', count: 'second',
    themes: ['handmade', 'sns', 'kasegu'], action: 'minneにハンドメイド5点出品',
    talk: 'ハンドメイド販売のコツ', spot: 'なばなの里', message: 'ものづくり系の方と' },
  { id: 21, name: 'やすし', avatar: '🐢', area: 'tsu', age: '60代〜', count: 'first',
    themes: ['mamoru', 'health', 'travel'], action: 'スクワットを毎日10回',
    talk: '健康投資について', spot: '津ぎょうざ', message: 'シニアの先輩募集' },
  { id: 22, name: 'みさき', avatar: '🐚', area: 'toba', age: '30代', count: 'first',
    themes: ['travel', 'family', 'sns'], action: '家族旅行の予算を立てた',
    talk: '旅行系副業について', spot: '答志島のひもの', message: '初参加です' },
  { id: 23, name: 'たかし', avatar: '🦌', area: 'matsusaka', age: '50代', count: 'second',
    themes: ['fuyasu', 'mamoru', 'study'], action: 'iDeCo口座を開設',
    talk: '50代からの資産形成', spot: '松阪のうなぎ', message: '50代の方々と' },
  { id: 24, name: 'あゆみ', avatar: '🌾', area: 'tsu', age: '40代', count: 'first',
    themes: ['writing', 'study', 'family'], action: '読書を週3冊ペースで再開',
    talk: '読書記録の活用法', spot: '津の本屋カフェ', message: '読書好きと話したい' },
];

// シンプルなグローバルストア (React外でも参照可能)
const store = {
  participants: [...PARTICIPANTS_SEED],
  listeners: new Set(),
  subscribe(fn) { this.listeners.add(fn); return () => this.listeners.delete(fn); },
  notify() { this.listeners.forEach(fn => fn()); },
  add(p) {
    this.participants = [{ ...p, id: Date.now() }, ...this.participants];
    this.notify();
  },
};

function useStore() {
  const [, setTick] = React.useState(0);
  React.useEffect(() => store.subscribe(() => setTick(t => t + 1)), []);
  return store;
}

Object.assign(window, { MIE_AREAS, AGE_RANGES, ATTEND_COUNT, PARTICIPANTS_SEED, store, useStore });
