/* global React, Reveal, TypeReveal, Marquee */ function ServicesPage({ t, setPage }) { return ( <>
— {t.nav.services} / 2026


{t.services_page.sub}

{t.services_page.details.map((d, i) => (
{d.num}

{d.title}

{d.body}

    {d.deliverables.map((dv, j) =>
  • {dv}
  • )}
))}

{t.cta.headline_a}
{t.cta.headline_b}
{t.cta.headline_c}

{ e.preventDefault(); setPage('contact'); }}> {t.cta.btn}
); } function AboutPage({ t, setPage }) { const ap = t.about_page; return ( <>
— {ap.eyebrow}


{ap.lead}

{ap.lead2}

{ap.values_eyebrow}

{ap.values_title}

{ap.values.map((v, i) => (
{v.num}

{v.title}

{v.desc}

))}
{ap.team_eyebrow}

{ap.team_title}

{ap.team_desc}

{ap.team.map((m, i) => (
[ portrait · {m.name.split(' ')[0].toLowerCase()} ]
{m.name}
{m.role}
))}

{t.cta.headline_a}
{t.cta.headline_b}
{t.cta.headline_c}

{ e.preventDefault(); setPage('contact'); }}> {t.cta.btn}
); } function ContactPage({ t }) { const cp = t.contact_page; const [form, setForm] = React.useState({ name: '', company: '', email: '', message: '', budget: '', services: [] }); const [sent, setSent] = React.useState(false); const updateField = (k, v) => setForm(f => ({...f, [k]: v})); const toggleService = (s) => setForm(f => ({ ...f, services: f.services.includes(s) ? f.services.filter(x => x !== s) : [...f.services, s] })); const submit = (e) => { e.preventDefault(); setSent(true); setTimeout(() => setSent(false), 4000); }; return ( <>
— {cp.eyebrow}


{cp.sub}

{cp.info.map((info, i) => (
{info.k}
{info.v}
))}
updateField('name', e.target.value)} required />
updateField('company', e.target.value)} />
updateField('email', e.target.value)} required />
{cp.form.services_chips.map((s, i) => ( ))}
{cp.form.budget_chips.map((b, i) => ( ))}