// ecosystem.jsx — Level 2: the 5-layer ecosystem map (53 modules).
// Accordion of layers; each module is a card. Deep/active modules open their
// real view (via window.__openModule); "vision" modules open a light intro sheet.

const ELL = (lang, o) => (o && (o[lang] || o.en)) || "";

// ---- The 5 layers ----------------------------------------------------------
const ECO_LAYERS = [
  { id: "L1", num: 1, iconKey: "chip",     color: "#00D4FF", tint: "rgba(0,212,255,0.12)",
    fa: "شناخت", ar: "الإدراك", en: "Cognitive Core",
    d: { fa: "مغز استدلالی شهداد — درک، تحلیل و استدلال حقوقی.", en: "Shahdad's reasoning brain — understanding & legal reasoning." } },
  { id: "L2", num: 2, iconKey: "settings", color: "#C9A96E", tint: "rgba(201,169,110,0.14)",
    fa: "اجرا و اتوماسیون", ar: "التنفيذ والأتمتة", en: "Execution",
    d: { fa: "گردش‌کار، عامل‌های خودکار و مدیریت پرونده.", en: "Workflows, autonomous agents and case management." } },
  { id: "L3", num: 3, iconKey: "magnifier", color: "#6B9E8A", tint: "rgba(107,158,138,0.16)",
    fa: "دانش و داده", ar: "المعرفة والبيانات", en: "Knowledge",
    d: { fa: "قانون، رویه، ادله و تحقیق حقوقی.", en: "Law, precedent, evidence and legal research." } },
  { id: "L4", num: 4, iconKey: "building", color: "#9B8CFF", tint: "rgba(155,140,255,0.14)",
    fa: "پلتفرم و اکوسیستم", ar: "المنصة والنظام", en: "Platform",
    d: { fa: "بازارها، مالی، امنیت و یکپارچگی سازمانی.", en: "Marketplaces, finance, security and integrations." } },
  { id: "L5", num: 5, iconKey: "heart", color: "#E08FA0", tint: "rgba(224,143,160,0.14)",
    fa: "اثر اجتماعی و اعتماد", ar: "الأثر الاجتماعي والثقة", en: "Social Impact",
    d: { fa: "عدالت برای همه — حمایت اجتماعی و اعتماد.", en: "Justice for all — social support and trust." } },
];

// ---- The 53 modules (numbers follow the architecture doc; 28 & 49 reserved) -
// `to`  = opens an existing real view.  `key` = one of the 4 flagship deep modules.
const M = (n, layer, iconKey, fa, en, d, extra = {}) =>
  ({ n, layer, iconKey, fa, en, d, ...extra });

const ECO_MODULES = [
  // ---- Layer 1 — Cognitive Core ----
  M(1,  "L1", "bot",        "وکیل هوشمند", "Smart Lawyer (Orchestrator)", { fa: "ارکستریتور مرکزی که همهٔ ماژول‌ها را هماهنگ می‌کند.", en: "Central orchestrator coordinating every module." }, { to: "aiChat", key: true }),
  M(2,  "L1", "chat",       "مشاوره حقوقی هوشمند", "Smart Legal Consultation", { fa: "پاسخ چندسطحی، ارجاع به مواد قانونی و آرای مشابه.", en: "Multi-level answers with statute & precedent citations." }, { to: "consult", key: true }),
  M(25, "L1", "trending",   "شبیه‌ساز استراتژی دعوا", "Litigation Strategy Simulator", { fa: "سناریوسازی مسیر و احتمال موفقیت دعوا.", en: "Simulates litigation paths and win probability." }),
  M(26, "L1", "idcard",     "Legal DNA", "Legal DNA", { fa: "پروفایل حقوقی هوشمند هر کاربر و پرونده.", en: "An intelligent legal profile per user & case." }),
  M(30, "L1", "barchart",   "تحلیل رفتار", "Behavioral Analytics", { fa: "الگوهای رفتاری طرفین و ریسک‌های پنهان.", en: "Behavioral patterns and hidden risks of parties." }),
  M(36, "L1", "gavel",      "هوش قاضی و دادگاه", "Judge & Court Intelligence", { fa: "تحلیل رویهٔ شعب و گرایش قضات.", en: "Analyzes court branches and judges' tendencies." }),
  M(40, "L1", "folder",     "حافظه و زمینهٔ پرونده", "AI Memory & Case Context", { fa: "حافظهٔ بلندمدت و زمینهٔ کامل هر پرونده.", en: "Long-term memory and full case context." }),
  M(45, "L1", "chip",       "موتور استدلال حقوقی", "Legal Reasoning Engine", { fa: "ساخت استدلال حقوقی ساختاریافته و مستند.", en: "Builds structured, sourced legal arguments." }),
  M(47, "L1", "user",       "شخصی‌سازی حقوقی", "Legal Personalization", { fa: "تطبیق پاسخ‌ها با وضعیت و سابقهٔ کاربر.", en: "Tailors guidance to the user's situation." }),
  M(52, "L1", "heart",      "موتور استدلال اخلاقی", "Ethical Reasoning Engine", { fa: "سنجش ابعاد اخلاقی تصمیم‌ها و توصیه‌ها.", en: "Weighs the ethical dimension of decisions." }),
  M(53, "L1", "group",      "شبیه‌ساز رفتار دادگاه", "Court Behavior Sandbox", { fa: "محیط آزمایش واکنش احتمالی دادگاه.", en: "A sandbox for likely courtroom reactions." }),
  M(54, "L1", "barchart",   "فیزیک استدلال", "Argument Physics Engine", { fa: "سنجش وزن و نیروی هر استدلال حقوقی.", en: "Measures the weight and force of arguments." }),
  M(55, "L1", "leaf",       "تکامل زندهٔ قانون", "Dynamic Law Evolution", { fa: "رصد زندهٔ تغییر قوانین و به‌روزرسانی.", en: "Live tracking of changing laws." }),

  // ---- Layer 2 — Execution ----
  M(10, "L2", "folder",     "مدیریت پرونده", "Case Management", { fa: "همهٔ پرونده‌های در جریان در یک نما.", en: "All active matters in one view." }, { to: "case" }),
  M(14, "L2", "cal",        "تقویم و اطلاع‌رسانی", "Calendar & Notifications", { fa: "مهلت‌ها، جلسات و یادآوری‌های قانونی.", en: "Deadlines, hearings and legal reminders." }, { to: "clock" }),
  M(22, "L2", "docEdit",    "چرخهٔ عمر قرارداد (CLM)", "Contract Lifecycle", { fa: "از پیش‌نویس تا امضا و تمدید قرارداد.", en: "Draft to signature to renewal." }),
  M(24, "L2", "chip",       "ارکستراسیون AI", "AI Orchestration (Multi-Agent)", { fa: "هماهنگی چند عامل هوشمند روی یک وظیفه.", en: "Coordinates multiple AI agents on a task." }),
  M(29, "L2", "shieldAlert","رادار ریسک لحظه‌ای", "Real-time Risk Radar", { fa: "هشدار زندهٔ ریسک روی پرونده و قرارداد.", en: "Live risk alerts on cases and contracts." }, { to: "risk" }),
  M(38, "L2", "bot",        "عامل‌های خودکار حقوقی", "Autonomous Legal Agents", { fa: "انجام خودکار کارهای تکراری حقوقی.", en: "Automates repetitive legal tasks." }),
  M(39, "L2", "trending",   "موتور گردش‌کار حقوقی", "Legal Workflow Engine", { fa: "تعریف و اجرای فرایندهای حقوقی.", en: "Design and run legal workflows." }),
  M(42, "L2", "docEdit",    "دستیار نگارش حقوقی", "Legal Drafting Copilot", { fa: "نگارش لوایح و اسناد با هوش مصنوعی.", en: "AI drafting of briefs and documents." }),
  M(44, "L2", "briefcase",  "مدیریت پرونده و Workspace", "Case Workspace", { fa: "فضای کاری شخصی هر کاربر و تیم.", en: "A personal workspace for users and teams." }),
  M(48, "L2", "chat",       "هوش مکالمه", "Conversation Intelligence", { fa: "خلاصه و تحلیل جلسات و مکالمات.", en: "Summarizes and analyzes conversations." }),

  // ---- Layer 3 — Knowledge ----
  M(4,  "L3", "doc",        "تحلیل و مهندسی قرارداد", "Contract Intelligence", { fa: "نقشهٔ قرارداد، بندهای خطرناک و نمرهٔ ریسک.", en: "Contract map, risky clauses, risk score." }, { to: "contracts", key: true }),
  M(5,  "L3", "calc",       "محاسبات مالی حقوقی", "Legal Financial Calculators", { fa: "دیه، مهریه، ارث و خسارت به نرخ روز.", en: "Diye, mahrieh, inheritance at today's rate." }, { to: "calc", key: true }),
  M(21, "L3", "scroll",     "لایهٔ ادله", "Evidence Layer", { fa: "سازماندهی و ارزیابی ادلهٔ پرونده.", en: "Organizes and weighs case evidence." }),
  M(31, "L3", "magnifier",  "فارنزیک ادلهٔ دیجیتال", "Digital Evidence Forensics", { fa: "بررسی اصالت ادلهٔ دیجیتال.", en: "Verifies authenticity of digital evidence." }),
  M(32, "L3", "building",   "بومی‌سازی و چند-حوزه‌ای", "Localization & Multi-Jurisdiction", { fa: "تطبیق با حوزه‌های قضایی مختلف.", en: "Adapts across multiple jurisdictions." }),
  M(35, "L3", "search",     "موتور تحقیق حقوقی", "Legal Research Engine", { fa: "جستجوی عمیق در قوانین و منابع.", en: "Deep research across laws and sources." }),
  M(41, "L3", "magnifier",  "جستجوی معنایی حقوقی", "Semantic Legal Search", { fa: "جستجو بر اساس مفهوم، نه فقط کلمه.", en: "Search by meaning, not just keywords." }),
  M(43, "L3", "gavel",      "موتور رویهٔ قضایی", "Precedent Engine", { fa: "یافتن آرای مشابه و رویهٔ قضایی.", en: "Finds similar rulings and precedent." }),
  M(46, "L3", "shieldCheck","حاکمیت داده و انطباق", "Data Governance", { fa: "مدیریت داده‌ها مطابق مقررات.", en: "Governs data per regulations." }),
  M(51, "L3", "handshake",  "مترجم نظام‌های حقوقی", "Jurisdiction Translator", { fa: "ترجمهٔ مفاهیم میان نظام‌های حقوقی.", en: "Translates concepts across legal systems." }),

  // ---- Layer 4 — Platform ----
  M(6,  "L4", "building",   "SaaS سازمانی", "Enterprise SaaS", { fa: "نسخهٔ سازمانی برای شرکت‌ها و دفاتر.", en: "Enterprise edition for firms." }),
  M(7,  "L4", "shield",     "سپر بیمه حقوقی", "Legal Insurance Shield", { fa: "پوشش بیمه‌ای هزینه‌های حقوقی.", en: "Insurance coverage for legal costs." }),
  M(8,  "L4", "microscope", "کارشناسان", "Expert Marketplace", { fa: "بازار کارشناسان رسمی دادگستری.", en: "Marketplace of court-registered experts." }, { to: "expert" }),
  M(9,  "L4", "scale",      "معرفی وکلا", "Lawyer Marketplace", { fa: "شبکهٔ وکلای متخصص و احرازشده.", en: "Network of verified specialist attorneys." }, { to: "lawyer" }),
  M(11, "L4", "card",       "کیف پول حقوقی", "Legal Wallet", { fa: "پرداخت، امانی و تسویهٔ امن.", en: "Payments, escrow and secure settlement." }),
  M(13, "L4", "shieldCheck","کامپلاینس", "Compliance", { fa: "بررسی انطباق با مقررات.", en: "Regulatory compliance checks." }),
  M(16, "L4", "shieldCheck","لایهٔ اعتماد", "Trust Layer", { fa: "زیرساخت اعتماد و تأیید هویت.", en: "Trust and identity-verification layer." }),
  M(17, "L4", "chip",       "لایهٔ ارتباط و یکپارچگی", "Contact & Integration Layer", { fa: "اتصال به سامانه‌های بیرونی.", en: "Integrations with external systems." }),
  M(18, "L4", "store",      "بازار + ارکستراسیون AI", "Marketplace + AI Orchestration", { fa: "ترکیب بازار خدمات و هوش مصنوعی.", en: "Service marketplace meets AI orchestration." }),
  M(19, "L4", "coin",       "لایهٔ مالی پیشرفته (FinOS)", "Advanced Finance (FinOS)", { fa: "زیرساخت مالی و سرمایه‌گذاری دعاوی.", en: "Finance infrastructure and litigation funding." }),
  M(23, "L4", "shield",     "امنیت و انطباق پیشرفته", "Security & Compliance Core", { fa: "هستهٔ امنیت و حفاظت داده.", en: "Core security and data protection." }),
  M(33, "L4", "idcard",     "صدور گواهی و اعتبارسنجی", "Certification & Credentialing", { fa: "گواهی و اعتبارسنجی متخصصان.", en: "Certifies and credentials professionals." }),
  M(34, "L4", "store",      "بازار پلاگین و افزونه", "Plugin Marketplace", { fa: "افزونه‌های شخص‌ثالث برای پلتفرم.", en: "Third-party plugins for the platform." }),
  M(37, "L4", "star",       "امتیاز شهرت و اعتماد", "Reputation & Trust Score", { fa: "امتیاز اعتبار وکلا و کارشناسان.", en: "Reputation score for lawyers and experts." }),

  // ---- Layer 5 — Social Impact ----
  M(3,  "L5", "group",      "هیأت حل اختلاف خصوصی", "Private Dispute Panel", { fa: "داوران شبکهٔ شهداد برای حل اختلاف.", en: "Private panel of Shahdad arbiters." }),
  M(12, "L5", "mic",        "پادکست + مدرسهٔ حقوق", "Podcast + Law School", { fa: "محتوای آموزشی و سواد حقوقی همگانی.", en: "Educational content and public legal literacy." }),
  M(15, "L5", "lifebuoy",   "پشتیبانی", "Support Hub", { fa: "مرکز کمک و راهنمایی کاربران.", en: "Help and guidance center for users." }),
  M(20, "L5", "mail",       "لایهٔ ارتباطات", "Communication Layer", { fa: "پیام، تماس و اعلان‌های امن.", en: "Secure messaging, calls and alerts." }),
  M(27, "L5", "handshake",  "حل اختلاف آنلاین (ODR)", "Online Dispute Resolution", { fa: "حل اختلاف کامل به‌صورت آنلاین.", en: "End-to-end online dispute resolution." }),
  M(50, "L5", "heart",      "سپر اجتماعی حقوقی", "Legal Social Shield", { fa: "حمایت از زندانیان و خانواده‌های آسیب‌پذیر.", en: "Support for inmates and vulnerable families." }, { to: "social", key: true }),
];

const ECO_BADGE = {
  key:    { fa: "ماژول عمیق", ar: "وحدة عميقة", en: "Deep" },
  active: { fa: "فعال", ar: "نشط", en: "Active" },
  soon:   { fa: "به‌زودی", ar: "قريباً", en: "Soon" },
};

// ---------------------------------------------------------------------------
const EcosystemView = ({ lang }) => {
  const [open, setOpen] = React.useState({ L1: true });
  const [intro, setIntro] = React.useState(null);
  const dg = (n) => lang === "fa" ? toFa(n) : lang === "ar" ? toAr(n) : String(n);
  const word = (o) => ELL(lang, o);

  const toggle = (id) => { AudioCtl.click(); setOpen((o) => ({ ...o, [id]: !o[id] })); };
  const onCard = (m) => {
    AudioCtl.open();
    if (m.to && window.__openModule) { window.__openModule(m.to); }
    else { setIntro(m); }
  };
  const badgeKind = (m) => m.key ? "key" : m.to ? "active" : "soon";

  const deepCount = ECO_MODULES.filter((m) => m.key).length;

  return (
    <div className="eco">
      <div className="eco-hero">
        <h2 className="eco-title">{lang === "fa" ? "اکوسیستم شهداد" : lang === "ar" ? "نظام شهداد" : "The Shahdad Ecosystem"}</h2>
        <p className="eco-sub">{lang === "fa" ? "یک سامانهٔ جامع، در ۵ لایهٔ هم‌پیوند." : lang === "ar" ? "نظام متكامل في ٥ طبقات مترابطة." : "One comprehensive system, in 5 interconnected layers."}</p>
        <div className="eco-stats">
          <div className="eco-stat"><b className="fa-num">{dg(5)}</b><span>{lang === "fa" ? "لایه" : lang === "ar" ? "طبقات" : "layers"}</span></div>
          <div className="eco-stat"><b className="fa-num">{dg(ECO_MODULES.length)}</b><span>{lang === "fa" ? "ماژول" : lang === "ar" ? "وحدة" : "modules"}</span></div>
          <div className="eco-stat"><b className="fa-num">{dg(deepCount)}</b><span>{lang === "fa" ? "ماژول عمیق" : lang === "ar" ? "وحدات عميقة" : "deep modules"}</span></div>
        </div>
      </div>

      <div className="eco-layers">
        {ECO_LAYERS.map((layer) => {
          const Icon = Ic[layer.iconKey] || Ic.chip;
          const mods = ECO_MODULES.filter((m) => m.layer === layer.id);
          const isOpen = !!open[layer.id];
          return (
            <div key={layer.id} className={"eco-layer" + (isOpen ? " open" : "")}
              style={{ "--lc": layer.color, "--lt": layer.tint }}>
              <button className="eco-layer-head" onClick={() => toggle(layer.id)}>
                <div className="eco-l-num fa-num">{dg(layer.num)}</div>
                <div className="eco-l-ico"><Icon size={22} /></div>
                <div className="eco-l-txt">
                  <div className="eco-l-name">
                    {word(layer)} <span className="lat">· {layer.en}</span>
                  </div>
                  <div className="eco-l-desc">{word(layer.d)}</div>
                </div>
                <div className="eco-l-count fa-num">{dg(mods.length)} <span>{lang === "fa" ? "ماژول" : lang === "ar" ? "وحدة" : "modules"}</span></div>
                <Ic.chevL size={16} className="eco-l-chev" />
              </button>

              {isOpen &&
              <div className="eco-grid">
                {mods.map((m) => {
                  const MIcon = Ic[m.iconKey] || Ic.chip;
                  const kind = badgeKind(m);
                  return (
                    <button key={m.n} className={"eco-card k-" + kind} onClick={() => onCard(m)} title={word(m)}>
                      <div className="ec-top">
                        <div className="ec-ico"><MIcon size={18} /></div>
                        <div className="ec-num fa-num">{dg(m.n)}</div>
                      </div>
                      <div className="ec-name">{word(m)}</div>
                      <div className="ec-desc">{word(m.d)}</div>
                      <span className={"ec-badge " + kind}>{word(ECO_BADGE[kind])}</span>
                    </button>
                  );
                })}
              </div>}
            </div>
          );
        })}
      </div>

      {intro &&
      <div className="eco-intro-bd" onClick={(e) => { if (e.target === e.currentTarget) setIntro(null); }}>
        <div className="eco-intro" style={{ "--lc": (ECO_LAYERS.find((l) => l.id === intro.layer) || {}).color }}>
          <div className="ei-top">
            <div className="ei-ico">{(() => { const II = Ic[intro.iconKey] || Ic.chip; return <II size={24} />; })()}</div>
            <span className="ec-badge soon">{word(ECO_BADGE.soon)}</span>
          </div>
          <div className="ei-num fa-num">{lang === "fa" ? "ماژول " : lang === "ar" ? "وحدة " : "Module "}{dg(intro.n)}</div>
          <h3 className="ei-name">{word(intro)}</h3>
          <div className="ei-lat">{intro.en}</div>
          <p className="ei-desc">{word(intro.d)}</p>
          <div className="ei-actions">
            <button className="btn primary" onClick={() => { AudioCtl.click(); setIntro(null); }}>
              <Ic.bell size={14} /> {lang === "fa" ? "خبرم کن" : lang === "ar" ? "أبلغني" : "Notify me"}
            </button>
            <button className="btn ghost" onClick={() => setIntro(null)}>
              {lang === "fa" ? "بستن" : lang === "ar" ? "إغلاق" : "Close"}
            </button>
          </div>
        </div>
      </div>}
    </div>
  );
};

// Register as a module so it opens in the standard pop-up shell.
if (typeof MODULES !== "undefined") {
  MODULES.ecosystem = {
    iconKey: "chip",
    t: { fa: "نقشهٔ اکوسیستم", ar: "خريطة النظام", en: "Ecosystem Map" },
    s: { fa: "۵ لایه · ۵۳ ماژول هوشمند", ar: "٥ طبقات · ٥٣ وحدة", en: "5 layers · 53 modules" },
    View: EcosystemView,
  };
}

Object.assign(window, { EcosystemView, ECO_LAYERS, ECO_MODULES });
