/* services.jsx — Capabilities + Tech stack + Process (dark) */ function ServicesPage({ onNavigate }) { const { t, lang } = useLang(); const { SERVICES, STACK, PROCESS } = window.JMC_DATA; return (
{/* Hero strip */}
{t.services.hero.eyebrow}

{t.services.hero.title}

{t.services.hero.sub}

onNavigate('contact')}>{t.services.hero.primary} onNavigate('portfolio')}>{t.services.hero.secondary}
{/* Capabilities — alternating rows w/ images */}
{SERVICES.map((s, i) => ( ))}
{/* Tech stack */}
{STACK.map(s => (
{s.category[lang]}
    {s.items.map(item => (
  • {item}
  • ))}
))}
{/* Process */}
{PROCESS.map((p, i) => (
{p.n}
{p[lang].label}

{p[lang].body}

))}
onNavigate('contact')} onSecondary={() => onNavigate('portfolio')} image="assets/portfolio/bess-investors.png" />
); } function ServiceRow({ service, index, reverse, onNavigate }) { const { lang } = useLang(); return (
{service.eyebrow[lang]}

{service.title[lang]}

{service.body[lang]}

onNavigate('contact')}> {lang === 'es' ? 'Conversar este entregable' : 'Discuss this deliverable'}
); } window.ServicesPage = ServicesPage;