// Naviyell — mock data shared across all screens

// ─── Inner Type Guide ─────────────────────────────────────────────
// Born Inner Type: 12 zodiac patterns → 4 elements (Fire / Earth / Wind / Water)
// (We never show zodiac names — only elements + traits)
const BORN_TYPE_BY_MONTH = [
  // [startMonth, startDay, type]
  { until: [1, 19],  type: 'earth' },  // Capricorn
  { until: [2, 18],  type: 'wind' },   // Aquarius
  { until: [3, 20],  type: 'water' },  // Pisces
  { until: [4, 19],  type: 'fire' },   // Aries
  { until: [5, 20],  type: 'earth' },  // Taurus
  { until: [6, 21],  type: 'wind' },   // Gemini
  { until: [7, 22],  type: 'water' },  // Cancer
  { until: [8, 22],  type: 'fire' },   // Leo
  { until: [9, 22],  type: 'earth' },  // Virgo
  { until: [10, 22], type: 'wind' },   // Libra
  { until: [11, 21], type: 'water' },  // Scorpio
  { until: [12, 21], type: 'fire' },   // Sagittarius
  { until: [12, 31], type: 'earth' },  // Capricorn (late Dec)
];
function bornTypeFromBirthday(month, day) {
  for (const r of BORN_TYPE_BY_MONTH) {
    if (month < r.until[0] || (month === r.until[0] && day <= r.until[1])) return r.type;
  }
  return 'earth';
}
const ELEMENTS = {
  wind:  { key: 'wind',  label: '風',  labelEn: 'Wind',  color: '#7FA9C9', accent: '#5A8AB0',
           desc: '柔軟・変化・つながり。新しい風を運び、人と人を結ぶ存在。' },
  fire:  { key: 'fire',  label: '火',  labelEn: 'Fire',  color: '#D87858', accent: '#B25A3D',
           desc: '情熱・行動・変革。意志の力で前へ進み、周りに熱を伝える存在。' },
  earth: { key: 'earth', label: '土',  labelEn: 'Earth', color: '#A89368', accent: '#7F6E47',
           desc: '安定・継続・育成。じっくりと根を張り、確かなものを積み上げる存在。' },
  water: { key: 'water', label: '水',  labelEn: 'Water', color: '#6B8DA8', accent: '#4A6B85',
           desc: '深さ・感受性・つなぎ。感情の流れを大切に、人の内面に寄り添う存在。' },
};

// ─── 30 questions for Current Inner Sign ──────────────────────────
// Each option maps to an energy: 0 = 風 Wind, 1 = 火 Fire, 2 = 土 Earth
// Order is always [Wind, Fire, Earth] left-to-right per spec
const DIAG_QUESTIONS = [
  { q: 'ふと何かをしようと思ったとき、あなたはどうしますか？', opts: ['すぐ体が動いてしまう', 'じっくり計画してから動く', '気持ちが動いてから行動する'] },
  { q: 'お腹が空いたとき、あなたはどちらに近いですか？', opts: ['すぐ食べないと気になる', '食事の時間まで待てる', '食べることが好きで食欲がある'] },
  { q: '肌はどんな状態が続きやすいですか？', opts: ['乾燥しやすい', '脂っぽい・赤みが出やすい', 'しっとりしているが冷えやすい'] },
  { q: '眠りのパターンはどちらに近いですか？', opts: ['寝つきが悪い・眠りが浅い', 'よく眠れるが体が熱い感じがある', 'とにかくよく眠れる・起きるのが辛い'] },
  { q: '気温の変化に対して、どう感じることが多いですか？', opts: ['寒さが苦手', '暑さが苦手', '湿気・冷えが苦手'] },
  { q: '気分の波は、どんなパターンが多いですか？', opts: ['コロコロ変わりやすい', '一度点火すると激しくなる', '穏やかだがたまりやすい'] },
  { q: '人と話しているとき、自分の話し方はどちらに近いですか？', opts: ['早口・話が飛びやすい', 'しっかり伝えたくて熱が入る', 'ゆっくり・丁寧に話す'] },
  { q: '何かが気になったとき、どうすることが多いですか？', opts: ['すぐ別のことも気になってしまう', '解決するまで頭から離れない', '時間が経つと自然に落ち着く'] },
  { q: '体型・体質はどちらに近いですか？', opts: ['細身で太りにくい', '中程度で筋肉がつきやすい', 'しっかりした体格で体重が増えやすい'] },
  { q: 'ストレスを感じたとき、体にどんな反応が出ますか？', opts: ['頭痛・肩こり・不安感', '胃のもたれ・肌荒れ・イライラ', '体の重さ・やる気のなさ・むくみ'] },
  { q: '人との関わり方で、あなたはどちらに近いですか？', opts: ['広く多くの人と関わりたい', '少数でも深い関係を大切にする', '信頼できる人と長く付き合う'] },
  { q: '新しいことに挑戦するとき、どう感じますか？', opts: ['ワクワクして先へ進みたくなる', '目標を設定してから動く', '慣れるまで時間がかかる'] },
  { q: '忘れ物やうっかりミスはどのくらいありますか？', opts: ['多い方', 'ほとんどない・きちんとしている', 'ないが動き出しが遅いことがある'] },
  { q: '消化器の調子は、どのパターンが多いですか？', opts: ['お腹が張る・ガスが出やすい', '下痢や軟便になりやすい', '胃腸は丈夫だが重い食事が続くとつらい'] },
  { q: '物事を決めるとき、どんなプロセスが多いですか？', opts: ['直感でパッと決める', '納得できる理由を考えて決める', '時間をかけてゆっくり決める'] },
  { q: '今、身体に感じるエネルギーはどちらに近いですか？', opts: ['動き回りたい・落ち着かない感じ', '何かに集中したい・燃えている感じ', 'のんびりしたい・安定している感じ'] },
  { q: '最近の肌や髪の状態は？', opts: ['乾燥・パサつき', 'べたつき・炎症・赤み', '潤っているが冷えやすい'] },
  { q: '心が揺れるのはどんなときが多いですか？', opts: ['先の見えない不安や変化に揺れる', '不公平・理不尽に感じるとき', '人間関係で傷ついたと感じるとき'] },
  { q: '仕事や作業のペースはどちらに近いですか？', opts: ['速くこなすが飽きやすい', '集中力が高く完成度を求める', 'ゆっくりだが最後までやり遂げる'] },
  { q: '季節や天気で体の調子が変わると感じますか？', opts: ['風が強い日・乾燥する季節に崩れやすい', '夏・湿度が高い日に崩れやすい', '冬・雨の多い時期に体が重くなる'] },
  { q: '声や話すスピードの特徴はどちらに近いですか？', opts: ['高め・軽め・早口になりがち', 'しっかりしていて力がこもりやすい', '低め・ゆったり・落ち着いた声'] },
  { q: '今の暮らしで気になっていることは？', opts: ['落ち着けない・ソワソワすることが多い', '何かにこだわりが強い・イライラする', '動く気力が湧かない・だるい'] },
  { q: '人にアドバイスするとき、あなたはどちらに近いですか？', opts: ['アイデアをどんどん出す', 'ロジカルに整理して伝える', '相手の気持ちに寄り添って話す'] },
  { q: '食事の好みはどちらに近いですか？', opts: ['軽い・さっぱりしたものが好き', 'スパイシー・刺激的なものが好き', 'こってり・甘いものが好きなことがある'] },
  { q: '変化や新しい環境に対して、どう感じますか？', opts: ['楽しめる反面、疲れやすい', 'チャレンジとして前向きに受け取る', '慣れるまでに時間がかかる'] },
  { q: '休日の過ごし方で自然に選ぶのはどれに近いですか？', opts: ['外出・いろいろなことをしたい', '目的を持って動く・スポーツや学習', 'ゆっくり家で過ごしたい'] },
  { q: 'お金の使い方のパターンはどちらに近いですか？', opts: ['気がつくと使ってしまっている', '目的のためにしっかり使う', 'なかなか使えない・ためがち'] },
  { q: '怒りの感じ方はどちらに近いですか？', opts: ['すぐ沸くがすぐ忘れる', 'じわじわと燃え上がる', 'めったに怒らないが長く引きずる'] },
  { q: '笑い方や表情の動きはどちらに近いですか？', opts: ['コロコロ変わる・くるくる動く', '表情豊かで熱がこもる', '穏やかで変化が少ない'] },
  { q: '最後に。今この瞬間、あなたが一番感じているのは？', opts: ['なんだか落ち着かない・動きたい', '何かに熱中したい・やる気がある', 'ゆっくりしたい・のんびりしたい'] },
];
// 0 = wind, 1 = fire, 2 = earth
const DIAG_ENERGY = ['wind', 'fire', 'earth'];

// Compute the current sign pattern from per-question answers.
// Returns { wind, fire, earth, total, dominant: 'wind'|'fire'|'earth'|'wind+fire'|'wind+earth'|'fire+earth'|'trinity' }
function computeCurrentSign(answers) {
  const counts = { wind: 0, fire: 0, earth: 0 };
  let total = 0;
  for (const v of Object.values(answers)) {
    if (v == null) continue;
    // 'none' (どちらでもない) and any non-element value don't bias the result
    if (v !== 0 && v !== 1 && v !== 2) continue;
    counts[DIAG_ENERGY[v]]++;
    total++;
  }
  if (total === 0) return { wind: 0, fire: 0, earth: 0, total: 0, dominant: 'trinity' };
  const pct = {
    wind:  Math.round((counts.wind / total) * 100),
    fire:  Math.round((counts.fire / total) * 100),
    earth: Math.round((counts.earth / total) * 100),
  };
  const sorted = Object.entries(pct).sort((a, b) => b[1] - a[1]);
  const [first, second, third] = sorted;
  let dominant;
  // trinity: all within 10%
  if (first[1] - third[1] <= 12) dominant = 'trinity';
  // single pure: first dominates by ≥20% over second
  else if (first[1] - second[1] >= 20) dominant = first[0];
  // mixed: top 2
  else dominant = [first[0], second[0]].sort().join('+');
  return { ...pct, total, dominant };
}

// Personalized message for the (born × current) pair
function pairMessage(bornType, currentDom) {
  const bornEl = ELEMENTS[bornType];
  if (!bornEl) return '';
  const dominantLabel = currentDom === 'trinity'
    ? '風・火・土がバランスしている状態'
    : currentDom.split('+').map(k => ELEMENTS[k].label).join('と') + 'のエネルギー';

  // Same element vs different: highlight alignment or gap
  if (bornType === currentDom) {
    return `生まれながらの「${bornEl.label}のサイン」と、いまのあなたの「${dominantLabel}」が一致しています。本来の自分のリズムに沿って生きられている時期かもしれません。この感覚を、これからも大切にしていきましょう。`;
  }
  if (currentDom === 'trinity') {
    return `生まれながらの「${bornEl.label}のサイン」に対して、いまは${dominantLabel}です。3つのエネルギーが調和している、とても整った状態。本来の${bornEl.label}の質を活かしながら、次の一歩を選びやすい時期です。`;
  }
  return `生まれながらの「${bornEl.label}のサイン」に対して、いまのあなたは${dominantLabel}が強く出ています。本来の自分から少し離れた場所にいるかもしれません。「いまの自分が少し生きづらい」と感じるなら、二つが離れているからかもしれません。少しずつ${bornEl.label}の質に立ち戻る時間を持つと、楽になっていきます。`;
}

const MOCK_USER = {
  displayName: '美咲',
  type: 'wind',
  typeLabel: '風のサイン',
  typeDesc: '柔軟で適応力があり、新しい風を運ぶ存在。変化を恐れず、人と人を繋げる役割を持ちます。',
  joinedAt: '2024年9月',
  // Defaults — overridden by user diagnosis
  bornType: 'water', // 7/15 → Cancer → water
  birthMonth: 7,
  birthDay: 15,
  currentDom: 'wind+fire',
  currentMix: { wind: 47, fire: 33, earth: 20 },
};

const MOCK_ANCHORS = [
  { id: 'a1', name: '葉月 凛', tagline: '心理学者・キャリアコーチ', rating: 4.9, sessionCount: 312, verified: true,
    specialties: ['心のアンカー', '未来のアンカー'], color: '#7A6FB8',
    bio: '15年間、企業の管理職向けキャリアカウンセリングに携わってきました。人生の節目で迷われている方に、静かに寄り添います。' },
  { id: 'a2', name: '霧島 あおい', tagline: '占星術師・タロット鑑定', rating: 4.8, sessionCount: 528, verified: true,
    specialties: ['未来のアンカー', '社会的なアンカー'], color: '#4A6FA5',
    bio: '20年以上のタロット・西洋占星術の経験。具体的なアドバイスと優しい言葉で、迷いを希望に変えます。' },
  { id: 'a3', name: '森下 智子', tagline: '臨床心理士', rating: 4.9, sessionCount: 184, verified: true,
    specialties: ['心のアンカー'], color: '#5B8C5A',
    bio: '医療現場での経験を活かし、ストレスや人間関係の悩みに専門的にお応えします。' },
  { id: 'a4', name: '楠木 正人', tagline: 'ライフプランナー', rating: 4.7, sessionCount: 96, verified: false,
    specialties: ['未来のアンカー', '社会的なアンカー'], color: '#B8754A',
    bio: 'お金と未来の不安に向き合うお手伝いをします。具体的な数字と希望の両面から。' },
];

const MOCK_TICKETS = [
  { id: 't1', anchorId: 'a1', title: 'キャリアの方向性を一緒に考えます', category: '未来のアンカー',
    catColor: '#4A6FA5', format: 'チャット', durationDesc: 'チャット3往復まで',
    price: 6600, rating: 4.9, reviewCount: 87,
    desc: '40代以降のキャリアの分岐点に立つあなたへ。これまでの経験を棚卸しし、これからの3年間で進むべき方向を一緒に整理します。',
    forWhom: ['転職を検討しているが踏み切れない方', '今の仕事に違和感を感じている方', '人生の後半戦をどう過ごすか悩んでいる方'] },
  { id: 't2', anchorId: 'a2', title: '今年下半期の運勢と取るべき行動', category: '未来のアンカー',
    catColor: '#4A6FA5', format: 'チャット', durationDesc: 'チャット5往復まで',
    price: 4400, rating: 4.8, reviewCount: 142,
    desc: '西洋占星術であなたの星の配置を読み解き、これから半年間の運の流れと、その中であなたが取るべき具体的な行動をお伝えします。',
    forWhom: ['具体的な行動指針が欲しい方', '運の流れを掴みたい方', 'タイミングを見極めたい方'] },
  { id: 't3', anchorId: 'a3', title: '人間関係のストレスを整理する60分', category: '心のアンカー',
    catColor: '#7A6FB8', format: 'チャット', durationDesc: 'チャット4往復まで',
    price: 5500, rating: 4.9, reviewCount: 64,
    desc: '職場や家族との関係で感じている重さを、心理学の視点から一緒に整理します。話すだけでも軽くなります。',
    forWhom: ['誰にも相談できずに溜め込んでいる方', '同じパターンで悩み続けている方'] },
  { id: 't4', anchorId: 'a4', title: '老後資金の不安を見える化する', category: '社会的なアンカー',
    catColor: '#B8754A', format: 'チャット', durationDesc: 'チャット3往復まで',
    price: 5500, rating: 4.7, reviewCount: 38,
    desc: '漠然とした老後の不安を、具体的な数字に落とし込みます。今日からできる小さな一歩までご提案します。',
    forWhom: ['老後資金が心配な方', 'お金の話を誰かと整理したい方'] },
];

const MOCK_REVIEWS = [
  { id: 'r1', initial: 'M', rating: 5, date: '2025/03/12',
    text: '丁寧に話を聞いてくださり、自分でも気づかなかった視点をいただけました。次の一歩が見えました。' },
  { id: 'r2', initial: 'K', rating: 5, date: '2025/02/28',
    text: '具体的なアドバイスがとてもありがたく、その日のうちに行動に移せました。' },
  { id: 'r3', initial: 'Y', rating: 4, date: '2025/02/15',
    text: '優しく寄り添ってくださる姿勢に救われました。また機会があればお願いしたいです。' },
];

const MOCK_ACTIONS = [
  { id: 'ac1', desc: '今週中に転職エージェント1社に登録する', cat: '未来のアンカー', catColor: '#4A6FA5',
    due: '3/28（金）', done: false, source: '葉月 凛' },
  { id: 'ac2', desc: '5分間、深呼吸の時間を朝に作る', cat: '心のアンカー', catColor: '#7A6FB8',
    due: '毎日', done: true, source: '森下 智子' },
  { id: 'ac3', desc: '家族に今の気持ちを伝える機会を作る', cat: '心のアンカー', catColor: '#7A6FB8',
    due: '3/30（日）', done: false, source: '森下 智子' },
  { id: 'ac4', desc: '毎月の固定費をリスト化する', cat: '社会的なアンカー', catColor: '#B8754A',
    due: '3/31（月）', done: false, source: '楠木 正人' },
  { id: 'ac5', desc: '週3回、20分散歩する', cat: '体のアンカー', catColor: '#5B8C5A',
    due: '毎週', done: true, source: '森下 智子' },
];

const MOCK_THREADS = [
  { id: 'th1', anchorId: 'a1', preview: '今週の取り組みはいかがでしたか？小さな変化でも教えてください。', time: '14:32', unread: true },
  { id: 'th2', anchorId: 'a3', preview: '前回お話しした深呼吸、続けられていますか？', time: '昨日', unread: true },
  { id: 'th3', anchorId: 'a2', preview: 'ありがとうございました。また何かあればいつでも。', time: '3/15', unread: false },
];

const MOCK_NOTIFICATIONS = [
  { id: 'n1', icon: 'cal', title: 'セッションが承認されました', body: '葉月 凛さんとのセッション（3/26 14:00）が承認されました。', time: '2時間前', unread: true },
  { id: 'n2', icon: 'bell', title: 'セッションのリマインダー', body: '明日 14:00 から葉月 凛さんとのセッションです。', time: '昨日', unread: true },
  { id: 'n3', icon: 'msg', title: '新しいメッセージ', body: '森下 智子さんからメッセージが届いています。', time: '昨日', unread: false },
  { id: 'n4', icon: 'star', title: 'レビューをお願いします', body: '霧島 あおいさんとのセッションの感想をお聞かせください。', time: '3/15', unread: false },
];

const MOCK_PAYMENTS = [
  { id: 'p1', date: '2025/03/20', title: 'キャリアの方向性を一緒に考えます', anchor: '葉月 凛', amount: 6600, status: '完了' },
  { id: 'p2', date: '2025/03/05', title: '人間関係のストレスを整理する60分', anchor: '森下 智子', amount: 5500, status: '完了' },
  { id: 'p3', date: '2025/02/14', title: '今年下半期の運勢と取るべき行動', anchor: '霧島 あおい', amount: 4400, status: '完了' },
  { id: 'p4', date: '2025/01/28', title: '人間関係のストレスを整理する60分', anchor: '森下 智子', amount: 5500, status: '返金済み' },
];

Object.assign(window, {
  MOCK_USER, MOCK_ANCHORS, MOCK_TICKETS, MOCK_REVIEWS,
  MOCK_ACTIONS, MOCK_THREADS, MOCK_NOTIFICATIONS, MOCK_PAYMENTS,
  ELEMENTS, BORN_TYPE_BY_MONTH, bornTypeFromBirthday,
  DIAG_QUESTIONS, DIAG_ENERGY, computeCurrentSign, pairMessage,
});
