/* partners.jsx — Shared components for partner-facing pages
   (co-host, local-business, vendor). Luxury Miami concierge tone. */

/* =========== HERO =========== */
function PartnerHero({ overline, title, italic, lede, ctaLabel, ctaHref, badge, photo }) {
  return (
    <section style={{
      position: 'relative', minHeight: '78vh', overflow: 'hidden',
      background: 'var(--navy-900)',
      display: 'flex', alignItems: 'flex-end',
    }}>
      {photo && (
        <img src={photo} alt="" style={{
          position: 'absolute', inset: 0, width: '100%', height: '100%',
          objectFit: 'cover', opacity: 0.6,
        }} />
      )}
      <div style={{
        position: 'absolute', inset: 0,
        background: 'linear-gradient(180deg, rgba(15,42,66,0.20) 0%, rgba(15,42,66,0.42) 50%, rgba(15,42,66,0.86) 100%)',
      }} />
      <div className="container" style={{
        position: 'relative', padding: '120px 32px 96px', maxWidth: 980,
      }}>
        {badge && (
          <div style={{
            display: 'inline-flex', alignItems: 'center', gap: 8,
            padding: '6px 14px', borderRadius: 999,
            background: 'rgba(252,172,100,0.18)', border: '1px solid rgba(252,172,100,0.4)',
            color: 'var(--sun-amber)', fontSize: 11, fontWeight: 600,
            letterSpacing: '0.16em', textTransform: 'uppercase', marginBottom: 24,
          }}>
            <span style={{ width: 6, height: 6, borderRadius: 999, background: 'var(--sun-amber)' }} />
            {badge}
          </div>
        )}
        {overline && (
          <div style={{
            fontSize: 12, color: 'var(--sun-amber)', letterSpacing: '0.18em',
            textTransform: 'uppercase', fontWeight: 600, marginBottom: 18,
          }}>{overline}</div>
        )}
        <h1 style={{
          fontFamily: 'var(--font-display)', fontWeight: 400,
          fontSize: 'clamp(48px, 6.4vw, 96px)', color: '#fff',
          margin: '0 0 28px', letterSpacing: '-0.025em', lineHeight: 1.02,
          textWrap: 'balance',
        }}>
          {title} {italic && <em style={{ fontStyle: 'italic', color: 'var(--sun-amber)' }}>{italic}</em>}
        </h1>
        {lede && (
          <p style={{
            color: 'rgba(255,255,255,0.82)', fontSize: 19, lineHeight: 1.55,
            maxWidth: 680, margin: '0 0 36px', textWrap: 'pretty',
          }}>{lede}</p>
        )}
        {ctaLabel && (
          <a href={ctaHref || '#apply'} style={{
            display: 'inline-flex', alignItems: 'center', gap: 10,
            padding: '15px 30px', borderRadius: 999,
            background: 'linear-gradient(135deg, var(--sun-coral), var(--sun-amber))',
            color: '#fff', fontSize: 15, fontWeight: 500, letterSpacing: '0.02em',
            textDecoration: 'none',
            boxShadow: '0 8px 24px rgba(252,172,100,0.4)',
            transition: 'all 220ms var(--ease-novus)',
          }} onMouseEnter={e => { e.currentTarget.style.transform = 'translateY(-2px)'; }}
             onMouseLeave={e => { e.currentTarget.style.transform = 'translateY(0)'; }}>
            {ctaLabel} →
          </a>
        )}
      </div>
    </section>
  );
}

/* =========== VISION / EYEBROW SECTION ========== */
function VisionBlock({ overline, title, italic, paragraphs, image, reverse }) {
  return (
    <section style={{ padding: '120px 0', background: 'var(--bg-page)' }}>
      <div className="container" style={{
        display: 'grid',
        gridTemplateColumns: reverse ? '1fr 1.2fr' : '1.2fr 1fr',
        gap: 80, alignItems: 'center',
      }}>
        <div style={{ order: reverse ? 2 : 1 }}>
          {overline && (
            <div style={{
              fontSize: 12, color: 'var(--sun-coral)', letterSpacing: '0.18em',
              textTransform: 'uppercase', fontWeight: 600, marginBottom: 18,
            }}>{overline}</div>
          )}
          <h2 style={{
            fontFamily: 'var(--font-display)', fontWeight: 400,
            fontSize: 'clamp(36px, 4.4vw, 60px)', color: 'var(--navy-900)',
            margin: '0 0 32px', letterSpacing: '-0.02em', lineHeight: 1.05,
            textWrap: 'balance',
          }}>
            {title} {italic && <em style={{ fontStyle: 'italic' }}>{italic}</em>}
          </h2>
          {(paragraphs || []).map((p, i) => (
            <p key={i} style={{
              color: 'var(--ink-700)', fontSize: 17, lineHeight: 1.7,
              margin: '0 0 18px', textWrap: 'pretty',
            }}>{p}</p>
          ))}
        </div>
        <div style={{
          order: reverse ? 1 : 2,
          position: 'relative', borderRadius: 18, overflow: 'hidden',
          aspectRatio: '4/5',
        }}>
          {image && (
            <img src={image} alt="" style={{
              width: '100%', height: '100%', objectFit: 'cover',
            }} />
          )}
        </div>
      </div>
    </section>
  );
}

/* =========== STATS BAND =========== */
function StatsBand({ stats }) {
  return (
    <section style={{ padding: '64px 0', background: 'var(--navy-900)', color: '#fff' }}>
      <div className="container" style={{
        display: 'grid', gridTemplateColumns: `repeat(${stats.length}, 1fr)`,
        gap: 40, textAlign: 'center',
      }}>
        {stats.map((s, i) => (
          <div key={i} style={{
            padding: '0 24px',
            borderLeft: i > 0 ? '1px solid rgba(255,255,255,0.18)' : 'none',
          }}>
            <div style={{
              fontFamily: 'var(--font-display)', fontWeight: 400,
              fontSize: 'clamp(40px, 4.8vw, 72px)', color: 'var(--sun-amber)',
              letterSpacing: '-0.02em', lineHeight: 1, marginBottom: 12,
            }}>{s.value}</div>
            <div style={{
              fontSize: 13, color: 'rgba(255,255,255,0.72)',
              letterSpacing: '0.06em', textWrap: 'balance', lineHeight: 1.45,
            }}>{s.label}</div>
          </div>
        ))}
      </div>
    </section>
  );
}

/* =========== BENEFITS / FEATURE GRID =========== */
function BenefitsGrid({ overline, title, italic, items, columns = 3 }) {
  return (
    <section style={{ padding: '120px 0', background: 'var(--sand-50)' }}>
      <div className="container">
        <div style={{ textAlign: 'center', maxWidth: 720, margin: '0 auto 72px' }}>
          {overline && (
            <div style={{
              fontSize: 12, color: 'var(--sun-coral)', letterSpacing: '0.18em',
              textTransform: 'uppercase', fontWeight: 600, marginBottom: 16,
            }}>{overline}</div>
          )}
          <h2 style={{
            fontFamily: 'var(--font-display)', fontWeight: 400,
            fontSize: 'clamp(34px, 4vw, 52px)', color: 'var(--navy-900)',
            margin: 0, letterSpacing: '-0.02em', lineHeight: 1.08,
            textWrap: 'balance',
          }}>
            {title} {italic && <em style={{ fontStyle: 'italic' }}>{italic}</em>}
          </h2>
        </div>
        <div style={{
          display: 'grid', gridTemplateColumns: `repeat(${columns}, 1fr)`, gap: 24,
        }}>
          {items.map((b, i) => (
            <div key={i} style={{
              background: '#fff', border: '1px solid var(--line)',
              borderRadius: 16, padding: 32,
              transition: 'all 240ms var(--ease-novus)',
            }} onMouseEnter={e => {
              e.currentTarget.style.transform = 'translateY(-4px)';
              e.currentTarget.style.boxShadow = '0 14px 36px rgba(15,42,66,0.10)';
            }} onMouseLeave={e => {
              e.currentTarget.style.transform = 'translateY(0)';
              e.currentTarget.style.boxShadow = 'none';
            }}>
              <div style={{
                width: 48, height: 48, borderRadius: 12,
                background: 'linear-gradient(135deg, rgba(252,172,100,0.12), rgba(252,172,100,0.04))',
                border: '1px solid rgba(252,172,100,0.32)',
                display: 'flex', alignItems: 'center', justifyContent: 'center',
                color: 'var(--sun-coral)', marginBottom: 22,
              }}>
                <BenefitIcon name={b.icon} />
              </div>
              <h3 style={{
                fontFamily: 'var(--font-display)', fontWeight: 400,
                fontSize: 24, color: 'var(--navy-900)',
                margin: '0 0 10px', letterSpacing: '-0.01em', lineHeight: 1.2,
              }}>{b.title}</h3>
              <p style={{
                color: 'var(--ink-700)', fontSize: 14, lineHeight: 1.65,
                margin: 0, textWrap: 'pretty',
              }}>{b.body}</p>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}

function BenefitIcon({ name }) {
  const paths = {
    money: 'M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6',
    shield: 'M12 2 4 6v6c0 5 3.4 8.9 8 10 4.6-1.1 8-5 8-10V6l-8-4zM9 12l2 2 4-4',
    chart: 'M3 3v18h18M7 15l4-4 4 4 6-6',
    star: 'M12 2l3.1 6.3 6.9 1-5 4.9 1.2 6.8L12 17.8 5.8 21l1.2-6.8-5-4.9 6.9-1L12 2z',
    sparkle: 'M12 3v3M12 18v3M4 12H1M23 12h-3M5.6 5.6l2.1 2.1M16.3 16.3l2.1 2.1M5.6 18.4l2.1-2.1M16.3 7.7l2.1-2.1',
    handshake: 'M11 17 8 14M14 14l-3 3M19 14l-3-3M16 11l-3-3 3-3M5 11l3-3-3-3M8 8l3 3M3 12l4.5 4.5M21 12l-4.5 4.5',
    users: 'M16 19a4 4 0 0 0-8 0M12 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM20 19a4 4 0 0 0-3-3.9M16 3.1A4 4 0 0 1 16 11',
    calendar: 'M3 9h18M5 5h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2zM8 3v4M16 3v4',
    home: 'M3 12 12 3l9 9M5 10v11h14V10',
    leaf: 'M4 20s2-12 16-16c0 0-2 16-16 16zM4 20l9-9',
    globe: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM2 12h20M12 2c3 4 3 16 0 20-3-4-3-16 0-20z',
    crown: 'M2 8l4 8h12l4-8-6 4-4-8-4 8-6-4z',
    diamond: 'M6 3h12l4 6-10 12L2 9z M6 3l3 6h6l3-6M2 9h20',
    award: 'M8 21l4-3 4 3V11H8v10zM12 2a5 5 0 1 0 0 10 5 5 0 0 0 0-10z',
    chat: 'M21 11.5a8.4 8.4 0 0 1-8.4 8.4 8.4 8.4 0 0 1-3.8-.9L3 21l1.9-5.6a8.4 8.4 0 0 1-.9-3.8 8.4 8.4 0 0 1 8.4-8.5 8.4 8.4 0 0 1 8.5 8.4z',
    clock: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 6v6l4 2',
    target: 'M12 22a10 10 0 1 0 0-20 10 10 0 0 0 0 20zM12 18a6 6 0 1 0 0-12 6 6 0 0 0 0 12zM12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4z',
    key: 'M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zM11 14l3.5-3.5L17 13l3-3 1 1-3 3 2 2-3 3-2-2-3 3-3-3z',
    truck: 'M3 5h11v11H3zM14 8h4l3 3v5h-7M7 19a2 2 0 1 0 0-4 2 2 0 0 0 0 4zM17 19a2 2 0 1 0 0-4 2 2 0 0 0 0 4z',
    spa: 'M12 22s-5-5-5-12a5 5 0 0 1 10 0c0 7-5 12-5 12zM6 12a4 4 0 0 0-4 0M18 12a4 4 0 0 1 4 0',
  };
  return (
    <svg width="22" height="22" viewBox="0 0 24 24" fill="none"
         stroke="currentColor" strokeWidth="1.6"
         strokeLinecap="round" strokeLinejoin="round">
      <path d={paths[name] || paths.star} />
    </svg>
  );
}

/* =========== PROCESS / STEPS =========== */
function ProcessSteps({ overline, title, italic, steps }) {
  return (
    <section style={{ padding: '120px 0', background: 'var(--bg-page)' }}>
      <div className="container">
        <div style={{ maxWidth: 720, marginBottom: 64 }}>
          {overline && (
            <div style={{
              fontSize: 12, color: 'var(--sun-coral)', letterSpacing: '0.18em',
              textTransform: 'uppercase', fontWeight: 600, marginBottom: 16,
            }}>{overline}</div>
          )}
          <h2 style={{
            fontFamily: 'var(--font-display)', fontWeight: 400,
            fontSize: 'clamp(34px, 4vw, 52px)', color: 'var(--navy-900)',
            margin: 0, letterSpacing: '-0.02em', lineHeight: 1.08,
            textWrap: 'balance',
          }}>
            {title} {italic && <em style={{ fontStyle: 'italic' }}>{italic}</em>}
          </h2>
        </div>
        <div style={{
          display: 'grid', gridTemplateColumns: `repeat(${steps.length}, 1fr)`, gap: 24,
        }}>
          {steps.map((s, i) => (
            <div key={i} style={{
              padding: '32px 28px', background: '#fff',
              border: '1px solid var(--line)', borderRadius: 16,
              position: 'relative',
            }}>
              <div style={{
                fontFamily: 'var(--font-display)', fontWeight: 400,
                fontSize: 56, color: 'var(--sun-coral)',
                letterSpacing: '-0.02em', lineHeight: 1, marginBottom: 16,
              }}>{String(i + 1).padStart(2, '0')}</div>
              <h3 style={{
                fontWeight: 500, fontSize: 17, color: 'var(--navy-900)',
                margin: '0 0 8px', letterSpacing: '0.01em',
              }}>{s.title}</h3>
              <p style={{
                color: 'var(--ink-700)', fontSize: 14, lineHeight: 1.6,
                margin: 0, textWrap: 'pretty',
              }}>{s.body}</p>
            </div>
          ))}
        </div>
      </div>
    </section>
  );
}

/* =========== TESTIMONIAL FROM PARTNER =========== */
function PartnerTestimonial({ quote, name, role, photo }) {
  return (
    <section style={{ padding: '120px 0', background: 'var(--sand-100)' }}>
      <div className="container" style={{
        maxWidth: 880, textAlign: 'center',
      }}>
        <div style={{
          fontFamily: 'var(--font-display)', fontStyle: 'italic',
          fontSize: 24, color: 'var(--sun-coral)', marginBottom: 24,
        }}>"</div>
        <blockquote style={{
          fontFamily: 'var(--font-display)', fontWeight: 400,
          fontSize: 'clamp(28px, 3.2vw, 40px)', color: 'var(--navy-900)',
          lineHeight: 1.25, margin: '0 0 40px',
          letterSpacing: '-0.01em', textWrap: 'balance',
        }}>{quote}</blockquote>
        <div style={{
          display: 'flex', alignItems: 'center', justifyContent: 'center', gap: 16,
        }}>
          {photo && (
            <img src={photo} alt={name} style={{
              width: 56, height: 56, borderRadius: 999, objectFit: 'cover',
            }} />
          )}
          {!photo && (
            <div style={{
              width: 56, height: 56, borderRadius: 999,
              background: 'linear-gradient(135deg, var(--sun-coral), var(--sun-amber))',
              display: 'flex', alignItems: 'center', justifyContent: 'center',
              fontFamily: 'var(--font-display)', fontSize: 22, color: '#fff',
            }}>{name[0]}</div>
          )}
          <div style={{ textAlign: 'left' }}>
            <div style={{ fontWeight: 500, color: 'var(--navy-900)', fontSize: 15 }}>{name}</div>
            <div style={{ color: 'var(--ink-500)', fontSize: 13 }}>{role}</div>
          </div>
        </div>
      </div>
    </section>
  );
}

/* =========== APPLICATION FORM SHELL =========== */
function ApplicationForm({ id, title, italic, lede, fields, submitLabel, footnote }) {
  const [data, setData] = React.useState({});
  const [submitted, setSubmitted] = React.useState(false);
  const set = (k, v) => setData(d => ({ ...d, [k]: v }));

  if (submitted) {
    return (
      <section id={id} style={{ padding: '120px 0', background: 'var(--navy-900)', color: '#fff' }}>
        <div className="container" style={{ maxWidth: 680, textAlign: 'center' }}>
          <div style={{
            width: 64, height: 64, borderRadius: 999, margin: '0 auto 28px',
            background: 'linear-gradient(135deg, var(--sun-coral), var(--sun-amber))',
            display: 'flex', alignItems: 'center', justifyContent: 'center',
            boxShadow: '0 10px 28px rgba(252,172,100,0.4)',
          }}>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round"><path d="M5 12l5 5L20 7" /></svg>
          </div>
          <h2 style={{
            fontFamily: 'var(--font-display)', fontWeight: 400,
            fontSize: 'clamp(36px, 4.4vw, 56px)',
            margin: '0 0 16px', letterSpacing: '-0.02em', lineHeight: 1.1,
          }}>
            Thank you. <em style={{ fontStyle: 'italic', color: 'var(--sun-amber)' }}>We'll be in touch.</em>
          </h2>
          <p style={{
            color: 'rgba(255,255,255,0.78)', fontSize: 17, lineHeight: 1.6,
            margin: '0 0 32px',
          }}>
            Our partnerships team reviews every application personally and responds within 48 hours.
            Expect a call from a real person — not a form letter.
          </p>
          <a href="index.html" style={{
            display: 'inline-block', padding: '13px 24px', borderRadius: 999,
            border: '1px solid rgba(255,255,255,0.32)', color: '#fff',
            textDecoration: 'none', fontSize: 14,
          }}>Back to home</a>
        </div>
      </section>
    );
  }

  return (
    <section id={id} style={{ padding: '120px 0', background: 'var(--sand-100)' }}>
      <div className="container" style={{
        display: 'grid', gridTemplateColumns: '1fr 1.4fr',
        gap: 64, alignItems: 'start',
      }}>
        <div style={{ position: 'sticky', top: 96 }}>
          <div style={{
            fontSize: 12, color: 'var(--sun-coral)', letterSpacing: '0.18em',
            textTransform: 'uppercase', fontWeight: 600, marginBottom: 16,
          }}>Apply</div>
          <h2 style={{
            fontFamily: 'var(--font-display)', fontWeight: 400,
            fontSize: 'clamp(36px, 4.4vw, 56px)', color: 'var(--navy-900)',
            margin: '0 0 20px', letterSpacing: '-0.02em', lineHeight: 1.05,
            textWrap: 'balance',
          }}>
            {title} {italic && <em style={{ fontStyle: 'italic' }}>{italic}</em>}
          </h2>
          {lede && (
            <p style={{
              color: 'var(--ink-700)', fontSize: 16, lineHeight: 1.65,
              margin: 0, textWrap: 'pretty',
            }}>{lede}</p>
          )}
          {footnote && (
            <div style={{
              marginTop: 28, padding: '18px 20px',
              background: 'rgba(252,172,100,0.10)',
              border: '1px solid rgba(252,172,100,0.32)',
              borderRadius: 12, fontSize: 13, color: 'var(--navy-900)',
              lineHeight: 1.6,
            }}>{footnote}</div>
          )}
        </div>

        <form onSubmit={e => { e.preventDefault(); setSubmitted(true); window.scrollTo({ top: e.currentTarget.offsetTop - 80, behavior: 'smooth' }); }} style={{
          background: '#fff', border: '1px solid var(--line)',
          borderRadius: 18, padding: '36px 40px',
        }}>
          <div style={{ display: 'grid', gap: 18 }}>
            {fields.map((f, i) => <FieldRenderer key={i} f={f} value={data[f.name]} set={(v) => set(f.name, v)} />)}
          </div>
          <button type="submit" style={{
            marginTop: 28, width: '100%',
            padding: '15px 28px', borderRadius: 999, border: 0,
            background: 'linear-gradient(135deg, var(--sun-coral), var(--sun-amber))',
            color: '#fff', fontSize: 15, fontWeight: 500, letterSpacing: '0.02em',
            cursor: 'pointer',
            boxShadow: '0 6px 18px rgba(252,172,100,0.36)',
            transition: 'all 200ms var(--ease-novus)',
          }} onMouseEnter={e => { e.currentTarget.style.transform = 'translateY(-1px)'; }}
             onMouseLeave={e => { e.currentTarget.style.transform = 'translateY(0)'; }}>
            {submitLabel || 'Submit application'} →
          </button>
          <div style={{
            marginTop: 14, fontSize: 12, color: 'var(--ink-500)', textAlign: 'center',
          }}>
            We typically respond within 48 hours. Your details stay confidential.
          </div>
        </form>
      </div>
    </section>
  );
}

function FieldRenderer({ f, value, set }) {
  const labelEl = (
    <label style={{
      fontSize: 12, color: 'var(--ink-700)', letterSpacing: '0.04em',
      fontWeight: 500, display: 'block', marginBottom: 8,
    }}>
      {f.label} {f.required && <span style={{ color: 'var(--sun-coral)' }}>*</span>}
    </label>
  );

  const inputStyle = {
    width: '100%', padding: '12px 14px',
    border: '1.5px solid var(--line)', borderRadius: 10,
    background: '#fff', fontSize: 14, outline: 'none',
    fontFamily: 'var(--font-text)', color: 'var(--navy-900)',
    transition: 'border 160ms var(--ease-novus)',
  };

  if (f.kind === 'group') {
    return (
      <div style={{ display: 'grid', gridTemplateColumns: `repeat(${f.children.length}, 1fr)`, gap: 14 }}>
        {f.children.map((c, i) => <FieldRenderer key={i} f={c} value={value?.[c.name]} set={(v) => set({ ...value, [c.name]: v })} />)}
      </div>
    );
  }
  if (f.kind === 'textarea') {
    return (
      <div>
        {labelEl}
        <textarea rows={f.rows || 4} placeholder={f.placeholder}
          value={value || ''} onChange={e => set(e.target.value)}
          style={{ ...inputStyle, resize: 'vertical', lineHeight: 1.55 }} />
      </div>
    );
  }
  if (f.kind === 'select') {
    return (
      <div>
        {labelEl}
        <select value={value || ''} onChange={e => set(e.target.value)} style={inputStyle}>
          <option value="">{f.placeholder || 'Select…'}</option>
          {f.options.map(o => <option key={o} value={o}>{o}</option>)}
        </select>
      </div>
    );
  }
  if (f.kind === 'pill') {
    const sel = value || [];
    const toggle = (v) => sel.includes(v) ? set(sel.filter(x => x !== v)) : set([...sel, v]);
    return (
      <div>
        {labelEl}
        <div style={{ display: 'flex', flexWrap: 'wrap', gap: 8 }}>
          {f.options.map(o => {
            const on = sel.includes(o);
            return (
              <button key={o} type="button" onClick={() => toggle(o)} style={{
                padding: '8px 14px', borderRadius: 999,
                border: `1.5px solid ${on ? 'var(--sun-coral)' : 'var(--line)'}`,
                background: on ? 'rgba(252,172,100,0.10)' : '#fff',
                color: 'var(--navy-900)', fontSize: 13, cursor: 'pointer',
              }}>{o}</button>
            );
          })}
        </div>
      </div>
    );
  }
  // text, email, tel, url, number
  return (
    <div>
      {labelEl}
      <input type={f.kind || 'text'} placeholder={f.placeholder} required={f.required}
        value={value || ''} onChange={e => set(e.target.value)}
        onFocus={e => e.target.style.borderColor = 'var(--sun-coral)'}
        onBlur={e => e.target.style.borderColor = 'var(--line)'}
        style={inputStyle} />
    </div>
  );
}

/* =========== CLOSING BAND =========== */
function ClosingBand({ overline, title, italic, lede, ctaLabel, ctaHref }) {
  return (
    <section style={{ padding: '120px 0', background: 'var(--navy-900)', color: '#fff' }}>
      <div className="container" style={{
        maxWidth: 800, textAlign: 'center',
      }}>
        {overline && (
          <div style={{
            fontSize: 12, color: 'var(--sun-amber)', letterSpacing: '0.18em',
            textTransform: 'uppercase', fontWeight: 600, marginBottom: 20,
          }}>{overline}</div>
        )}
        <h2 style={{
          fontFamily: 'var(--font-display)', fontWeight: 400,
          fontSize: 'clamp(40px, 5vw, 72px)',
          margin: '0 0 24px', letterSpacing: '-0.02em', lineHeight: 1.05,
          textWrap: 'balance',
        }}>
          {title} <em style={{ fontStyle: 'italic', color: 'var(--sun-amber)' }}>{italic}</em>
        </h2>
        {lede && (
          <p style={{
            color: 'rgba(255,255,255,0.78)', fontSize: 18, lineHeight: 1.6,
            margin: '0 auto 36px', maxWidth: 600,
          }}>{lede}</p>
        )}
        {ctaLabel && (
          <a href={ctaHref || '#apply'} style={{
            display: 'inline-flex', alignItems: 'center', gap: 10,
            padding: '15px 32px', borderRadius: 999,
            background: 'linear-gradient(135deg, var(--sun-coral), var(--sun-amber))',
            color: '#fff', fontSize: 15, fontWeight: 500, textDecoration: 'none',
            boxShadow: '0 6px 18px rgba(252,172,100,0.36)',
          }}>{ctaLabel} →</a>
        )}
      </div>
    </section>
  );
}

window.PartnerHero = PartnerHero;
window.VisionBlock = VisionBlock;
window.StatsBand = StatsBand;
window.BenefitsGrid = BenefitsGrid;
window.ProcessSteps = ProcessSteps;
window.PartnerTestimonial = PartnerTestimonial;
window.ApplicationForm = ApplicationForm;
window.ClosingBand = ClosingBand;
