// Common helpers shared across variations: placeholders, simple line icons,
// and shared data (services, faq, etc.). Exposed via window.

// ────────── Placeholder image ──────────
// Striped svg with monospace label of what should go here.
const Placeholder = ({ label = 'image', width = '100%', height = 200, accent = '#8b6f4e', radius = 0, style = {} }) => {
  return (
    <div style={{
      width, height,
      borderRadius: radius,
      background: `repeating-linear-gradient(135deg, ${accent}1f 0 8px, ${accent}0a 8px 16px)`,
      display: 'flex', alignItems: 'center', justifyContent: 'center',
      fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace',
      fontSize: 11, letterSpacing: 0.5,
      color: accent,
      border: `1px dashed ${accent}55`,
      overflow: 'hidden',
      position: 'relative',
      ...style,
    }}>
      <span style={{ background: 'rgba(255,255,255,0.7)', padding: '4px 8px', borderRadius: 3 }}>{label}</span>
    </div>
  );
};

// ────────── Tiny line icons (stroke-based) ──────────
const Icon = ({ name, size = 24, color = 'currentColor', stroke = 1.5 }) => {
  const c = { fill: 'none', stroke: color, strokeWidth: stroke, strokeLinecap: 'round', strokeLinejoin: 'round' };
  const paths = {
    coin: <g {...c}><circle cx="12" cy="12" r="8" /><path d="M9 10c0-1 1-2 3-2s3 1 3 2c0 2-6 2-6 4 0 1 1 2 3 2s3-1 3-2" /><path d="M12 6v1M12 17v1" /></g>,
    house: <g {...c}><path d="M4 11l8-7 8 7" /><path d="M6 10v9h12v-9" /><path d="M10 19v-5h4v5" /></g>,
    chart: <g {...c}><path d="M4 4v16h16" /><path d="M7 15l3-4 3 2 4-7" /></g>,
    book: <g {...c}><path d="M5 4h11a2 2 0 012 2v14H7a2 2 0 01-2-2V4z" /><path d="M5 4v14a2 2 0 002 2" /></g>,
    leaf: <g {...c}><path d="M5 19c0-8 7-14 14-14 0 8-6 14-14 14z" /><path d="M5 19l8-8" /></g>,
    heart: <g {...c}><path d="M12 20s-7-4.5-7-10a4 4 0 017-2.6A4 4 0 0119 10c0 5.5-7 10-7 10z" /></g>,
    mail: <g {...c}><rect x="3" y="6" width="18" height="13" rx="1.5" /><path d="M3 7l9 7 9-7" /></g>,
    phone: <g {...c}><path d="M5 4h3l2 5-2 1c1 2.5 2.5 4 5 5l1-2 5 2v3a2 2 0 01-2 2A14 14 0 015 6a2 2 0 010-2z" /></g>,
    arrow: <g {...c}><path d="M5 12h14M13 6l6 6-6 6" /></g>,
    arrowDown: <g {...c}><path d="M12 5v14M6 13l6 6 6-6" /></g>,
    check: <g {...c}><path d="M5 13l4 4 10-10" /></g>,
    plus: <g {...c}><path d="M12 5v14M5 12h14" /></g>,
    minus: <g {...c}><path d="M5 12h14" /></g>,
    user: <g {...c}><circle cx="12" cy="8" r="4" /><path d="M4 21c0-4 4-7 8-7s8 3 8 7" /></g>,
    family: <g {...c}><circle cx="8" cy="8" r="3" /><circle cx="16" cy="9" r="2.5" /><path d="M3 19c0-3 2.5-5 5-5s5 2 5 5" /><path d="M13 19c0-2 1.5-4 3-4s3 1.5 3 4" /></g>,
    star: <g {...c}><path d="M12 4l2.4 5 5.6.8-4 4 1 5.6-5-2.8-5 2.8 1-5.6-4-4 5.6-.8z" /></g>,
    seed: <g {...c}><path d="M12 20c0-6 3-10 8-10-1 6-4 10-8 10z" /><path d="M12 20c0-6-3-10-8-10 1 6 4 10 8 10z" /><path d="M12 20v-6" /></g>,
    calendar: <g {...c}><rect x="4" y="6" width="16" height="14" rx="1.5" /><path d="M4 10h16M9 3v4M15 3v4" /></g>,
    sparkle: <g {...c}><path d="M12 4l1.5 5 5 1.5-5 1.5L12 17l-1.5-5-5-1.5 5-1.5z" /></g>,
    quote: <g {...c}><path d="M6 17V11a4 4 0 014-4M14 17v-6a4 4 0 014-4" /></g>,
    money: <g {...c}><rect x="3" y="7" width="18" height="11" rx="1.5" /><circle cx="12" cy="12.5" r="2.5" /><path d="M6 10v.01M18 15v.01" /></g>,
    pig: <g {...c}><path d="M5 14c0-4 3-7 7-7s7 3 7 7c0 2-1 4-3 5l-1 2h-2v-2h-2v2H9l-1-2c-2-1-3-3-3-5z" /><path d="M3 12h2M16 11v.01" /></g>,
    school: <g {...c}><path d="M3 9l9-4 9 4-9 4z" /><path d="M7 10.5v5c0 1.5 2 3 5 3s5-1.5 5-3v-5" /><path d="M21 9v6" /></g>,
  };
  return <svg viewBox="0 0 24 24" width={size} height={size}>{paths[name] || paths.sparkle}</svg>;
};

// ────────── Shared content data ──────────
const OFFICE_NAME = 'ゆりママFP事務所';
const FP_NAME = 'ゆりママ';
const FP_NAME_EN = 'YURI MAMA';
const FP_ROLE = '独立系ファイナンシャルプランナー ／ 保育士 ／ 2児のワーママ';

const PROMISE_POINTS = [
  { icon: 'heart', en: 'NEUTRAL', title: '中立な立場', desc: 'どの保険会社・金融機関とも無関係。あなたにとって本当に必要なことだけをお伝えします。' },
  { icon: 'leaf', en: 'EMPATHY', title: '寄り添う姿勢', desc: '数字より先に、あなたの状況と気持ちをしっかり聞くところから始めます。' },
  { icon: 'book', en: 'PLAIN', title: 'わかりやすく', desc: '難しい専門用語は使いません。「なるほど！」と思えるまで一緒に確認します。' },
];

const SERVICES = [
  {
    icon: 'chart',
    title: 'ワーママのライフプラン作成',
    sub: 'Life Plan',
    tag: 'ライフプランをゼロから作りたい方向け',
    desc: '現状の家計・収支・資産を整理し、教育費・老後・住宅まで「見える化」したライフプラン表を一緒に作ります。「これで本当に大丈夫？」が「大丈夫！」に変わります。',
    points: ['家計と収支の現状把握', '教育費・老後・住宅の見える化', 'ライフプラン表の共同作成'],
    badge: '★ 主力・おすすめ',
    recommend: true,
  },
  {
    icon: 'pig',
    title: '家計・ライフプランのモヤモヤ相談',
    sub: 'Moya-Moya Talk',
    tag: 'すでに家計管理はしているけど、モヤモヤが残っている方向け',
    desc: '「節約はしてるのになんか不安」「このまま続けていいの？」そんなモヤモヤを一緒に言語化して、スッキリ整理します。',
    points: ['漠然とした不安の言語化', '優先順位の整理', '次の一歩のすり合わせ'],
  },
  {
    icon: 'heart',
    title: '個別相談｜本音から答えが見つかる45分',
    sub: 'Heart-to-Heart',
    tag: '「何が不安かもわからない」「人生どうしたらいいか」という方向け',
    desc: '数字よりも気持ちが先に来る方のための相談窓口。「うまく言葉にできないけど、なんかしんどい」でも大丈夫です。',
    points: ['気持ちの整理から', '言葉にできない不安もOK', 'お一人で抱え込まない'],
  },
];

const PROCESS_STEPS = [
  { step: '01', title: 'お問い合わせ', desc: 'お問い合わせ・お申し込みフォームから、ご希望の内容や日時をお送りください。' },
  { step: '02', title: '日程調整', desc: 'メールにてご返信し、相談日時を確定します。' },
  { step: '03', title: '相談（オンライン）', desc: 'Zoomでお話を伺い、ご家族のこれからを一緒に考えます。' },
  { step: '04', title: 'アフターフォロー', desc: 'ご希望に応じて、継続伴走プランで定期的な見直しも可能です。' },
];

const PRICING = [
  {
    name: 'ワーママのライフプラン作成',
    tag: 'ライフプランをゼロから作りたい方向け',
    desc: '現状の家計・収支・資産を整理し、教育費・老後・住宅まで「見える化」したライフプラン表を一緒に作ります。',
    tiers: [
      { label: '基本・2セッション', price: '30,000円' },
      { label: 'ライト', price: '18,000円' },
    ],
    recommend: true,
  },
  {
    name: '家計・ライフプランのモヤモヤ相談',
    tag: 'すでに家計管理はしているけど、モヤモヤが残っている方向け',
    desc: '「節約はしてるのになんか不安」「このまま続けていいの？」そんなモヤモヤを一緒に言語化して、スッキリ整理します。',
    tiers: [
      { label: '単発60分', price: '10,000円' },
      { label: '2回', price: '19,000円' },
      { label: '3回伴走', price: '27,000円' },
    ],
  },
  {
    name: '個別相談｜本音から答えが見つかる45分',
    tag: '「何が不安かもわからない」「人生どうしたらいいか」という方向け',
    desc: '数字よりも気持ちが先に来る方のための相談窓口。「うまく言葉にできないけど、なんかしんどい」でも大丈夫です。',
    tiers: [
      { label: '45分', price: '8,000円', sub: '延長15分ごと +2,000円' },
    ],
  },
];

const TESTIMONIALS = [
  { who: '30代 / 共働き・お子さま1人', area: '東京都', text: '保険を売られるのが怖くて相談に行けずにいましたが、ゆりさんは中立で安心。家計の優先順位がスッと整理できました。' },
  { who: '40代 / 専業主婦・お子さま2人', area: '神奈川県', text: '住宅購入と教育費の両立に悩んでいました。具体的な数字で見せてもらえたので、夫婦で納得して決められました。' },
  { who: '30代 / 個人事業主', area: 'オンライン', text: 'NISAは「なんとなく」でやっていましたが、目的に合わせて整理してもらい、迷いがなくなりました。' },
];

const FAQS = [
  { q: '保険を勧められたりしませんか？', a: 'ご安心ください。保険・投資商品の販売は一切行っておりません。独立系FPとして、どの保険会社・金融機関とも利害関係なく、中立な立場でアドバイスします。' },
  { q: '家計が恥ずかしい状態でも相談できますか？', a: 'もちろんです！「家計をちゃんとしたい」という気持ちがあれば、今の状態は関係ありません。そこから一緒に整理していくのが得意なことです。' },
  { q: 'どのメニューを選べばいいかわかりません', a: 'お問い合わせフォームに「こんな悩みがある」と書いていただければ、一番合ったメニューをご提案します。迷ったままでもお気軽にどうぞ！' },
  { q: '対応時間を教えてください', a: '平日 9:30～15:00 を基本としています（土日祝は状況により対応）。フォームへのご返信も同じ時間帯となります。' },
];

const BLOG_POSTS = [
  { cat: '家計', date: '2026.05.18', title: '新NISAは「とりあえず満額」が正解？子育て世帯の優先順位', read: '5分' },
  { cat: '住宅', date: '2026.05.10', title: 'ペアローンと連帯債務、共働き夫婦はどちらが得？', read: '7分' },
  { cat: '教育', date: '2026.05.02', title: '学資保険 vs つみたて投資。我が家の選択基準', read: '6分' },
  { cat: 'コラム', date: '2026.04.24', title: '1,200万円失敗した私が、お金の専門家になるまで', read: '8分' },
];

const SEMINARS = [
  { date: '2026.06.15', day: '土', time: '10:00-11:30', title: '【無料】新NISA入門 — ママのための始め方講座', place: 'オンライン', spots: '残席5' },
  { date: '2026.06.28', day: '土', time: '14:00-16:00', title: '住宅購入前に知っておきたいお金のこと', place: '都内会場', spots: '満席' },
  { date: '2026.07.06', day: '日', time: '10:00-11:30', title: '教育費 「いつ」「いくら」を可視化するワークショップ', place: 'オンライン', spots: '受付中' },
];

const CREDENTIALS = [
  '独立系ファイナンシャルプランナー',
  '2級ファイナンシャル・プランニング技能士',
  '保育士',
  '2児のワーママ',
];

Object.assign(window, {
  Placeholder, Icon,
  OFFICE_NAME, FP_NAME, FP_NAME_EN, FP_ROLE, PROMISE_POINTS,
  SERVICES, PROCESS_STEPS, PRICING, TESTIMONIALS, FAQS, BLOG_POSTS, SEMINARS, CREDENTIALS,
});
