// Editorial Hub (centerpiece), Testimonials, CTA, Footer
const { useState: useState2 } = React;

/* ================= EDITORIAL HUB ================= */
function Insights({ data }) {
  const ins = data.insights;
  const [topic, setTopic] = useState2("All");
  const filtered = topic === "All" ? ins.secondary : ins.secondary.filter(s => s.topic === topic);

  return (
    <section id="insights" className="masthead-dark loose" style={{ padding: "120px 0", borderTop: "1px solid var(--rule)", borderBottom: "1px solid var(--rule)" }}>
      <div className="container">
        {/* Masthead */}
        <div style={{ borderBottom: "1px solid var(--ink)", paddingBottom: 32, marginBottom: 64, display: "grid", gridTemplateColumns: "auto 1fr auto", gap: 40, alignItems: "end" }}>
          <div>
            <div className="meta" style={{ marginBottom: 14, display: "flex", alignItems: "center", gap: 10 }}>
              <span className="live-dot" />
              {ins.issue}
            </div>
            <h2 className="display" style={{ fontSize: "clamp(54px, 6.5vw, 88px)", margin: 0, color: "var(--ink)", fontStyle: "italic", fontVariationSettings: '"opsz" 144', textWrap: "balance" }}>
              The Diplomatic Diary
            </h2>          </div>
          <div></div>
          <div style={{ textAlign: "right" }}>
            <div className="meta" style={{ marginBottom: 8 }}>A reading on</div>
            <div style={{ fontFamily: "var(--serif)", fontSize: 18, fontStyle: "italic", color: "var(--ink-soft)", lineHeight: 1.3, maxWidth: "26ch" }}>
              practice · negotiation · foreign policy · statecraft
            </div>
          </div>
        </div>

        {/* Framing + topics */}
        <div style={{ display: "grid", gridTemplateColumns: "1.3fr 1fr", gap: 64, alignItems: "start", marginBottom: 64 }}>
          <div>
            <h3 style={{ fontFamily: "var(--serif)", fontSize: "clamp(28px, 3.2vw, 44px)", fontWeight: 400, fontVariationSettings: '"opsz" 72', letterSpacing: "-0.015em", lineHeight: 1.05, margin: "0 0 24px", color: "var(--ink)", textWrap: "balance", maxWidth: "18ch" }}>
              {ins.title}
            </h3>
            <p className="lede" style={{ maxWidth: "54ch", margin: 0 }}>
              {ins.framing}
            </p>
          </div>
          <div style={{ display: "flex", flexDirection: "column", alignItems: "flex-end", gap: 16 }}>
            <div style={{ display: "flex", flexWrap: "wrap", gap: 6, justifyContent: "flex-end" }}>
              {ins.topics.map((t) => (
                <button key={t} className="chip" data-active={topic === t} aria-pressed={topic === t} aria-label={`Filter Diary by ${t}`} onClick={() => setTopic(t)}>
                  {t}
                </button>
              ))}
            </div>
            <a href="#all-insights" className="ulink meta" style={{ paddingBottom: 2 }}>
              View all {ins.archiveCount} entries →
            </a>
          </div>
        </div>

        {/* FEATURED ESSAY — large editorial anchor */}
        <article style={{ display: "grid", gridTemplateColumns: "1.05fr 1fr", gap: 56, padding: "48px 0", borderTop: "1px solid var(--ink)", borderBottom: "1px solid var(--rule)", alignItems: "stretch" }}>
          <div className="placeholder" style={{ aspectRatio: "5 / 6", borderRadius: 2, background: `url(${ins.featured.img}) center/cover no-repeat, var(--paper-deep)` }}>
          </div>
          <div style={{ display: "flex", flexDirection: "column", justifyContent: "space-between", padding: "12px 0" }}>
            <div>
              <div style={{ display: "flex", alignItems: "center", gap: 16, marginBottom: 28 }}>
                <span className="meta" style={{ color: "var(--bordeaux)" }}>{ins.featured.kicker}</span>
                <span className="meta">·</span>
                <span className="meta">{ins.featured.topic}</span>
              </div>
              <h3 className="display" style={{ fontSize: "clamp(36px, 4vw, 56px)", margin: "0 0 28px", color: "var(--ink)", fontVariationSettings: '"opsz" 96', letterSpacing: "-0.018em", lineHeight: 1.02, textWrap: "balance" }}>
                {ins.featured.title}
              </h3>
              <p style={{ fontFamily: "var(--serif)", fontSize: 18.5, lineHeight: 1.55, color: "var(--ink-soft)", margin: 0, fontWeight: 300, fontVariationSettings: '"opsz" 18', textWrap: "pretty", maxWidth: "44ch" }}>
                {ins.featured.excerpt}
              </p>
            </div>
            <div style={{ marginTop: 36, paddingTop: 24, borderTop: "1px solid var(--rule)", display: "flex", justifyContent: "space-between", alignItems: "flex-end", gap: 16, flexWrap: "wrap" }}>
              <div>
                <div style={{ fontFamily: "var(--serif)", fontSize: 16, color: "var(--ink)", marginBottom: 4 }}>
                  {ins.featured.author}
                </div>
                <div className="meta">{ins.featured.role} · {ins.featured.date} · {ins.featured.readtime}</div>
              </div>
              <a href="#essay" className="btn btn-ghost">
                Read essay <span className="arrow">→</span>
              </a>
            </div>
          </div>
        </article>

        {/* Secondary grid — editorial cards */}
        <div style={{ marginTop: 24 }}>
          <div style={{ display: "flex", justifyContent: "space-between", alignItems: "baseline", padding: "32px 0 24px" }}>
            <div className="meta">More from the Diary {topic !== "All" ? `· ${topic}` : ""}</div>
            <div className="meta">{filtered.length} entries</div>
          </div>
          <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 0, borderTop: "1px solid var(--ink)" }}>
            {filtered.map((s, i) => (
              <ArticleCard key={i} s={s} index={i} totalCols={3} />
            ))}
            {filtered.length === 0 && (
              <div style={{ padding: 48, gridColumn: "1 / -1", textAlign: "center" }} className="meta">
                No entries under this topic yet.
              </div>
            )}
          </div>
        </div>

        {/* Editorial column / from the editor */}
        <div style={{ marginTop: 64, padding: "40px 0 0", borderTop: "1px solid var(--rule)", display: "grid", gridTemplateColumns: "1fr 2fr 1fr", gap: 40, alignItems: "start" }}>
          <div className="meta">{ins.column.label}</div>
          <div>
            <h4 style={{ fontFamily: "var(--serif)", fontStyle: "italic", fontSize: 28, fontWeight: 400, margin: "0 0 16px", color: "var(--ink)", letterSpacing: "-0.01em", textWrap: "balance" }}>
              "{ins.column.title}"
            </h4>
            <p style={{ fontFamily: "var(--serif)", fontSize: 17, lineHeight: 1.55, color: "var(--ink-soft)", margin: 0, fontWeight: 300, textWrap: "pretty" }}>
              {ins.column.lede}
            </p>
            <div className="meta" style={{ marginTop: 16 }}>— {ins.column.author}</div>
          </div>
          <div style={{ textAlign: "right" }}>
            <a href="#newsletter" className="ulink meta" style={{ paddingBottom: 2 }}>
              Subscribe to the Diary →
            </a>
          </div>
        </div>
      </div>
    </section>
  );
}

function ArticleCard({ s, index, totalCols = 3 }) {
  const [hover, setHover] = useState2(false);
  const isLeftEdge = index % totalCols === 0;
  return (
    <a
      href="#article"
      onMouseEnter={() => setHover(true)}
      onMouseLeave={() => setHover(false)}
      style={{
        textDecoration: "none",
        color: "inherit",
        padding: "32px 24px 28px",
        borderLeft: isLeftEdge ? "none" : "1px solid var(--rule)",
        borderBottom: "1px solid var(--rule)",
        display: "grid",
        gridTemplateRows: "180px auto 1fr auto",
        gap: 18,
        background: hover ? "rgba(255,255,255,0.55)" : "transparent",
        transition: "background 280ms",
      }}
    >
      {s.img && (
        <div style={{ width: "100%", height: 180, borderRadius: 2, overflow: "hidden", background: `url(${s.img}) center/cover no-repeat, var(--paper-deep)`, filter: "saturate(0.85)" }}></div>
      )}
      <div style={{ display: "flex", justifyContent: "space-between", alignItems: "center" }}>
        <span className="meta" style={{ color: "var(--bordeaux)" }}>{s.topic}</span>
        <span className="meta">No. {String(index + 47).padStart(3, "0")}</span>
      </div>
      <h4 style={{
        fontFamily: "var(--serif)",
        fontSize: 26,
        fontWeight: 400,
        margin: 0,
        color: "var(--ink)",
        letterSpacing: "-0.012em",
        lineHeight: 1.1,
        fontVariationSettings: '"opsz" 36',
        textWrap: "balance",
      }}>
        {s.title}
      </h4>
      <p style={{ margin: 0, fontSize: 14, color: "var(--ink-soft)", lineHeight: 1.5, textWrap: "pretty", maxWidth: "36ch" }}>{s.excerpt}</p>
      <div style={{ display: "flex", justifyContent: "space-between", alignItems: "flex-end", gap: 12, paddingTop: 14, borderTop: "1px solid var(--rule-soft)" }}>
        <div>
          <div style={{ fontFamily: "var(--serif)", fontSize: 14, color: "var(--ink-soft)", marginBottom: 2 }}>{s.author}</div>
          <div className="meta">{s.date} · {s.readtime}</div>
        </div>
        <span style={{ color: "var(--ink-mute)", transform: hover ? "translateX(4px)" : "translateX(0)", transition: "transform 220ms" }}>→</span>
      </div>
    </a>
  );
}

/* ================= TESTIMONIALS ================= */
function Testimonials({ data }) {
  return (
    <section>
      <div className="container">
        <div className="section-label">
          <div className="num">§ 04 — Voices</div>
          <div className="title-row">
            <h2>From practitioners who passed through.</h2>
          </div>
        </div>

        <div style={{ display: "grid", gridTemplateColumns: "repeat(3, 1fr)", gap: 0, borderTop: "1px solid var(--rule)" }}>
          {data.testimonials.map((t, i) => (
            <figure key={i} style={{
              margin: 0,
              padding: "44px 36px 36px",
              borderLeft: i === 0 ? "none" : "1px solid var(--rule)",
              borderBottom: "1px solid var(--rule)",
              display: "grid",
              gridTemplateRows: "auto 1fr auto",
              gap: 28,
            }}>
              <div style={{ fontFamily: "var(--serif)", fontSize: 64, fontStyle: "italic", color: "var(--bordeaux)", lineHeight: 0.6, height: 24, fontWeight: 300 }}>
                "
              </div>
              <blockquote style={{
                margin: 0,
                fontFamily: "var(--serif)",
                fontSize: 21,
                lineHeight: 1.4,
                color: "var(--ink)",
                letterSpacing: "-0.005em",
                fontWeight: 400,
                textWrap: "pretty",
              }}>
                {t.quote}
              </blockquote>
              <figcaption style={{ paddingTop: 24, borderTop: "1px solid var(--rule-soft)", display: "grid", gap: 4 }}>
                <div style={{ fontFamily: "var(--serif)", fontSize: 16, fontWeight: 400, letterSpacing: "-0.005em" }}>{t.name}</div>
                <div className="meta">{t.role} · {t.country}</div>
              </figcaption>
            </figure>
          ))}
        </div>
      </div>
    </section>
  );
}

/* ================= FINAL CTA ================= */
function FinalCTA({ data }) {
  const a = data.admissions;
  return (
    <section id="admissions" style={{ background: "var(--paper-warm)", borderTop: "1px solid var(--rule)", padding: "120px 0" }}>
      <div className="container">
        <div style={{ display: "grid", gridTemplateColumns: "1.4fr 1fr", gap: 64, alignItems: "end", paddingBottom: 48, borderBottom: "1px solid var(--rule)" }}>
          <div>
            <div className="meta" style={{ marginBottom: 24 }}>{a.eyebrow}</div>
            <h2 className="display" style={{ fontSize: "clamp(40px, 5vw, 72px)", margin: 0, fontVariationSettings: '"opsz" 96', letterSpacing: "-0.02em", textWrap: "balance" }}>
              {a.title}
            </h2>
          </div>
          <div>
            <p className="lede" style={{ margin: "0 0 28px", textWrap: "pretty" }}>
              {a.lede}
            </p>
            <div style={{ display: "flex", gap: 12, flexWrap: "wrap" }}>
              <a href="#apply" className="btn btn-primary">{a.primary} <span className="arrow">→</span></a>
              <a href="#talk" className="btn btn-ghost">{a.secondary}</a>
            </div>
          </div>
        </div>

        <div style={{ display: "grid", gridTemplateColumns: "repeat(4, 1fr)", gap: 32, marginTop: 32 }}>
          {a.metrics.map((m, i) => (
            <div key={i} style={{ display: "grid", gap: 6 }}>
              <div className="meta">{m.l}</div>
              <div style={{ fontFamily: "var(--serif)", fontSize: 22, letterSpacing: "-0.01em" }}>{m.v}</div>
              <div className="meta" style={{ color: "var(--ink-quiet)" }}>{m.k}</div>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}

/* ================= FOOTER ================= */
function Footer({ data }) {
  const c = data.contact;
  return (
    <footer className="masthead-dark footer-deep" style={{ paddingTop: 80, paddingBottom: 32, background: "var(--slate-deep)", color: "var(--paper)" }}>
      <div className="container">
        <div style={{ display: "grid", gridTemplateColumns: "1.6fr 1fr 1fr 1fr 1fr", gap: 40, paddingBottom: 64, borderBottom: "1px solid rgba(245,241,234,0.18)" }}>
          <div>
            <WDALogo inverted />
            <p style={{ fontFamily: "var(--serif)", fontSize: 16, lineHeight: 1.5, color: "rgba(245,241,234,0.7)", marginTop: 24, maxWidth: "32ch", fontWeight: 300, textWrap: "pretty" }}>
              The world's first independent practical diplomacy school.
            </p>
            <address style={{ fontStyle: "normal", marginTop: 24, fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "0.06em", color: "rgba(245,241,234,0.65)", textTransform: "uppercase", lineHeight: 1.7 }}>
              {c.address1}<br/>
              {c.address2}<br/>
              <a href={`tel:${c.phone.replace(/[^+\d]/g,'')}`} style={{ color: "inherit", textDecoration: "none" }}>{c.phone}</a><br/>
              <a href={`mailto:${c.email}`} style={{ color: "inherit", textDecoration: "none" }}>{c.email}</a>
            </address>
          </div>

          {[
            { h: "Programs", items: ["One-Year Certificate", "Summer Diplomatic Academy", "Executive Diplomacy Training", "Custom Programs", "Session Previews"] },
            { h: "The Diary", items: ["Latest essays", "Archive", "Contributors", "Subscribe", "Submissions"] },
            { h: "Institution", items: ["About WIDA", "Faculty", "Textbook", "Testimonials", "Press"] },
            { h: "Visit", items: ["1717 K Street NW", "Washington, DC", "Contact us", "Privacy", "Terms"] },
          ].map((col, i) => (
            <div key={i}>
              <div style={{ fontFamily: "var(--serif)", fontSize: 15, color: "var(--paper)", fontStyle: "italic", marginBottom: 18 }}>
                {col.h}
              </div>
              <ul style={{ listStyle: "none", padding: 0, margin: 0, display: "grid", gap: 10 }}>
                {col.items.map((it) => (
                  <li key={it}>
                    <a href="#" style={{ fontSize: 13.5, color: "rgba(245,241,234,0.75)", textDecoration: "none" }}
                       onMouseEnter={(e) => e.currentTarget.style.color = "var(--paper)"}
                       onMouseLeave={(e) => e.currentTarget.style.color = "rgba(245,241,234,0.75)"}
                    >
                      {it}
                    </a>
                  </li>
                ))}
              </ul>
            </div>
          ))}
        </div>

        <div style={{ marginTop: 32, display: "flex", justifyContent: "space-between", alignItems: "center", flexWrap: "wrap", gap: 16 }}>
          <div style={{ fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "0.06em", color: "rgba(245,241,234,0.6)", textTransform: "uppercase" }}>
            © 2026 Washington International Diplomatic Academy · All rights reserved
          </div>
          <div style={{ display: "flex", gap: 24, fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "0.06em", textTransform: "uppercase" }}>
            <a href="#" style={{ color: "rgba(245,241,234,0.6)", textDecoration: "none" }}>Privacy</a>
            <a href="#" style={{ color: "rgba(245,241,234,0.6)", textDecoration: "none" }}>Terms</a>
            <a href="#" style={{ color: "rgba(245,241,234,0.6)", textDecoration: "none" }}>Accessibility</a>
            <a href="#" style={{ color: "rgba(245,241,234,0.6)", textDecoration: "none" }}>Code of conduct</a>
          </div>
        </div>
      </div>
    </footer>
  );
}

Object.assign(window, { Insights, Testimonials, FinalCTA, Footer, ArticleCard });
