/* ============================================================ PRAVI — SERVICES PAGE Broadsheet-rooted but customized: no eyebrow labels, no masthead chrome, no em-dashes. The Core Practices read as full editorial spreads; sectors use a distinct hover ledger. ============================================================ */ const { useState, useEffect, useRef } = React; const P = window.PRAVI; const ChevronMark = window.PraviChevronMark; const HomeNav = window.PraviHomeNav; const HomeFooter = window.PraviHomeFooter; const CtaBand = window.PraviCtaBand; const PageHero = window.PraviPageHero; const useReveal = window.praviUseReveal; const useScrollFX = window.praviUseScrollFX; const useHashScroll = window.praviUseHashScroll; const Head = window.PraviHead; const ProgressBar = window.PraviProgressBar; const Blob = window.PraviBlob; const CAT_FILE = window.PRAVI_CAT_FILE; const CAT_COVERS = { 'strategy-advisory': "assets/s-and-c.webp", 'execution-delivery': "assets/LAP2.webp", 'insight-intelligence': P.ServiceCategoryIMG[2], 'digital-systems': "assets/DT.webp", }; function Mark({ style = {} }) { return ( ); } /* =================================================================== THE CORE PRACTICES — each practice as a full editorial spread. Image + descriptor + the services it holds (names only) + a link into its own detail page. =================================================================== */ function CorePractices() { return (
The core practices. {/*

Four practice areas, sixteen services. Each practice opens into its own page, with the skills it covers and the case studies behind them.

*/}
{/*
4 practices
16 services
*/}
{P.serviceCategories.map((cat, i) => { const services = P.services.filter(s => s.category === cat.slug); const imageRight = i % 2 === 1; const cover = CAT_COVERS[cat.slug]; return ( ); })}
); } /* =================================================================== ASSEMBLE =================================================================== */ function Services() { const stageRef = useRef(null); useReveal(stageRef); useScrollFX(stageRef); useHashScroll(); return (
What we do,
and how we deliver.} lead="Comprehensive consulting at the intersection of governance, policy, and technology, organised into four core practices and delivered across business, government, and the development sector." buttons={<> Explore practices Contact Us } />
); } ReactDOM.createRoot(document.getElementById('root')).render();