// ───────────── Services page ───────────── const TWEAK_DEFAULTS_SERVICES = /*EDITMODE-BEGIN*/{ "palette": "aurora", "grain": true }/*EDITMODE-END*/; const SERVICES = [ { n: "01", icon: , title: "Brand identity", headline: "Strategy, naming, and the systems that make every dollar work harder.", blurb: "We build brands from the inside out — narrative first, design second, deployment third. Most engagements run 6–10 weeks and result in a brand strategy doc, a complete visual identity and a working guidelines site.", deliverables: ["Positioning & narrative", "Naming & messaging", "Logo, wordmark & marks", "Type system & motion", "Color, illustration & photography direction", "Brand guidelines site"], process: ["Brand discovery — 2 wks", "Strategy & direction — 2 wks", "Design system — 3 wks", "Launch package — 1 wk"], starts: "$24,000", pace: "6–10 weeks", cases: ["Halocene", "Northvane", "Verdant Co."] }, { n: "02", icon: , title: "Digital product", headline: "Marketing sites, e-commerce and tooling — designed and built in the same room.", blurb: "Whether it's a 4-page launch site or a multi-region commerce build, our design and engineering team works as one. We ship in two-week sprints with Friday demos so you see the work as it grows.", deliverables: ["Discovery & sitemap", "UX wireframes", "Visual design system", "Next.js / Webflow build", "CMS (Sanity, Contentful, Shopify)", "Analytics & SEO setup"], process: ["Discovery — 1 wk", "Design sprints — 4–6 wks", "Build sprints — 4–8 wks", "Launch — 1 wk"], starts: "$48,000", pace: "10–16 weeks", cases: ["MeinHaus", "Wikistrings", "AMPS"] }, { n: "03", icon: , title: "Growth marketing", headline: "Paid, SEO, lifecycle and content — operated as one system.", blurb: "Most growth teams optimise channels. We optimise the system. We run paid, SEO, lifecycle and content as a single budget against a single revenue number — measured monthly, not quarterly.", deliverables: ["Growth audit & forecast", "Paid social & search", "SEO & content engine", "Lifecycle / CRM automation", "Attribution & dashboards", "Monthly review"], process: ["Audit — 2 wks", "Setup & creative — 3 wks", "Always-on — monthly retainer"], starts: "$12,000 / mo", pace: "Min. 6-month retainer", cases: ["Verdant Co.", "AMPS"] }, { n: "04", icon: , title: "Content & film", blurb: "Editorial, photography, motion design and 3D — production in-house. We treat content as part of brand, not a campaign deliverable.", headline: "Editorial, motion and CGI — in-house, on-brand, on-time.", deliverables: ["Brand films & ads", "Photography direction", "Motion design / 3D / CGI", "Editorial design", "Social content engines", "Production management"], process: ["Concept — 1 wk", "Pre-prod — 2 wks", "Shoot / production — 1–3 wks", "Post & delivery — 2 wks"], starts: "$18,000", pace: "4–8 weeks per drop", cases: ["Halocene", "Northvane"] }, { n: "05", icon: , title: "Engineering", headline: "Fast, accessible, search-friendly products on modern stacks.", blurb: "Our engineering team works in TypeScript across Next.js, React Native and Node. We've built everything from a custom CMS to a real-time bidding tool — usually with a Lighthouse score above 95.", deliverables: ["Next.js / TypeScript", "Shopify & Sanity", "React Native apps", "Performance & SEO", "Accessibility (WCAG AA)", "AI integrations"], process: ["Tech discovery — 1 wk", "Architecture — 1 wk", "Build sprints — variable", "Hardening — 2 wks"], starts: "$36,000", pace: "Project-based or weekly", cases: ["MeinHaus", "Wikistrings"] }, { n: "06", icon: , title: "AI workflows", headline: "Practical AI for content, ops, support and personalisation.", blurb: "We build small, useful AI workflows — not theatre. Think a private RAG search over your docs, a brand-tuned copy assistant, or an internal tool that turns customer calls into structured insight.", deliverables: ["Workflow audit", "RAG / vector search", "Brand-tuned LLM assistants", "Internal tools", "Eval & monitoring"], process: ["Audit & scoping — 1 wk", "Prototype — 2 wks", "Build & integrate — 4–6 wks", "Eval & handover — 1 wk"], starts: "$28,000", pace: "6–10 weeks", cases: ["AMPS", "Northvane"] }, ]; function ServicesIntro({ accent }) { return (
What we do

Six
capabilities.

We don’t sell departments. We sell outcomes — and the six teams that get you there.

{SERVICES.map(s => ( {s.n} {s.title} ))}
{SERVICES.map((s, i) => ( ))}
); } function ServiceBlock({ s, accent, idx }) { return (
{s.icon}
{s.n}

{s.title}

{s.headline}

{s.blurb}

What you get
    {s.deliverables.map(d => (
  • {d}
  • ))}
How we work
    {s.process.map((p, k) => (
  1. 0{k+1} {p}
  2. ))}
Starts at
{s.starts}
Pace
{s.pace}
Selected work:  {s.cases.map((c, k) => ( {c}{k < s.cases.length - 1 ? "," : ""} ))}
Enquire about {s.title.toLowerCase()}
); } function ToolsStack({ accent }) { const groups = [ { label: "Design", tools: ["Figma", "Cinema 4D", "After Effects", "Photoshop", "Illustrator", "Webflow"] }, { label: "Engineering", tools: ["Next.js", "TypeScript", "Node", "Shopify", "Sanity", "Vercel", "Supabase"] }, { label: "Growth", tools: ["Meta Ads", "Google Ads", "Klaviyo", "Mailchimp", "Mixpanel", "Posthog"] }, { label: "AI", tools: ["OpenAI", "Anthropic", "LangChain", "Pinecone", "Replicate", "HuggingFace"] }, ]; return (
Tooling

The boring list of what we use.

{groups.map((g, i) => (
{g.label}
{g.tools.map(t => {t})}
))}
); } function ServicesApp() { const t = useSiteTweaks(TWEAK_DEFAULTS_SERVICES); const accent = PALETTES[t.palette] || PALETTES.aurora; return ( ); } const servicesRoot = ReactDOM.createRoot(document.getElementById("root")); servicesRoot.render();