<?php
/**
 * Plugin Name: MenPowered Training – Landing Shortcode
 * Description: Converts the MenPowered React single-page layout into a native WordPress shortcode. Use [menpowered_training].
 * Version: 1.0.0
 * Author: MenPowered Training Associates
 * License: GPLv2 or later
 */

if (!defined('ABSPATH')) { exit; }

class MPTA_Landing_Shortcode {
  const HANDLE = 'mpta-landing';

  public static function init() {
    add_shortcode('menpowered_training', [__CLASS__, 'render']);
    add_action('wp_enqueue_scripts', [__CLASS__, 'register_assets']);
  }

  public static function register_assets() {
    $base = plugin_dir_url(__FILE__);
    wp_register_style(self::HANDLE, $base . 'assets/style.css', [], '1.0.0');
    wp_register_script(self::HANDLE, $base . 'assets/app.js', [], '1.0.0', true);
  }

  public static function render($atts = [], $content = '') {
    wp_enqueue_style(self::HANDLE);
    wp_enqueue_script(self::HANDLE);

    $brand = 'MenPowered Training Associates';

    ob_start(); ?>

<section class="mpta-wrapper" aria-label="<?php echo esc_attr($brand); ?>">
  <?php echo self::header_html($brand); ?>
  <main>
    <?php echo self::hero_html(); ?>
    <?php echo self::trustbar_html(); ?>
    <?php echo self::how_html(); ?>
    <?php echo self::tracks_html(); ?>
    <?php echo self::impact_html(); ?>
    <?php echo self::forwhom_html(); ?>
    <?php echo self::testimonials_html(); ?>
    <?php echo self::faq_html(); ?>
    <?php echo self::cta_html(); ?>
    <?php echo self::contact_html(); ?>
  </main>
  <?php echo self::footer_html($brand); ?>
</section>

<?php return ob_get_clean();
  }

  private static function header_html($brand) {
    return '<header class="mpta-header"><div class="mpta-container mpta-flex mpta-justify">'
      .'<div class="mpta-logo" aria-label="MenPowered logo">MP</div>'
      .'<span class="mpta-brand">'.esc_html($brand).'</span>'
      .'<nav class="mpta-nav">'
        .'<a href="#how">How it works</a>'
        .'<a href="#tracks">Training areas</a>'
        .'<a href="#impact">Impact</a>'
        .'<a href="#contact">Contact</a>'
        .'<a class="mpta-btn mpta-primary" href="#request">Request training</a>'
      .'</nav>'
      .'</div></header>';
  }

  private static function hero_html() {
    ob_start(); ?>
    <section class="mpta-hero" aria-label="Hero">
      <div class="mpta-container">
        <div class="mpta-grid-hero">
          <div>
            <h1 class="mpta-h1">Name the training. We'll find the trainer.</h1>
            <p class="mpta-lead">We source expert-led training for charities by partnering with professionals who volunteer their time at a reduced, impact‑first fee. Tell us what you need—safeguarding, fundraising, governance, mental health, or anything bespoke—and we'll match you with a vetted trainer.</p>
            <div class="mpta-row-gap">
              <a href="#request" class="mpta-btn mpta-primary">Request a training</a>
              <a href="#volunteer" class="mpta-btn mpta-outline">Volunteer as a trainer</a>
            </div>
            <p class="mpta-meta">Average lead time 2–4 weeks • UK & online delivery • Discounts for small charities</p>
          </div>
          <div>
            <div class="mpta-card">
              <span class="mpta-badge">Instant enquiry</span>
              <h3 class="mpta-h3">Tell us your training need</h3>
              <p class="mpta-muted">Share a title and a few outcomes—you'll get a friendly reply with options.</p>
              <?php echo self::quick_form_html(); ?>
            </div>
          </div>
        </div>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function trustbar_html() {
    $items = ['Community Fund','Local Councils','Faith Groups','Foundations','CICs'];
    ob_start(); ?>
    <section class="mpta-trustbar" aria-label="Trust bar">
      <div class="mpta-container mpta-trust">
        <?php foreach ($items as $i): ?>
          <div class="mpta-trust-item">Trusted by <?php echo esc_html($i); ?></div>
        <?php endforeach; ?>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function how_html() {
    $steps = [
      ['You name the training','Send a title and 3–5 outcomes. Include audience size, delivery mode (online/in‑person), and preferred dates.'],
      ['We source a trainer','We reach our network of professionals who donate time at a discounted fee. We shortlist the best fits.'],
      ['You pick & prepare','Choose a trainer. We handle scoping, learning outcomes, materials, and logistics with your team.'],
      ['Deliver & evidence impact','We deliver training and provide attendance data, feedback summaries, and certificates if needed.'],
    ];
    ob_start(); ?>
    <section id="how" class="mpta-section">
      <div class="mpta-container">
        <div class="mpta-grid-2">
          <div>
            <h2 class="mpta-h2">How it works</h2>
            <p class="mpta-muted">A simple, impact‑first model that unlocks professional learning for charities of every size.</p>
          </div>
          <div class="mpta-steps">
            <?php foreach ($steps as $i => $s): ?>
              <div class="mpta-card">
                <div class="mpta-step"><span><?php echo $i+1; ?></span></div>
                <h3 class="mpta-h4"><?php echo esc_html($s[0]); ?></h3>
                <p class="mpta-muted"><?php echo esc_html($s[1]); ?></p>
              </div>
            <?php endforeach; ?>
          </div>
        </div>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function tracks_html() {
    $items = [
      ['Safeguarding & DBS','Adult & Children, trustees and volunteer briefings, safer recruitment.'],
      ['Fundraising & Bid Writing','Grants (e.g., Awards for All), trusts & foundations, corporate giving, stewardship.'],
      ['Governance & Finance','Trustee roles, risk, reserves, budgeting, Charity Commission basics.'],
      ['Mental Health & Wellbeing','MHFA, trauma awareness, self‑care for staff & volunteers.'],
      ['Community Delivery Skills','Facilitation, co‑production, youth work, safeguarding in practice.'],
      ['Operations & Compliance','H&S, GDPR, data collection, evaluation, quality assurance.'],
      ['DEI & Lived Experience','Inclusive practice, cultural competence, community engagement.'],
      ['Custom & Bespoke','Tell us what you need—we’ll build it with you.'],
    ];
    ob_start(); ?>
    <section id="tracks" class="mpta-section">
      <div class="mpta-container">
        <h2 class="mpta-h2">Popular training areas</h2>
        <p class="mpta-muted">If it helps your mission, we’ll try to source it.</p>
        <div class="mpta-grid-cards">
          <?php foreach ($items as $x): ?>
            <div class="mpta-card">
              <h3 class="mpta-h4"><?php echo esc_html($x[0]); ?></h3>
              <p class="mpta-muted"><?php echo esc_html($x[1]); ?></p>
            </div>
          <?php endforeach; ?>
        </div>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function impact_html() {
    ob_start(); ?>
    <section id="impact" class="mpta-section">
      <div class="mpta-container">
        <div class="mpta-card">
          <h2 class="mpta-h2">Impact at a glance</h2>
          <p class="mpta-muted">We blend professional standards with community heart.</p>
          <div class="mpta-grid-3">
            <div class="mpta-kpi"><div class="mpta-kpi-num" data-kpi="780">780+</div><div class="mpta-kpi-label">Learners supported</div></div>
            <div class="mpta-kpi"><div class="mpta-kpi-num" data-kpi="1200">£1,200</div><div class="mpta-kpi-label">Value unlocked via discounted fees</div></div>
            <div class="mpta-kpi"><div class="mpta-kpi-num" data-kpi="96">96%</div><div class="mpta-kpi-label">Avg. satisfaction rating</div></div>
          </div>
        </div>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function forwhom_html() {
    $items = [
      ['Charities & CIOs','From micro‑charities to national networks.'],
      ['Community Groups & CICs','Grassroots programmes, youth & faith groups.'],
      ['Funders & LAs','Commission practical capacity‑building for grantees.'],
      ['Professional Volunteers','Give back by donating your expertise as a trainer.'],
    ];
    ob_start(); ?>
    <section class="mpta-section">
      <div class="mpta-container mpta-grid-2">
        <div>
          <h2 class="mpta-h2">Who we support</h2>
          <p class="mpta-muted">If your work serves the public good, we're here to help you learn and grow.</p>
          <div class="mpta-grid-stack">
            <?php foreach ($items as $x): ?>
              <div class="mpta-card">
                <h3 class="mpta-h4"><?php echo esc_html($x[0]); ?></h3>
                <p class="mpta-muted"><?php echo esc_html($x[1]); ?></p>
              </div>
            <?php endforeach; ?>
          </div>
        </div>
        <div id="volunteer" class="mpta-card">
          <span class="mpta-badge">For Professionals</span>
          <h3 class="mpta-h3">Volunteer as a trainer</h3>
          <p class="mpta-muted">Share your expertise, support the sector, and build your impact portfolio. We make delivery easy with clear briefs and ready‑to‑use materials.</p>
          <?php echo self::volunteer_form_html(); ?>
        </div>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function testimonials_html() {
    $quotes = [
      ['Amira – Youth CIC','We asked for safeguarding basics tailored to our mentors. Within two weeks we had a brilliant trainer and practical resources we still use.'],
      ['Patrick – Community Charity','Their bid‑writing session helped us secure our first Awards for All grant. Clear, practical, and confidence‑building.'],
      ['Lauren – Volunteer Trainer','Loved the mission. The team handled logistics so I could focus on teaching. Impact without the admin headache!'],
    ];
    ob_start(); ?>
    <section class="mpta-section">
      <div class="mpta-container mpta-grid-3">
        <?php foreach ($quotes as $q): ?>
          <figure class="mpta-card"><blockquote>“<?php echo esc_html($q[1]); ?>”</blockquote><figcaption class="mpta-muted">— <?php echo esc_html($q[0]); ?></figcaption></figure>
        <?php endforeach; ?>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function faq_html() {
    $items = [
      ['What fees should we expect?','We operate an impact‑first model: trainers discount or donate time, and we add a modest coordination fee. We’ll provide clear quotes up‑front with charity discounts.'],
      ['How quickly can you find a trainer?','Typical lead time is 2–4 weeks. Short notice is sometimes possible—send your dates and we’ll try.'],
      ['Do you cover the whole UK?','Yes—online nationwide and in‑person where feasible. We can also support international virtual delivery.'],
      ['Can you design bespoke content?','Absolutely. Share your outcomes and context (policies, risks, service users) and we’ll tailor the session.'],
    ];
    ob_start(); ?>
    <section class="mpta-section">
      <div class="mpta-container">
        <h2 class="mpta-h2">FAQs</h2>
        <div class="mpta-accordion">
          <?php foreach ($items as $i => $x): ?>
            <details class="mpta-disclosure" <?php echo $i===0? 'open' : ''; ?>>
              <summary class="mpta-disclosure-summary"><?php echo esc_html($x[0]); ?><span class="mpta-chevron" aria-hidden>▾</span></summary>
              <div class="mpta-disclosure-body mpta-muted"><?php echo esc_html($x[1]); ?></div>
            </details>
          <?php endforeach; ?>
        </div>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function cta_html() {
    ob_start(); ?>
    <section class="mpta-cta" aria-label="Call to action">
      <div class="mpta-container">
        <div class="mpta-card mpta-center">
          <h2 class="mpta-h2">Ready to upskill your team?</h2>
          <p class="mpta-muted">Send a title—like “Fundraising for beginners” or “Trustee safeguarding refresher”—and we’ll do the rest.</p>
          <div class="mpta-row-gap">
            <a href="#request" class="mpta-btn mpta-primary">Request training</a>
            <a href="#volunteer" class="mpta-btn mpta-outline">Volunteer to train</a>
          </div>
        </div>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function contact_html() {
    ob_start(); ?>
    <section id="contact" class="mpta-section" aria-label="Contact">
      <div class="mpta-container mpta-grid-2">
        <div>
          <h2 class="mpta-h2">Contact</h2>
          <p class="mpta-muted">We’ll reply within 2 working days. Prefer email? hello@menpowered.training</p>
          <ul class="mpta-list">
            <li>Mon–Fri 9:00–17:00 (UK)</li>
            <li>Online or in‑person delivery</li>
            <li>DBS‑aware, safeguarding‑first approach</li>
          </ul>
        </div>
        <div id="request" class="mpta-card">
          <span class="mpta-badge">Start here</span>
          <h3 class="mpta-h3">Request a training</h3>
          <?php echo self::request_form_html(); ?>
        </div>
      </div>
    </section>
    <?php return ob_get_clean();
  }

  private static function footer_html($brand) {
    return '<footer class="mpta-footer" aria-label="Footer"><div class="mpta-container mpta-footer-inner">© '.date('Y').' '.esc_html($brand).'. Building capacity for good.<div class="mpta-footer-links"><a href="#">Privacy</a><a href="#">Cookies</a><a href="#contact">Contact</a></div></div></footer>';
  }

  // ——— Forms ———
  private static function quick_form_html() {
    ob_start(); ?>
    <form class="mpta-form" data-testid="quick-form">
      <label>Training title<input required name="title" placeholder="e.g., Safeguarding for Trustees" /></label>
      <label>Top 3 outcomes<textarea required name="outcomes" placeholder="1) Understand roles 2) Spot concerns 3) Report well"></textarea></label>
      <label>Contact email<input required type="email" name="email" placeholder="you@charity.org" /></label>
      <button type="submit" class="mpta-btn mpta-primary">Get options</button>
      <p class="mpta-hint">By submitting, you consent to be contacted about this request.</p>
    </form>
    <?php return ob_get_clean();
  }

  private static function request_form_html() {
    ob_start(); ?>
    <form class="mpta-form" data-testid="request-form">
      <div class="mpta-grid-2">
        <label>Training title<input required name="title" placeholder="e.g., Bid Writing 101" /></label>
        <label>Delivery mode<select name="mode"><option>Online</option><option>In-person</option><option>Hybrid</option></select></label>
      </div>
      <label>Desired outcomes (3–5 bullets)<textarea required name="outcomes" placeholder="What should learners be able to do?"></textarea></label>
      <div class="mpta-grid-3">
        <label>Audience<input name="audience" placeholder="Trustees, volunteers, staff…" /></label>
        <label>Group size<input name="size" placeholder="e.g., up to 20" /></label>
        <label>Preferred dates<input name="dates" placeholder="e.g., w/c 10 Nov" /></label>
      </div>
      <label>Contact email<input required type="email" name="contact" placeholder="you@charity.org" /></label>
      <button type="submit" class="mpta-btn mpta-primary">Submit request</button>
      <p class="mpta-hint">We’ll send a quote and trainer options shortly. No obligation.</p>
    </form>
    <?php return ob_get_clean();
  }

  private static function volunteer_form_html() {
    ob_start(); ?>
    <form class="mpta-form" data-testid="volunteer-form">
      <label>Full name<input required name="name" placeholder="Your name" /></label>
      <label>Expertise / topics<textarea required name="expertise" placeholder="e.g., MHFA, governance, fundraising"></textarea></label>
      <label>Email<input required type="email" name="email" placeholder="you@domain.com" /></label>
      <button type="submit" class="mpta-btn mpta-primary">Pledge your time</button>
      <p class="mpta-hint">We’ll discuss availability, fees, and safeguarding expectations.</p>
    </form>
    <?php return ob_get_clean();
  }
}

MPTA_Landing_Shortcode::init();

/* ==============================
 * Create these two asset files next to this PHP file:
 *   /assets/style.css
 *   /assets/app.js
 * ==============================
 * File: assets/style.css
---------------------------------
:root{ --bg:#f8fafc; --text:#0f172a; --muted:#475569; --card:#ffffff; --line:#e2e8f0; --primary:#0f172a; --primaryText:#ffffff; }
.mpta-wrapper{background:linear-gradient(#f8fafc,#fff);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,"Helvetica Neue",Arial,sans-serif}
.mpta-container{max-width:1100px;margin:0 auto;padding:0 1rem}
.mpta-flex{display:flex;align-items:center}
.mpta-justify{justify-content:space-between;height:64px}
.mpta-header{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.8);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.mpta-logo{width:36px;height:36px;border-radius:14px;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:700}
.mpta-brand{margin-left:.5rem;font-weight:600}
.mpta-nav{display:flex;gap:1rem}
.mpta-nav a{color:#334155;text-decoration:none}
.mpta-btn{display:inline-flex;gap:.5rem;align-items:center;justify-content:center;border-radius:14px;padding:.625rem 1rem;border:1px solid var(--line);text-decoration:none}
.mpta-primary{background:var(--primary);color:var(--primaryText)}
.mpta-outline{background:#fff;color:var(--text)}
.mpta-hero{position:relative;overflow:hidden;padding:3rem 0}
.mpta-row-gap{display:flex;gap:.75rem;flex-wrap:wrap;margin:.75rem 0}
.mpta-meta{color:#64748b;font-size:.85rem}
.mpta-card{border:1px solid var(--line);background:var(--card);border-radius:22px;padding:1rem}
.mpta-badge{display:inline-block;border:1px solid var(--line);background:#f1f5f9;border-radius:999px;padding:.2rem .6rem;font-size:.75rem;color:#334155}
.mpta-h1{font-size:clamp(2rem,5vw,3rem);line-height:1.1;margin:0}
.mpta-h2{font-size:1.75rem;margin:.25rem 0}
.mpta-h3{font-size:1.25rem;margin:.25rem 0}
.mpta-h4{font-size:1rem;margin:.25rem 0}
.mpta-lead{color:#475569;font-size:1.125rem}
.mpta-muted{color:#64748b}
.mpta-section{padding:2.5rem 0}
.mpta-grid-hero{display:grid;grid-template-columns:1fr;gap:1rem}
@media(min-width:992px){.mpta-grid-hero{grid-template-columns:7fr 5fr}}
.mpta-grid-2{display:grid;grid-template-columns:1fr;gap:1rem}
@media(min-width:900px){.mpta-grid-2{grid-template-columns:5fr 7fr}}
.mpta-grid-3{display:grid;gap:1rem}
@media(min-width:900px){.mpta-grid-3{grid-template-columns:repeat(3,1fr)}}
.mpta-grid-cards{display:grid;gap:1rem}
@media(min-width:900px){.mpta-grid-cards{grid-template-columns:repeat(4,1fr)}}
.mpta-grid-stack{display:grid;gap:.8rem}
.mpta-trustbar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f8fafc}
.mpta-trust{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;color:#64748b}
.mpta-step span{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:12px;background:var(--primary);color:#fff;font-weight:700}
.mpta-kpi{background:#f8fafc;border-radius:16px;padding:1rem;text-align:center}
.mpta-kpi-num{font-size:2rem;font-weight:800}
.mpta-kpi-label{color:#64748b;font-size:.85rem}
.mpta-cta{background:linear-gradient(90deg,#eef2ff,#f0f9ff,#f0fdf4)}
.mpta-center{text-align:center}
.mpta-footer{border-top:1px solid var(--line);background:#fff}
.mpta-footer-inner{display:flex;gap:1rem;align-items:center;justify-content:space-between;padding:1rem 0;color:#64748b}
.mpta-footer a{color:#475569;text-decoration:none}
.mpta-footer-links{display:flex;gap:1rem}
.mpta-list{margin:.75rem 0;color:#334155}
.mpta-form{display:grid;gap:.6rem;margin-top:.6rem}
.mpta-form label{display:grid;gap:.25rem;font-size:.9rem}
.mpta-form input,.mpta-form textarea,.mpta-form select{height:44px;border-radius:12px;border:1px solid var(--line);padding:.5rem .75rem;outline:none}
.mpta-form textarea{min-height:90px}
.mpta-hint{font-size:.8rem;color:#64748b}

/* ---------------------------------
 * File: assets/app.js
 * ---------------------------------
 */
/* global console */
(function(){
  function handle(form, build){
    if(!form) return; form.addEventListener('submit', function(e){
      e.preventDefault();
      const d = new FormData(form);
      alert(build(d));
    });
  }
  handle(document.querySelector('[data-testid="quick-form"]'), (fd)=>{
    return "Thanks! We'll get back to you about: " + (fd.get('title')||'your request') +
      "\nOutcomes: " + (fd.get('outcomes')||'-') +
      "\nEmail: " + (fd.get('email')||'-');
  });
  handle(document.querySelector('[data-testid="request-form"]'), (fd)=>{
    return [
      'Request received!',
      'Training: ' + (fd.get('title')||'-'),
      'Outcomes: ' + (fd.get('outcomes')||'-'),
      'Audience: ' + (fd.get('audience')||'-'),
      'Size: ' + (fd.get('size')||'-'),
      'Mode: ' + (fd.get('mode')||'-'),
      'Preferred dates: ' + (fd.get('dates')||'-'),
      'Contact: ' + (fd.get('contact')||'-'),
    ].join('\n');
  });
  handle(document.querySelector('[data-testid="volunteer-form"]'), (fd)=>{
    return 'Thank you, ' + (fd.get('name')||'trainer') + '! We\'ll be in touch.';
  });

  // Dev-time smoke tests to mirror the React version
  try {
    console.assert(!!document.querySelector('.mpta-hero'), 'Hero should render');
    ['how','tracks','impact','volunteer','contact','request'].forEach(id => {
      console.assert(!!document.getElementById(id) || !!document.querySelector('#'+id), '#' + id + ' should exist');
    });
    console.assert(!!document.querySelector('#request input[type="email"]'), 'Request form email required');
  } catch (e) { console.warn('Smoke tests warning:', e); }
})();
*/