// アドラー心理学のホームページ — メインアプリ

const { useState, useEffect, useRef } = React;

// ─── データ ─────────────────────────────────────────────
const PILLARS = [
{
  id: "teleology",
  num: "01",
  en: "Teleology",
  title: "目的論",
  desc: "「なぜそうなったか（原因論）」ではなく、「何のためにそうしているか（目的論）」で人を見つめなおす。過去ではなく、これからを生きる視点。",
  photo: "https://images.unsplash.com/photo-1469474968028-56623f02e42e?w=1200&q=80",
  body: [
  "アドラー心理学は、人の行動を「過去の原因」ではなく「未来へ向かう目的」から理解しようとします。「不安だから外に出られない」のではなく、「外に出ないという目的のために、不安という感情を作り出している」と捉えるのです。",
  "この見方は冷たいようでいて、実はとてもやさしい。なぜなら、目的を変えれば、私たちはいつでも変われる、ということだから。過去にしばられた人生ではなく、これから何を選ぶかが、私たち自身を作っていくのです。"],

  pull: "「人は感情に支配されているのではなく、感情を使っている」",
  examples: [
  "怒りは「相手を屈服させる」という目的のために選ばれた感情",
  "落ち込みは「責任から逃れる」ための手段になりうる",
  "「できない」という言葉は、挑戦を避ける目的をもつことがある"]

},
{
  id: "separation",
  num: "02",
  en: "Separation of Tasks",
  title: "課題の分離",
  desc: "「これは誰の課題なのか？」を問いなおす。他者の課題に踏み込まず、自分の課題に向き合う。シンプルだけれど人生を軽くする考え方。",
  photo: "https://images.unsplash.com/photo-1502082553048-f009c37129b9?w=1200&q=80",
  body: [
  "悩みのほとんどは、人間関係から生まれます。アドラーは、その絡まりをほどく鍵として「課題の分離」を説きました。ある行動の結末を引き受けるのは誰か。それを引き受ける人の課題に、他人は土足で踏み込んではならない。",
  "親が子に「勉強しなさい」と言うのは、子の課題に介入すること。上司が部下の評価を気にしすぎて指示を変えるのは、部下の感情を自分の課題と混ぜていること。線をひくとは、冷たくなることではなく、むしろ尊重すること。"],

  pull: "「他者の期待を満たすために生きてはいけない」",
  examples: [
  "相手がどう感じるかは、相手の課題",
  "自分がどう行動するかは、自分の課題",
  "「嫌われる勇気」は、課題を分けたあとに自然と立ち上がる"]

},
{
  id: "community",
  num: "03",
  en: "Community Feeling",
  title: "共同体感覚",
  desc: "私はここにいてよい。誰かの役に立てる。そう思えることが、健やかな心の土台になる。アドラー心理学のゴールにある、あたたかな感覚。",
  photo: "https://images.unsplash.com/photo-1529156069898-49953e39b3ac?w=1200&q=80",
  body: [
  "アドラーは、人の幸福は「共同体感覚（Gemeinschaftsgefühl）」のうちにあると言いました。自分が大きなつながりの一部であり、そこに居場所があり、誰かに貢献できているという感覚。これは「与えること」によって、ようやく満たされていくものです。",
  "ここでの共同体は家族や会社にとどまりません。地域、社会、人類、さらには動植物や宇宙まで広がります。自分のためだけに生きるのではなく、何かのために生きると気づくとき、人は静かに勇気を取り戻します。"],

  pull: "「すべての悩みは対人関係の悩みである。けれど、すべての喜びもまたそうなのだ」",
  examples: [
  "自己受容 — 不完全な自分を、ありのままに受け入れる",
  "他者信頼 — 条件をつけずに、まず信じてみる",
  "他者貢献 — 役に立てているという感覚をもつ"]

},
{
  id: "encouragement",
  num: "04",
  en: "Encouragement",
  title: "勇気づけ",
  desc: "褒めるのでも、叱るのでもなく、ただ「あなたなら、大丈夫」と伝える。困難を乗りこえる活力を、そっと相手のなかに灯す行為。",
  photo: "https://images.unsplash.com/photo-1490578474895-699cd4e2cf59?w=1200&q=80",
  body: [
  "アドラー心理学のキーワードは、なんといっても「勇気づけ（Encouragement）」です。それは、相手を上から評価する「ほめる」とも、力で従わせる「叱る」とも違う、横に並んで歩むような関わり方。「あなたには困難に立ち向かう力がある」と信じ、その人自身に返していく行為のことです。",
  "私たちはつい、結果を見てジャッジしてしまう。けれど勇気づけは、プロセスや存在そのものに目を向けます。「ありがとう」「助かったよ」というシンプルな言葉が、ほめ言葉よりずっと、人の心を立ち上がらせるのです。"],

  pull: "「ほめてはいけない、叱ってもいけない。ただ、勇気づける」",
  examples: [
  "評価ではなく、感謝のことばを返す",
  "結果ではなく、過程と存在に目をむける",
  "自分自身にも、まず「大丈夫」とつぶやいてみる"]

},
{
  id: "interpersonal",
  num: "05",
  en: "Interpersonal Theory",
  title: "対人関係論",
  desc: "人の悩みは、ぜんぶ「人と人のあいだ」から生まれる。だからこそ、関係を見つめなおすことは、自分を見つめなおすことでもある。",
  photo: "https://images.unsplash.com/photo-1543269865-cbf427effbad?w=1200&q=80",
  body: [
  "アドラーは「人間の悩みは、すべて対人関係の悩みである」と言いきりました。一人で完結する悩みなど、本当はほとんどない。お金も、仕事も、孤独さえも、誰かとの関係性のなかで意味を帯びていきます。",
  "だから対人関係を「ヨコの関係」として捉えなおすことを、アドラーは大切にしました。上下や勝ち負けの「タテ」ではなく、対等な仲間としての「ヨコ」。そこに立てたとき、人は競争の苦しみから降りて、協力の喜びを取り戻していきます。"],

  pull: "「すべての悩みは対人関係の悩みである」",
  examples: [
  "競争（タテ）から、協力（ヨコ）へ視点を移す",
  "相手を「敵」ではなく「仲間」と見なおす",
  "勝ち負けで関わらず、ともに在ることを選ぶ"]

}];


const QUOTES = [
{ body: "重要なのは、何が与えられているかではなく、与えられたものをどう使うかである。", who: "Alfred Adler" },
{ body: "人は変われる。世界はシンプルである。誰もが幸福になれる。", who: "Alfred Adler" },
{ body: "誰かを尊敬するということは、その人がその人らしくあれるよう手伝うこと。", who: "Alfred Adler" }];


// ─── ナビ ───────────────────────────────────────────────
function Nav() {
  return (
    <header className="nav">
      <div className="wrap nav-inner">
        <a className="brand" href="#top">
          <span className="brand-mark">あ</span>
          <div>
            <div>アドラー心理学</div>
            <div className="brand-sub">A·D·L·E·R · A·R·C·H·I·V·E</div>
          </div>
        </a>
        <nav className="nav-links">
          <a href="#about">アドラーとは</a>
          <a href="#pillars">5つの考え</a>
          <a href="#deep">深く学ぶ</a>
          <a href="#words">言葉</a>
          <a href="#learn">学びの一歩</a>
        </nav>
        <button className="nav-cta">はじめての方へ →</button>
      </div>
    </header>);

}

// ─── ヒーロー ──────────────────────────────────────────
function Hero({ heroPhoto }) {
  return (
    <section className="hero" id="top">
      <div className="wrap hero-grid">
        <div className="hero-text">
          <div className="hero-eyebrow">Adlerian Psychology · 入門</div>
          <h1 style={{ color: "rgb(99, 99, 98)" }}>
            人は、<br />いつだって<br />
            <span className="accent">変わって、</span><br /><span className="accent">ゆける。</span>
          </h1>
          <p className="hero-lede">アルフレッド・アドラーが残したのは、難しい理論ではなく、 きょうから少しだけ生きやすくなるための考え方でした。 目的論、課題の分離、共同体感覚、勇気づけ、対人関係論— 5つの灯りを、ゆっくり進めます。



          </p>
          <div className="hero-actions">
            <button className="btn btn-primary">
              読みはじめる <span className="arrow">→</span>
            </button>
            <button className="btn btn-ghost">
              5つの考えを見る
            </button>
          </div>
          <div className="hero-stats">
            <div>
              <div className="stat-num">1870</div>
              <div className="stat-label">アドラー誕生</div>
            </div>
            <div>
              <div className="stat-num" style={{ textAlign: "center" }}>5つ</div>
              <div className="stat-label">核心の考え</div>
            </div>
            <div>
              <div className="stat-num" style={{ textAlign: "center", fontSize: "32px" }}>∞(無限大)</div>
              <div className="stat-label" style={{ textAlign: "center", fontSize: "13px" }}>日々の実践</div>
            </div>
          </div>
        </div>
        <div className="hero-image">
          <div className="hero-tape" />
          <div className="photo">
            <img src={heroPhoto} alt="やわらかな朝の光" />
          </div>
          <div className="hero-quote-card">
            「すべては、あなたの<br />
            勇気から始まる。」
            <small>— A. ADLER</small>
          </div>
        </div>
      </div>
    </section>);
}

// ─── アドラー紹介 ─────────────────────────────────────
function Intro() {
  return (
    <section className="intro" id="about">
      <div className="wrap intro-grid">
        <div className="intro-portrait">
          <div className="frame">
            <img
              src="https://images.unsplash.com/photo-1494059980473-813e73ee784b?w=900&q=80"
              alt="古い書斎の窓辺" />
            
          </div>
          <div className="caption">
            <b>Alfred Adler</b>
            1870 – 1937<br />Wien / New York
          </div>
        </div>
        <div className="intro-bio">
          <div className="section-eyebrow">Who was he?</div>
          <h2 className="section-title" style={{ color: "rgb(154, 107, 73)" }}><span style={{ color: "#636362" }}>フロイトでもユングでもない、</span><br />「もう一人の」<br /><span style={{ color: "#636362" }}>心理学者。</span></h2>
          <p>
            アルフレッド・アドラーは、ウィーン生まれの精神科医・心理学者。
            幼いころは病弱で、二度も死にかけたといいます。だからこそ「人はどう生きれば、健やかでいられるか」を生涯のテーマにしました。
          </p>
          <p>
            一時はフロイトと共に研究をしましたが、やがて「人は過去の原因に縛られるのではなく、未来の目的にむかって動く」と考え、独自の道を歩み始めます。
            その思想は今、日本でも『嫌われる勇気』をきっかけに、多くの人にひらかれています。
          </p>
          <div className="intro-meta">
            <div className="intro-meta-item">
              <div className="k">Born</div>
              <div className="v">1870年<br />ウィーン郊外</div>
            </div>
            <div className="intro-meta-item">
              <div className="k">Field</div>
              <div className="v">個人心理学<br />Individual Psychology</div>
            </div>
            <div className="intro-meta-item">
              <div className="k">Legacy</div>
              <div className="v">勇気づけの<br />心理学</div>
            </div>
          </div>
        </div>
      </div>
    </section>);

}

// ─── 三本柱カード ─────────────────────────────────────
function Pillars({ onOpen }) {
  return (
    <section id="pillars">
      <div className="wrap">
        <div className="pillars-head">
          <div className="section-eyebrow">Five Pillars</div>
          <h2 className="section-title">アドラー心理学を支える、<br />5つの考え。</h2>
          <p className="section-lede">
            膨大な著作のなかから、まずはここから——という5つを集めました。
            カードを開くと、すこし詳しく読めます。
          </p>
        </div>
        <div className="pillars">
          {PILLARS.map((p, i) =>
          <article className="pillar" key={p.id} onClick={() => onOpen(i)}>
              <div className="pillar-media">
                <span className="pillar-num">No. {p.num}</span>
                <img src={p.photo} alt={p.title} />
              </div>
              <div className="pillar-body">
                <div className="pillar-en">{p.en}</div>
                <h3>{p.title}</h3>
                <p className="pillar-desc">{p.desc}</p>
                <div className="pillar-more">
                  続きを読む <span className="arrow">→</span>
                </div>
              </div>
            </article>
          )}
        </div>
      </div>
    </section>);

}

// ─── 詳細 ───────────────────────────────────────────────
function DeepSection() {
  return (
    <section id="deep" style={{ background: "var(--bg-soft)", borderTop: "1px solid var(--line)", borderBottom: "1px solid var(--line)" }}>
      <div className="wrap">
        <div className="pillars-head" style={{ marginBottom: 80 }}>
          <div className="section-eyebrow">Read Slowly</div>
          <h2 className="section-title">それぞれを、もう少し深く。</h2>
        </div>
        {PILLARS.map((p, i) =>
        <div className={`deep ${i % 2 === 1 ? "reverse" : ""}`} key={p.id}>
            <div className="deep-text">
              <div className="deep-eyebrow">No. {p.num} · {p.en}</div>
              <h2>{p.title}</h2>
              <div className="deep-body">
                {p.body.map((para, idx) => <p key={idx}>{para}</p>)}
                <div className="deep-pull">{p.pull}</div>
                <ul className="deep-list">
                  {p.examples.map((ex, idx) =>
                <li key={idx} data-num={String(idx + 1).padStart(2, "0")}>{ex}</li>
                )}
                </ul>
              </div>
            </div>
            <div className="deep-media">
              <div className="badge">{p.title}</div>
              <div className="photo">
                <img src={p.photo} alt={p.title} />
              </div>
            </div>
          </div>
        )}
      </div>
    </section>);

}

// ─── 名言セクション ───────────────────────────────────
function Quotes({ bgPhoto }) {
  const [i, setI] = useState(0);
  useEffect(() => {
    const t = setInterval(() => setI((v) => (v + 1) % QUOTES.length), 6500);
    return () => clearInterval(t);
  }, []);
  return (
    <section className="quote-section" id="words" style={{ "--quote-bg": `url(${bgPhoto})` }}>
      <div className="wrap quote-inner">
        <div className="quote-mark">“</div>
        <p className="quote-body" key={i} style={{ textAlign: "left" }}>{QUOTES[i].body}</p>
        <div className="quote-attrib">— {QUOTES[i].who}</div>
        <div className="quote-nav">
          {QUOTES.map((_, idx) =>
          <button key={idx}
          className={"quote-dot " + (idx === i ? "active" : "")}
          onClick={() => setI(idx)} aria-label={`引用 ${idx + 1}`} />
          )}
        </div>
      </div>
    </section>);

}

// ─── 学びの一歩 ───────────────────────────────────────
function Learn() {
  const items = [
  { icon: "本", title: "本から、ゆっくり", text: "『嫌われる勇気』『人生の意味の心理学』など、入り口になる読み物を集めました。", meta: ["READING", "5冊"] },
  { icon: "話", title: "対話で深める", text: "オンラインの読書会・勉強会の情報。誰かと話すと、考えはまた新しい色を帯びます。", meta: ["COMMUNITY", "月2回"] },
  { icon: "写", title: "日々のノート", text: "実践のためのプロンプトと、書き留めるためのテンプレート。三日坊主でも大丈夫。", meta: ["PRACTICE", "毎日5分"] }];

  return (
    <section id="learn">
      <div className="wrap">
        <div className="pillars-head">
          <div className="section-eyebrow">Take One Step</div>
          <h2 className="section-title">学びの、はじめの一歩。</h2>
          <p className="section-lede">
            読むこと、語ること、書くこと。アドラー心理学は実践の心理学です。
            あなたに合うかたちで、ゆっくり始めてみませんか。
          </p>
        </div>
        <div className="learn-grid">
          {items.map((it, i) =>
          <div className="learn-card" key={i}>
              <div className="learn-icon">{it.icon}</div>
              <h4>{it.title}</h4>
              <p>{it.text}</p>
              <div className="learn-meta">
                <span>{it.meta[0]}</span>
                <span>{it.meta[1]}</span>
              </div>
            </div>
          )}
        </div>

        <div className="cta">
          <h3>月に一度、おだやかな手紙を。</h3>
          <p>アドラー心理学にまつわる小さな読みものを、メールでお届けします。いつでも解除できます。</p>
          <form className="cta-form" onSubmit={(e) => {e.preventDefault();alert("ご登録ありがとうございます（デモ）");}}>
            <input type="email" placeholder="メールアドレス" required />
            <button type="submit">登録する</button>
          </form>
        </div>
      </div>
    </section>);

}

// ─── フッター ────────────────────────────────────────
function Foot() {
  return (
    <footer className="foot">
      <div className="wrap">
        <div className="foot-grid">
          <div>
            <div className="brand">
              <span className="brand-mark">あ</span>
              <div>
                <div style={{ fontFamily: "var(--font-hand)", fontSize: 20 }}>アドラー心理学</div>
                <div className="brand-sub">A·D·L·E·R · A·R·C·H·I·V·E</div>
              </div>
            </div>
            <p className="foot-tag">
              「人は変われる、世界はシンプルである、誰もが幸福になれる」。
              そんな静かな確信を、いまの暮らしに活かすためのささやかな案内所です。
            </p>
          </div>
          <div className="foot-col">
            <h5>読む</h5>
            <ul>
              <li><a href="#about">アドラーとは</a></li>
              <li><a href="#pillars">5つの考え</a></li>
              <li><a href="#deep">深く学ぶ</a></li>
              <li><a href="#words">名言集</a></li>
            </ul>
          </div>
          <div className="foot-col">
            <h5>つながる</h5>
            <ul>
              <li><a href="#">読書会</a></li>
              <li><a href="#">手紙登録</a></li>
              <li><a href="#">お問い合わせ</a></li>
              <li><a href="#">寄稿のお誘い</a></li>
            </ul>
          </div>
          <div className="foot-col">
            <h5>このサイトについて</h5>
            <ul>
              <li><a href="#">運営者</a></li>
              <li><a href="#">参考文献</a></li>
              <li><a href="#">画像クレジット</a></li>
              <li><a href="#">プライバシー</a></li>
            </ul>
          </div>
        </div>
        <div className="foot-bottom">
          <span>© 2026 Adler Archive — 個人によるささやかな入門サイト</span>
          <span>made with quiet courage</span>
        </div>
      </div>
    </footer>);

}

// ─── モーダル ────────────────────────────────────────
function PillarModal({ openIdx, onClose }) {
  const open = openIdx !== null;
  useEffect(() => {
    const onKey = (e) => {if (e.key === "Escape") onClose();};
    window.addEventListener("keydown", onKey);
    return () => window.removeEventListener("keydown", onKey);
  }, [onClose]);

  const p = open ? PILLARS[openIdx] : null;
  return (
    <div className={"modal-overlay " + (open ? "open" : "")} onClick={onClose}>
      {p &&
      <div className="modal" onClick={(e) => e.stopPropagation()} style={{ position: "relative" }}>
          <button className="modal-close" onClick={onClose} aria-label="閉じる">✕</button>
          <div className="modal-media">
            <img src={p.photo} alt={p.title} />
          </div>
          <div className="modal-body">
            <div className="modal-en">No. {p.num} · {p.en}</div>
            <h3>{p.title}</h3>
            {p.body.map((para, i) => <p key={i}>{para}</p>)}
            <div className="modal-pull">{p.pull}</div>
            <ul className="deep-list" style={{ marginTop: 24 }}>
              {p.examples.map((ex, idx) =>
            <li key={idx} data-num={String(idx + 1).padStart(2, "0")}>{ex}</li>
            )}
            </ul>
          </div>
        </div>
      }
    </div>);

}

// ─── スクロールアニメ ────────────────────────────────
function useScrollReveal() {
  useEffect(() => {
    const els = document.querySelectorAll(".fade-up");
    const io = new IntersectionObserver((entries) => {
      entries.forEach((en) => {if (en.isIntersecting) en.target.classList.add("in");});
    }, { threshold: 0.12 });
    els.forEach((el) => io.observe(el));
    return () => io.disconnect();
  }, []);
}

// ─── App ─────────────────────────────────────────────
const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{
  "accent": "#B8825C",
  "ink": "#3D3530",
  "bg": "#F5EFE6",
  "headingFont": "Klee One",
  "heroPhoto": "https://images.unsplash.com/photo-1500964757637-c85e8a162699?w=1400&q=80",
  "quoteBg": "https://images.unsplash.com/photo-1518173946687-a4c8892bbd9f?w=1600&q=80"
} /*EDITMODE-END*/;

function App() {
  const [openIdx, setOpenIdx] = useState(null);
  const [t, setTweak] = useTweaks(TWEAK_DEFAULTS);
  useScrollReveal();

  // accents
  useEffect(() => {
    const r = document.documentElement.style;
    r.setProperty("--terracotta", t.accent);
    r.setProperty("--ink", t.ink);
    r.setProperty("--bg", t.bg);
    r.setProperty("--font-hand", `"${t.headingFont}", "Yu Mincho", serif`);
  }, [t.accent, t.ink, t.bg, t.headingFont]);

  return (
    <>
      <Nav />
      <Hero heroPhoto={t.heroPhoto} />
      <Intro />
      <Pillars onOpen={setOpenIdx} />
      <DeepSection />
      <Quotes bgPhoto={t.quoteBg} />
      <Learn />
      <Foot />
      <PillarModal openIdx={openIdx} onClose={() => setOpenIdx(null)} />

      <TweaksPanel title="Tweaks">
        <TweakSection label="Color" />
        <TweakColor label="Accent" value={t.accent}
        options={["#B8825C", "#9C7BAE", "#7BA098", "#C26F5C", "#7C8FA8"]}
        onChange={(v) => setTweak("accent", v)} />
        <TweakColor label="Background" value={t.bg}
        options={["#F5EFE6", "#F0EBE0", "#FBF6EC", "#EDE8DD"]}
        onChange={(v) => setTweak("bg", v)} />
        <TweakColor label="Ink" value={t.ink}
        options={["#3D3530", "#2A2925", "#4A3F35", "#403838"]}
        onChange={(v) => setTweak("ink", v)} />
        <TweakSection label="Type" />
        <TweakSelect label="Heading font" value={t.headingFont}
        options={["Klee One", "Shippori Mincho", "Zen Kurenaido", "Yusei Magic", "Zen Maru Gothic"]}
        onChange={(v) => setTweak("headingFont", v)} />
        <TweakSection label="Photos" />
        <TweakSelect label="Hero" value={t.heroPhoto}
        options={[
        "https://images.unsplash.com/photo-1500964757637-c85e8a162699?w=1400&q=80",
        "https://images.unsplash.com/photo-1518495973542-4542c06a5843?w=1400&q=80",
        "https://images.unsplash.com/photo-1476610182048-b716b8518aae?w=1400&q=80",
        "https://images.unsplash.com/photo-1490750967868-a78a45fc4d3a?w=1400&q=80"]
        }
        onChange={(v) => setTweak("heroPhoto", v)} />
      </TweaksPanel>
    </>);

}

ReactDOM.createRoot(document.getElementById("root")).render(<App />);