const IMG = { accounting: "https://images.pexels.com/photos/6863183/pexels-photo-6863183.jpeg?auto=compress&cs=tinysrgb&w=900", bookkeeping: "https://images.pexels.com/photos/6863254/pexels-photo-6863254.jpeg?auto=compress&cs=tinysrgb&w=900", tax: "https://images.pexels.com/photos/6863515/pexels-photo-6863515.jpeg?auto=compress&cs=tinysrgb&w=900", payroll: "https://images.pexels.com/photos/4098224/pexels-photo-4098224.jpeg?auto=compress&cs=tinysrgb&w=900", cfo: "https://images.pexels.com/photos/3184291/pexels-photo-3184291.jpeg?auto=compress&cs=tinysrgb&w=900", registration: "https://images.pexels.com/photos/4427430/pexels-photo-4427430.jpeg?auto=compress&cs=tinysrgb&w=900", marketing: "https://images.pexels.com/photos/7357/startup-photos.jpg?auto=compress&cs=tinysrgb&w=900", graphics: "https://images.pexels.com/photos/196644/pexels-photo-196644.jpeg?auto=compress&cs=tinysrgb&w=900", ecommerce: "https://images.pexels.com/photos/230544/pexels-photo-230544.jpeg?auto=compress&cs=tinysrgb&w=900", erp: "https://images.pexels.com/photos/1181244/pexels-photo-1181244.jpeg?auto=compress&cs=tinysrgb&w=900", seo: "https://images.pexels.com/photos/265087/pexels-photo-265087.jpeg?auto=compress&cs=tinysrgb&w=900" }; const VIDEO = { accounting: "https://cdn.pixabay.com/video/2017/01/12/7269-199224765_large.mp4", bookkeeping: "https://cdn.pixabay.com/video/2016/05/12/3174-166338976_large.mp4", tax: "https://cdn.pixabay.com/video/2017/07/23/10822-226624975_large.mp4", payroll: "https://cdn.pixabay.com/video/2015/10/16/1046-142621379_large.mp4", cfo: "https://cdn.pixabay.com/video/2016/02/29/2340-157269921_large.mp4", registration: "https://cdn.pixabay.com/video/2024/02/07/199623-910995789_large.mp4", marketing: "https://cdn.pixabay.com/video/2016/05/12/3188-166339073_large.mp4", graphics: "https://cdn.pixabay.com/video/2023/10/17/185341-875417497_large.mp4", ecommerce: "https://cdn.pixabay.com/video/2021/10/12/91744-636709154_large.mp4", erp: "https://cdn.pixabay.com/video/2021/11/08/95126-645704295_large.mp4", seo: "https://cdn.pixabay.com/video/2016/05/12/3174-166338976_large.mp4" }; // FAQPage structured data built from the exact questions a page displays. const faqLD = (list) => ({ "@context": "https://schema.org", "@type": "FAQPage", mainEntity: (list || []).map(f => ({ "@type": "Question", name: f.q, acceptedAnswer: { "@type": "Answer", text: f.a } })) }); const PAGE_SEO = { home: { path: "/", title: "Accounting, Tax, Payroll & IT Services | SMT Consulting", desc: "Accounting, bookkeeping, tax, payroll, CFO and IT services for growing businesses in the US, UK and Pakistan. Book your free consultation today." }, services: { path: "/services/", title: "Business Consultancy & IT Services | SMT Consulting Group", desc: "Explore accounting, bookkeeping, tax, payroll, CPA/CFO, registration, digital marketing, SEO, e-commerce and ERP services. Talk to our team.", crumb: "Services" }, about: { path: "/about/", title: "About SMT Consulting Group | Accounting & IT Experts", desc: "Meet SMT Consulting Group, a consulting, accounting and IT firm helping businesses in the US, UK and Pakistan grow. Learn about our team.", crumb: "About" }, training: { path: "/training/", title: "Professional Training Programs | SMT Consulting Group", desc: "Practical training programs in accounting, finance and business skills for professionals and teams. Explore upcoming programs and enroll.", crumb: "Training" }, stories: { path: "/success-stories/", title: "Client Success Stories | SMT Consulting Group", desc: "See how SMT Consulting Group has helped businesses organize finances, stay compliant and grow. Read real client success stories.", crumb: "Success Stories" }, reviews: { path: "/reviews/", title: "Client Reviews & Testimonials | SMT Consulting Group", desc: "Read what clients say about SMT Consulting Group's accounting, tax, payroll and IT services. Real feedback from real businesses.", crumb: "Reviews" }, blog: { path: "/resources/", title: "Accounting, Tax & Business Resources | SMT Consulting", desc: "Free guides, checklists and articles on accounting, tax, payroll and business growth for small business owners. Explore our resources.", crumb: "Resources" }, faqs: { path: "/faq/", title: "FAQs: Accounting, Tax & Payroll Help | SMT Consulting", desc: "Answers to common questions about our accounting, tax, payroll, onboarding, pricing and data security. Still have questions? Contact us.", crumb: "FAQs" }, contact: { path: "/contact/", title: "Contact SMT Consulting Group | Book a Free Consultation", desc: "Contact SMT Consulting Group by phone, email or WhatsApp. Offices serving the US, UK and Pakistan. Book your free consultation today.", crumb: "Contact" }, feedback: { path: "/feedback/", title: "Client Feedback | SMT Consulting Group", desc: "Existing SMT Consulting Group clients can share feedback on ongoing engagements directly with our team.", crumb: "Feedback" }, privacy: { path: "/privacy/", title: "Privacy Policy | SMT Consulting Group", desc: "Read SMT Consulting Group's privacy policy covering how we collect, use and protect client information.", crumb: "Privacy Policy" }, notfound: { path: "/404.shtml", title: "Page Not Found | SMT Consulting Group", desc: "The page you were looking for could not be found. Explore SMT Consulting Group's accounting, tax, payroll and IT services.", crumb: "Page not found" }, terms: { path: "/terms/", title: "Terms of Usage | SMT Consulting Group", desc: "Review the terms of usage governing your access to SMT Consulting Group's website and services.", crumb: "Terms of Usage" } }; const SERVICES = [ { extra: ["https://images.pexels.com/photos/8962481/pexels-photo-8962481.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/6863332/pexels-photo-6863332.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/5697255/pexels-photo-5697255.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4386370/pexels-photo-4386370.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "accounting", video: VIDEO.accounting, cat: "consult", title: "Accounting Services", h1: "Accounting Services for Small Businesses", seoTitle: "Accounting Services for Small Businesses | SMT Consulting", seoDesc: "Accurate monthly accounting, financial statements and reporting for small businesses and startups. Get clear numbers. Book a free consultation.", headline: "Accounting services that keep your business financially clear", tagline: "Strategic financial guidance, accurate reporting and compliance support so decisions rest on real numbers.", image: IMG.accounting, alt: "Accountant preparing financial statements with a calculator and reports", overview1: "Every business decision depends on knowing where you actually stand. Our accounting services cover the full cycle — from recording transactions correctly through to the financial analysis that informs your next move.", overview2: "We work to your reporting rhythm, whether that's monthly management accounts for an owner-led business or a fuller reporting pack for a board and its lenders.", problems: ["Books that are technically complete but tell you nothing useful about the business", "Reporting that arrives too late in the month to act on", "Uncertainty about whether your treatment of items would hold up under review", "No clear view of margins by product, service line or client"], provide: [ {title: "Financial accounting", desc: "Accurate recording and classification of every transaction, with a chart of accounts that fits how you actually operate."}, {title: "Financial reporting", desc: "Statements you can hand to a lender, investor or board without needing to explain them first."}, {title: "Management accounting", desc: "Internal reporting built around the decisions you make — pricing, hiring, capacity, spend."}, {title: "Financial statements", desc: "Balance sheet, income statement and cash flow statement, prepared on a consistent basis."}, {title: "Financial analysis", desc: "Trends, margins and variance analysis that explain why the numbers moved, not just that they did."}, {title: "Compliance support", desc: "Keeping your treatment aligned with the accounting standards and obligations that apply to you."} ], benefits: ["A single, reliable source of truth for your financial position", "Reporting delivered early enough in the cycle to be useful", "Fewer surprises at year end", "Analysis that connects financial results to operating decisions"], process: [ {n: "1", title: "Discovery call", desc: "We learn how your business runs and what decisions you're trying to support."}, {n: "2", title: "Financial review", desc: "We assess your current records, chart of accounts and reporting gaps."}, {n: "3", title: "Tailored setup", desc: "We put the right structure, calendar and reporting pack in place."}, {n: "4", title: "Ongoing delivery", desc: "Regular reporting, plus availability when a decision can't wait."} ], audience: "Owner-led businesses that have outgrown basic bookkeeping, companies preparing for finance or investment, and organisations whose current reporting no longer answers management's questions.", faqs: [ {q: "Do you work with small businesses?", a: "Yes. A large share of our accounting work is for small and mid-sized businesses — the scope is scaled to what the business actually needs."}, {q: "Can you take over from our current accountant?", a: "Yes. We handle transitions regularly, including reviewing prior-period treatment and reconciling opening balances."}, {q: "How often will we receive reports?", a: "Most clients are on a monthly or quarterly cycle. We agree the calendar up front so you know exactly when each pack arrives."}, {q: "Can you help if our records are behind?", a: "Yes — bringing neglected records up to date is common work for us. We start by establishing what's reliable and what needs rebuilding."} ] }, { extra: ["https://images.pexels.com/photos/6693661/pexels-photo-6693661.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4475523/pexels-photo-4475523.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/7217951/pexels-photo-7217951.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/3943716/pexels-photo-3943716.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "bookkeeping", video: VIDEO.bookkeeping, cat: "consult", title: "Bookkeeping Services", h1: "Bookkeeping Services for Small Businesses", seoTitle: "Bookkeeping Services for Small Businesses | SMT Consulting", seoDesc: "Reliable monthly bookkeeping, reconciliations and clean books for small businesses and e-commerce sellers. Book a free bookkeeping consultation.", headline: "Bookkeeping that stays current, accurate and audit-ready", tagline: "Day-to-day financial records maintained properly, so month-end stops being a scramble.", image: IMG.bookkeeping, alt: "Bookkeeper organising invoices and financial records at a desk", overview1: "Bookkeeping is where financial accuracy is either built or lost. When transactions are captured correctly as they happen, everything downstream — reporting, tax, lending conversations — becomes straightforward.", overview2: "We take on the full day-to-day cycle: payables, receivables, reconciliations and the ledger discipline that keeps your numbers trustworthy between reporting dates.", problems: ["Month-end reconciliation that takes days and still doesn't balance", "Unpaid invoices discovered weeks after they went overdue", "Bank feeds categorised inconsistently, making comparisons meaningless", "A backlog that grows faster than anyone can clear it"], provide: [ {title: "Daily bookkeeping", desc: "Transactions captured and categorised as they occur, not reconstructed months later."}, {title: "Accounts payable", desc: "Supplier invoices tracked, approved and scheduled so nothing is paid twice or paid late."}, {title: "Accounts receivable", desc: "Invoicing and collections follow-up, with clear visibility of what's outstanding and for how long."}, {title: "Bank reconciliation", desc: "Regular reconciliation against statements to catch errors and omissions early."}, {title: "General ledger", desc: "A clean, consistently maintained ledger that supports reliable reporting."}, {title: "Bookkeeping cleanup", desc: "Bringing neglected or inconsistent records back to a reliable baseline."} ], benefits: ["Books that are current rather than perpetually catching up", "Faster, calmer month-end close", "Clear visibility of who owes you and what you owe", "A reliable foundation for tax and reporting work"], process: [ {n: "1", title: "Records review", desc: "We assess the state of your current books and identify what needs cleanup."}, {n: "2", title: "Cleanup", desc: "We correct and reconcile historical records to establish a trustworthy baseline."}, {n: "3", title: "Routine setup", desc: "We agree the weekly and monthly rhythm, tools and approval points."}, {n: "4", title: "Ongoing bookkeeping", desc: "Continuous maintenance with regular reconciliation and reporting."} ], audience: "Businesses without an in-house bookkeeper, companies whose records have fallen behind, and finance teams that want the transactional load handled externally so they can focus on analysis.", faqs: [ {q: "Do you work in our existing accounting software?", a: "Yes — we work in the system you already use wherever practical, and will advise if a change would genuinely help."}, {q: "How far back can you clean up?", a: "We regularly rebuild multiple prior periods. The scope depends on what source documentation is still available."}, {q: "Is bookkeeping separate from your accounting service?", a: "They're separate services that fit together. Many clients use both — bookkeeping for daily records, accounting for reporting and analysis."}, {q: "How is our financial data kept secure?", a: "Access is limited to the team working on your account, and financial information is treated as confidential throughout."} ] }, { extra: ["https://images.pexels.com/photos/6863186/pexels-photo-6863186.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4386339/pexels-photo-4386339.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/7663144/pexels-photo-7663144.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/5900228/pexels-photo-5900228.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "tax", video: VIDEO.tax, cat: "consult", title: "Tax Services", h1: "Business & Personal Tax Filing Services", seoTitle: "Business & Personal Tax Filing Services | SMT Consulting", seoDesc: "Tax planning, compliance and tax return filing for individuals and businesses. Avoid penalties and file on time. Book a free tax consultation.", headline: "Tax preparation, planning and compliance without the last-minute panic", tagline: "Filings handled correctly and on time, with planning that happens before the year closes rather than after.", image: IMG.tax, alt: "Tax professional reviewing tax documents and forms", overview1: "Tax outcomes are decided largely by decisions made during the year, not by how the return is completed at the end of it. We handle both sides: accurate compliance work, and planning conversations early enough to matter.", overview2: "That includes preparation and filing, ongoing compliance obligations, and advisory support when a transaction or structural change has tax consequences you need to understand first.", problems: ["Filing deadlines that arrive before the records are ready", "Discovering a tax consequence after the transaction has already happened", "Uncertainty about which obligations actually apply to your business", "No planning conversation until the return is already being prepared"], provide: [ {title: "Tax preparation", desc: "Returns prepared accurately from properly reconciled records, filed on schedule."}, {title: "Tax planning", desc: "Forward-looking review of the decisions that will shape next year's position."}, {title: "Tax compliance", desc: "Tracking and meeting the filing and payment obligations that apply to your business."}, {title: "Advisory support", desc: "Clear analysis of the tax implications of transactions, structures and changes before you commit."}, {title: "Notice and query handling", desc: "Responding to authority correspondence with proper documentation and reasoning."}, {title: "Business and individual returns", desc: "Coverage for both the company and, where relevant, the owners behind it."} ], benefits: ["Deadlines met without a scramble", "Tax position understood before decisions are made, not after", "Documentation ready if a filing is ever questioned", "One team that already knows your financial records"], process: [ {n: "1", title: "Position review", desc: "We establish your obligations and review prior filings for consistency."}, {n: "2", title: "Records preparation", desc: "We reconcile the underlying records the filing will rest on."}, {n: "3", title: "Preparation and filing", desc: "Returns prepared, reviewed with you, then filed."}, {n: "4", title: "Forward planning", desc: "We flag decisions in the coming year worth structuring differently."} ], audience: "Businesses that want compliance handled properly rather than reactively, owners with both company and personal filing obligations, and companies facing a transaction with tax implications.", faqs: [ {q: "Can you handle both business and individual tax?", a: "Yes — and where the two interact, looking at them together usually produces a better result than treating them separately."}, {q: "What if we've fallen behind on filings?", a: "We regularly help businesses bring overdue filings up to date. The first step is establishing exactly what's outstanding."}, {q: "Do you provide planning, or only preparation?", a: "Both. Planning is where most of the value sits, and it needs to happen before the year closes."}, {q: "Can you respond to a notice we've received?", a: "Yes. We review the notice, establish the correct position and respond with supporting documentation."} ] }, { extra: ["https://images.pexels.com/photos/3184465/pexels-photo-3184465.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/6774633/pexels-photo-6774633.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/5668882/pexels-photo-5668882.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4098228/pexels-photo-4098228.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "payroll", video: VIDEO.payroll, cat: "consult", title: "Payroll Services", h1: "Payroll Services for Growing Businesses", seoTitle: "Payroll Services for US, UK & Pakistan | SMT Consulting", seoDesc: "Accurate, on-time payroll processing and compliance for growing teams. Save time and reduce payroll errors. Book a free payroll consultation.", headline: "Payroll processed accurately, on time, every cycle", tagline: "Your team paid correctly and your payroll obligations met — without it consuming someone's week.", image: IMG.payroll, alt: "Payroll administrator processing employee payment records on a laptop", overview1: "Payroll is the process least tolerant of error. A mistake is visible immediately, affects morale directly, and often carries a compliance consequence as well.", overview2: "We run the full cycle — calculation, processing, records and reporting — with the compliance obligations tracked alongside so nothing is missed between cycles.", problems: ["Payroll consuming days of internal time every cycle", "Errors surfacing only when an employee raises them", "Payroll tax obligations tracked informally or not at all", "Employee records scattered across spreadsheets and email"], provide: [ {title: "Payroll processing", desc: "Accurate calculation and processing on a consistent, predictable schedule."}, {title: "Payroll compliance", desc: "Tracking and meeting the payroll obligations that apply to your business."}, {title: "Employee records", desc: "Maintained, organised and confidential employee payroll records."}, {title: "Payroll reporting", desc: "Clear reporting for management, plus the filings your obligations require."}, {title: "Payroll tax support", desc: "Calculation, withholding and remittance handled as part of the cycle."}, {title: "Onboarding and changes", desc: "New hires, leavers and mid-cycle changes reflected correctly."} ], benefits: ["Employees paid correctly and on schedule", "Internal time returned to the business", "Payroll obligations tracked rather than remembered", "Confidential handling of sensitive employee data"], process: [ {n: "1", title: "Payroll review", desc: "We review your current setup, pay structures and obligations."}, {n: "2", title: "Migration", desc: "Employee records and history moved across and verified."}, {n: "3", title: "First cycle", desc: "We run the first cycle in parallel where useful, checking every figure."}, {n: "4", title: "Ongoing processing", desc: "Each cycle run on schedule, with reporting and compliance handled."} ], audience: "Growing businesses where payroll has outgrown a spreadsheet, companies with multiple pay structures, and organisations that want payroll off an already-stretched internal team.", faqs: [ {q: "How quickly can you take payroll over?", a: "Usually within one full cycle, depending on how complete your existing employee records are."}, {q: "Can you handle different pay structures?", a: "Yes — salaried, hourly, and mixed arrangements including variable components."}, {q: "Who do employees contact about their pay?", a: "That's agreed with you. Some clients keep queries internal; others route them to us directly."}, {q: "Is employee data kept confidential?", a: "Yes. Payroll data is restricted to the team members processing your account."} ] }, { extra: ["https://images.pexels.com/photos/3183197/pexels-photo-3183197.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/7681091/pexels-photo-7681091.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/5439381/pexels-photo-5439381.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/3760067/pexels-photo-3760067.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "cpa-cfo", video: VIDEO.cfo, cat: "consult", title: "CPA & CFO Services", h1: "Virtual CFO & CPA Services", seoTitle: "Virtual CFO & CPA Services | SMT Consulting Group", seoDesc: "Virtual CFO and CPA support for budgeting, forecasting, cash flow and financial strategy. Make confident decisions. Book a free consultation.", headline: "CFO-level financial strategy, without a full-time CFO", tagline: "Senior financial oversight — planning, forecasting, cash flow and board-level reporting — scaled to what your business needs.", image: IMG.cfo, alt: "Senior financial executives reviewing business performance in a boardroom", overview1: "Many businesses reach a point where they need CFO-level thinking — real forecasting, cash flow discipline, board reporting, financing conversations — well before they can justify a full-time hire.", overview2: "We provide that oversight on an ongoing or project basis: strategic financial planning, budgeting and forecasting, audit support, and the business advisory that comes with genuinely understanding your numbers.", problems: ["Cash flow managed by checking the bank balance rather than by forecast", "Budgets set once a year and never revisited against actuals", "Board or lender reporting assembled manually each time it's needed", "Growth decisions made without modelling the financial consequence"], provide: [ {title: "Financial reporting", desc: "Board- and lender-ready reporting packs produced on a consistent basis."}, {title: "Strategic financial planning", desc: "Multi-period planning that connects financial capacity to business ambition."}, {title: "Cash-flow management", desc: "Rolling cash forecasting, so funding gaps are visible weeks ahead rather than days."}, {title: "Budgeting and forecasting", desc: "Budgets built bottom-up and tracked against actuals with explained variances."}, {title: "Audit support", desc: "Preparation, documentation and liaison to make audit a process rather than an event."}, {title: "Business advisory", desc: "Senior input on pricing, capacity, investment and financing decisions."} ], benefits: ["Senior financial judgement without a senior salary", "Cash position understood forward, not just historically", "Reporting that stands up to board and lender scrutiny", "Growth decisions modelled before they're made"], process: [ {n: "1", title: "Financial diagnostic", desc: "We review your current position, reporting and forecasting capability."}, {n: "2", title: "Priority setting", desc: "We agree what needs attention first — usually cash, reporting or margin."}, {n: "3", title: "Framework build", desc: "We put the forecasting model and reporting pack in place."}, {n: "4", title: "Ongoing oversight", desc: "Regular review cycles, plus availability for decisions as they arise."} ], audience: "Companies that have outgrown bookkeeping-plus-year-end but aren't ready for a full-time CFO, businesses preparing for finance or audit, and boards that need reporting they can rely on.", faqs: [ {q: "Is this a full-time or part-time arrangement?", a: "Part-time and scalable. Most engagements are a fixed monthly commitment with additional capacity when something significant is underway."}, {q: "Can you work alongside our existing finance team?", a: "Yes — that's a common arrangement. We provide the senior layer above an existing bookkeeper or accountant."}, {q: "Do you help with financing conversations?", a: "Yes. We prepare the reporting and forecasting that lenders and investors expect, and support the conversations themselves."}, {q: "What's the minimum engagement?", a: "It depends on scope. We'll tell you honestly if your situation doesn't yet warrant this level of support."} ] }, { extra: ["https://images.pexels.com/photos/3760069/pexels-photo-3760069.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4427545/pexels-photo-4427545.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/8867434/pexels-photo-8867434.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4427558/pexels-photo-4427558.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "business-registration", video: VIDEO.registration, cat: "consult", title: "Business Registration", h1: "LLC & Business Registration Services", seoTitle: "LLC & Business Registration Services | SMT Consulting", seoDesc: "Start your business the right way with LLC and company registration support, documentation and compliance setup. Book a free consultation.", headline: "Company formation and registration, structured correctly from the start", tagline: "Getting the entity, registrations and compliance foundations right — because fixing structure later is expensive.", image: IMG.registration, alt: "Business owner completing company registration documents", overview1: "The structure you register under affects your tax position, your liability exposure and your ability to bring in partners or investment later. It's worth a proper conversation before the paperwork is filed.", overview2: "We advise on structure, handle the formation and registration process, and make sure the ongoing compliance obligations that come with your chosen structure are understood from day one.", problems: ["Choosing an entity type based on what someone else did rather than your situation", "Registrations completed but ongoing obligations never explained", "Discovering a structural constraint when trying to bring in an investor", "Compliance deadlines missed in the first year because nobody flagged them"], provide: [ {title: "Business structure consultation", desc: "Which entity type actually fits your plans, liability tolerance and tax position."}, {title: "Company formation", desc: "The formation process handled end to end, correctly first time."}, {title: "Registration support", desc: "The registrations your business type and activity require."}, {title: "Compliance guidance", desc: "A clear picture of your ongoing obligations and when each falls due."}, {title: "Documentation", desc: "Founding documentation prepared and properly filed."}, {title: "Post-formation setup", desc: "Connecting registration to your accounting, tax and payroll setup."} ], benefits: ["A structure chosen deliberately rather than by default", "Registration completed without rework", "Ongoing obligations known from the start", "A clean handover into accounting and tax"], process: [ {n: "1", title: "Structure conversation", desc: "We discuss your plans, ownership and risk position."}, {n: "2", title: "Recommendation", desc: "We recommend a structure and explain the trade-offs plainly."}, {n: "3", title: "Formation and filing", desc: "We prepare and file the formation and registration documents."}, {n: "4", title: "Compliance handover", desc: "You receive a clear calendar of ongoing obligations."} ], audience: "Founders registering a first business, existing businesses restructuring or adding an entity, and international operators establishing a local presence.", faqs: [ {q: "Which structure is right for my business?", a: "It depends on ownership, liability tolerance, tax position and funding plans. That conversation comes before any filing."}, {q: "How long does registration take?", a: "It varies by jurisdiction and entity type. We'll give you a realistic timeline once we know what you're registering."}, {q: "Can you restructure an existing business?", a: "Yes, though the tax consequences need modelling first — we look at that before recommending anything."}, {q: "What happens after registration?", a: "We hand over a compliance calendar and can connect the new entity directly into accounting, tax and payroll services."} ] }, { extra: ["https://images.pexels.com/photos/905163/pexels-photo-905163.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/6476589/pexels-photo-6476589.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/3182812/pexels-photo-3182812.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/7414284/pexels-photo-7414284.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "digital-marketing", video: VIDEO.marketing, cat: "it", title: "Digital Marketing", h1: "Digital Marketing & Social Media Marketing Services", seoTitle: "Digital Marketing & Social Media Services | SMT Consulting", seoDesc: "Social media marketing, Meta ads and lead generation campaigns built to bring you real enquiries and sales. Book a free marketing consultation.", headline: "Digital marketing built around leads, not impressions", tagline: "Paid social, lead generation and conversion work measured against pipeline rather than vanity metrics.", image: IMG.marketing, alt: "Marketing team reviewing campaign performance data on screens", overview1: "Most marketing reporting answers the wrong question. Reach and engagement are easy to grow and easy to mistake for progress. What matters is whether qualified enquiries are arriving and at what cost.", overview2: "We build campaigns around that: audience targeting that reflects who actually buys, creative tested against response, and reporting that ties spend to enquiries and conversions.", problems: ["Ad spend rising while enquiry volume stays flat", "Plenty of engagement, almost no qualified leads", "No clarity on which channel or campaign is actually producing business", "Traffic arriving on pages that were never built to convert"], provide: [ {title: "Meta and Facebook Ads", desc: "Campaign structure, audience targeting and creative testing built for response."}, {title: "Instagram marketing", desc: "Content and paid activity aligned to how the platform actually drives action."}, {title: "Lead generation", desc: "End-to-end funnels — offer, landing page, form and follow-up sequence."}, {title: "Social media marketing", desc: "Consistent, on-brand presence that supports the paid activity rather than duplicating it."}, {title: "Content marketing", desc: "Content built around the questions your buyers actually search for."}, {title: "Conversion optimisation", desc: "Improving what happens after the click — the usually-neglected half."} ], benefits: ["Spend judged against enquiries and cost per lead", "Clear view of which channels produce business", "Landing experiences built to convert, not just to exist", "Testing discipline rather than one-off campaigns"], process: [ {n: "1", title: "Audit and goals", desc: "We review current activity and agree what a good result actually looks like."}, {n: "2", title: "Strategy", desc: "Channel mix, audience definition, offer and measurement framework."}, {n: "3", title: "Build and launch", desc: "Campaigns, creative and landing experiences built and launched."}, {n: "4", title: "Test and scale", desc: "Continuous testing, with budget moved toward what's working."} ], audience: "Businesses that need a predictable flow of qualified enquiries, companies whose current ad spend isn't producing measurable results, and teams launching a new service or entering a new market.", faqs: [ {q: "What budget do we need to start?", a: "It depends on your market and cost per lead. We'll model a realistic starting budget before you commit — and say if it's too thin to test properly."}, {q: "How quickly will we see results?", a: "Early signal usually comes within weeks; reliable cost-per-lead figures take longer, as testing needs volume to be meaningful."}, {q: "Do you handle creative as well?", a: "Yes — creative is produced in-house alongside our graphics design service."}, {q: "How is performance reported?", a: "Against enquiries, cost per lead and conversion — not impressions and reach."} ] }, { extra: ["https://images.pexels.com/photos/3585047/pexels-photo-3585047.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/574071/pexels-photo-574071.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/1181298/pexels-photo-1181298.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4062561/pexels-photo-4062561.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "graphics-designing", video: VIDEO.graphics, cat: "it", title: "Graphics Designing", h1: "Graphic Design & Branding Services", seoTitle: "Graphic Design & Branding Services | SMT Consulting", seoDesc: "Logos, brand identity, social media creatives and marketing designs that look professional and build trust. Book a free design consultation.", headline: "Design that makes your business look like the business it is", tagline: "Brand identity, marketing creative and business collateral built to a consistent standard.", image: IMG.graphics, alt: "Designer working on brand identity layouts at a workstation", overview1: "Design is usually the first signal of credibility a prospect receives. Inconsistent or dated visual work quietly undermines otherwise strong businesses.", overview2: "We build the visual system — identity, templates, campaign creative — so everything your business puts out looks deliberate and recognisably yours.", problems: ["Materials that look like they came from four different companies", "No usable templates, so every document is rebuilt from scratch", "Ad creative that doesn't hold attention long enough to work", "Presentations that undercut the quality of the content"], provide: [ {title: "Brand identity", desc: "Logo, colour, typography and usage rules — a system, not just a mark."}, {title: "Social media graphics", desc: "Templated, on-brand assets that stay consistent across posts and platforms."}, {title: "Marketing creatives", desc: "Campaign visuals designed and tested for response."}, {title: "Business presentations", desc: "Investor, board and sales decks that support the argument rather than distract from it."}, {title: "Advertising creatives", desc: "Paid-media creative built to platform specifications and tested in variants."}, {title: "Corporate design", desc: "Reports, proposals and stationery that match the rest of the identity."} ], benefits: ["A coherent visual identity across every touchpoint", "Templates that make consistency the default", "Creative built for the platform it runs on", "Materials that match the quality of your work"], process: [ {n: "1", title: "Brand review", desc: "We audit existing materials and identify what's inconsistent or dated."}, {n: "2", title: "Direction", desc: "We agree a visual direction before production begins."}, {n: "3", title: "Design and build", desc: "Assets and templates produced and reviewed with you."}, {n: "4", title: "Handover", desc: "Files, templates and usage guidance so your team can carry it forward."} ], audience: "Businesses whose visual materials no longer reflect their standard, companies preparing a launch or rebrand, and teams needing consistent creative supply for ongoing campaigns.", faqs: [ {q: "Can you work with our existing brand?", a: "Yes. We can extend and systematise what you have rather than replacing it, if the foundation is sound."}, {q: "Do we get editable files?", a: "Yes — you receive source files and templates your team can work with."}, {q: "Can you produce ongoing campaign creative?", a: "Yes, on a retainer basis — this pairs naturally with our digital marketing work."}, {q: "Do you design presentations?", a: "Yes, including investor and board decks where the argument structure matters as much as the visuals."} ] }, { extra: ["https://images.pexels.com/photos/5900167/pexels-photo-5900167.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4968391/pexels-photo-4968391.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/3944405/pexels-photo-3944405.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/6214476/pexels-photo-6214476.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "ecommerce", video: VIDEO.ecommerce, cat: "it", title: "E-Commerce Website Development", h1: "E-Commerce Website Development Services", seoTitle: "E-Commerce Website Development Services | SMT Consulting", seoDesc: "Fast, mobile-friendly e-commerce websites built to convert visitors into customers. Launch or upgrade your online store. Get a free quote.", headline: "Online stores built to sell, not just to launch", tagline: "Store design, product catalogue, payments and conversion work — built mobile-first and search-visible.", image: IMG.ecommerce, alt: "Online store product page displayed on a laptop and phone", overview1: "An e-commerce site's job is measured in one place: completed orders. Plenty of stores look acceptable and still lose most of their traffic somewhere between product page and checkout.", overview2: "We build stores around that path — clear product presentation, working search and filtering, a checkout that doesn't lose people, and the technical foundations for search visibility.", problems: ["Traffic arriving but carts abandoned before checkout completes", "Product catalogue too slow or awkward to keep updated", "A store that works on desktop and fights the user on mobile", "Product pages that never appear in search results"], provide: [ {title: "E-commerce website design", desc: "Store design built around the browse-to-purchase path."}, {title: "Online store development", desc: "Robust build on a platform suited to your catalogue and volume."}, {title: "Product catalogue", desc: "Structured products, variants and categories your team can maintain easily."}, {title: "Payment integration", desc: "Secure, familiar payment options configured and tested properly."}, {title: "Mobile responsive design", desc: "Built mobile-first, since that's where most of your traffic will be."}, {title: "E-commerce SEO", desc: "Product and category pages structured to be found in search."} ], benefits: ["A checkout path built to complete, not to impress", "A catalogue your team can actually maintain", "Mobile experience treated as primary", "Search visibility built in rather than added later"], process: [ {n: "1", title: "Requirements", desc: "Catalogue size, variants, payment needs, shipping logic and integrations."}, {n: "2", title: "Design", desc: "Store and product page design reviewed before build."}, {n: "3", title: "Build and test", desc: "Development, payment testing and cross-device checks."}, {n: "4", title: "Launch and optimise", desc: "Launch, then conversion work informed by real behaviour."} ], audience: "Businesses launching online sales, retailers replacing a store that underperforms, and companies whose catalogue has outgrown their current platform.", faqs: [ {q: "Which platform do you build on?", a: "It depends on your catalogue, volume and integration needs. We recommend based on your situation rather than defaulting to one platform."}, {q: "Can you migrate an existing store?", a: "Yes, including product data, customer records and order history where the source platform allows."}, {q: "Will we be able to update products ourselves?", a: "Yes — day-to-day catalogue management is designed for your team, and we provide handover training."}, {q: "Is SEO included?", a: "Technical and on-page foundations are part of the build. Ongoing SEO is a separate service."} ] }, { extra: ["https://images.pexels.com/photos/11035471/pexels-photo-11035471.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4974915/pexels-photo-4974915.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/3861958/pexels-photo-3861958.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/1181263/pexels-photo-1181263.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "erp-mobile", video: VIDEO.erp, cat: "it", title: "ERP & Mobile App Development", h1: "ERP Software & Mobile App Development", seoTitle: "ERP Software & Mobile App Development | SMT Consulting", seoDesc: "Custom ERP systems and mobile apps that streamline operations and support business growth. Discuss your project in a free consultation.", headline: "Business systems that fit how you actually work", tagline: "ERP solutions, custom software and mobile applications built around your processes instead of forcing a rewrite.", image: IMG.erp, alt: "Developer building business software on multiple monitors", overview1: "Off-the-shelf software is the right answer more often than vendors admit. But when your process is genuinely a competitive advantage — or genuinely unusual — bending it to fit a package costs more than building properly.", overview2: "We build ERP solutions, internal systems and mobile applications where that's the honest answer, with integration into the tools you already run and automation of the manual steps between them.", problems: ["Critical processes running on spreadsheets nobody fully understands", "The same data entered manually into three different systems", "Reporting that requires someone to assemble it by hand each month", "Software that dictates your process rather than supporting it"], provide: [ {title: "ERP solutions", desc: "Integrated systems connecting operations, inventory, finance and reporting."}, {title: "Business software", desc: "Custom internal tools for processes no package handles well."}, {title: "Mobile applications", desc: "Apps for field teams, operations or customers, built for real conditions."}, {title: "Custom business systems", desc: "Systems designed around your workflow rather than a generic template."}, {title: "Workflow automation", desc: "Removing the manual handoffs between systems and steps."}, {title: "Database integration", desc: "Connecting existing data sources so they stop contradicting each other."} ], benefits: ["Systems that match your process instead of constraining it", "Manual double-entry eliminated", "Reporting generated rather than assembled", "A single reliable version of operational data"], process: [ {n: "1", title: "Process mapping", desc: "We map how the work actually flows today, including the workarounds."}, {n: "2", title: "Scope and approach", desc: "We define what to build, what to buy, and what to integrate."}, {n: "3", title: "Build in stages", desc: "Delivered incrementally so value arrives before the whole system is done."}, {n: "4", title: "Rollout and support", desc: "Training, migration and ongoing support after launch."} ], audience: "Operations-heavy businesses running critical processes on spreadsheets, companies whose systems don't talk to each other, and organisations needing a mobile tool for field or customer use.", faqs: [ {q: "Should we build or buy?", a: "Usually buy. We'll say so plainly when a package fits — building is only worth it when your process genuinely doesn't fit one."}, {q: "Can you integrate with our accounting system?", a: "Yes. Integration with existing finance and operational tools is normally part of the scope."}, {q: "How long does a project take?", a: "It depends on scope. We deliver in stages so useful functionality arrives well before final completion."}, {q: "Do you support the system after launch?", a: "Yes — ongoing support and enhancement arrangements are available."} ] }, { extra: ["https://images.pexels.com/photos/590022/pexels-photo-590022.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/6801874/pexels-photo-6801874.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/4348404/pexels-photo-4348404.jpeg?auto=compress&cs=tinysrgb&w=900", "https://images.pexels.com/photos/3183153/pexels-photo-3183153.jpeg?auto=compress&cs=tinysrgb&w=900"], id: "seo", video: VIDEO.seo, cat: "it", title: "SEO Services", h1: "SEO Services That Grow Organic Traffic & Leads", seoTitle: "SEO Services to Grow Organic Leads | SMT Consulting", seoDesc: "Technical SEO, keyword research, on-page optimization and content that help your business get found on Google. Book a free SEO consultation.", headline: "SEO that targets buying intent, not just traffic", tagline: "Technical, on-page, off-page and local SEO aimed at the searches that actually precede a purchase.", image: IMG.seo, alt: "Analyst reviewing search performance and keyword data", overview1: "Traffic growth is easy to produce and easy to misread. Ranking for broad informational terms can lift sessions substantially without producing a single enquiry.", overview2: "We work the other way round: identify the searches that precede a buying decision in your market, then build the technical foundation, page structure and authority needed to compete for them.", problems: ["Rankings improving while enquiries stay flat", "Technical issues quietly preventing pages from being indexed", "Multiple pages competing against each other for the same term", "No visibility in local search where buyers actually look"], provide: [ {title: "Technical SEO", desc: "Crawlability, indexation, site speed and structural issues resolved."}, {title: "On-page SEO", desc: "Page structure, headings, internal linking and metadata done properly."}, {title: "Off-page SEO", desc: "Authority built through legitimate, relevant links — not purchased volume."}, {title: "Local SEO", desc: "Visibility for location-based searches in the markets you serve."}, {title: "Keyword research", desc: "Mapping search intent to pages, prioritising commercial intent."}, {title: "SEO audits", desc: "Clear diagnosis of what's holding performance back, in priority order."} ], benefits: ["Focus on searches with commercial intent", "Technical barriers to ranking removed", "One clear target per page instead of internal competition", "Reporting tied to enquiries, not just position"], process: [ {n: "1", title: "Audit", desc: "Technical, content and authority review with prioritised findings."}, {n: "2", title: "Keyword and intent mapping", desc: "Target searches identified and mapped to specific pages."}, {n: "3", title: "Implementation", desc: "Technical fixes, on-page work and content improvements delivered."}, {n: "4", title: "Authority and review", desc: "Ongoing authority building with regular performance review."} ], audience: "Businesses whose buyers search before they buy, companies with a technically compromised site, and service businesses that need visibility in specific local markets.", faqs: [ {q: "How long before SEO produces results?", a: "Technical fixes can show within weeks. Competitive rankings typically take several months — anyone promising faster is overselling."}, {q: "Do you guarantee first-page rankings?", a: "No, and neither should anyone else. We commit to the work and to honest reporting on what it produces."}, {q: "Can you do local SEO for specific cities?", a: "Yes, where you genuinely serve those markets. We don't build fake location pages — they don't hold up and they damage the site."}, {q: "Is content writing included?", a: "SEO-focused content can be included in scope. We'll be clear about what's covered before we start."} ] } ]; const TESTIMONIALS = [ {initials: "RS", name: "Rashid Sarfarz", role: "Chief Executive, Areshah Limited, UK", quote: "We have been using SMT Consulting Group services for several years now. Their team has helped us set realistic goals and achieve them, and we feel more confident about our corporate and tax compliances."}, {initials: "SM", name: "Salim Ahmed Mughal", role: "Director, Jamshoro Power Company Limited", quote: "I was referred to SMT Consulting Group by a friend, and I am so glad I reached out. Their team went above and beyond to help resolve tax issues, and I was impressed with their expertise and professionalism."}, {initials: "JK", name: "Junaid Sayeed Khan", role: "Chief Executive, Maxima Logistics Services", quote: "As a business owner, our company was struggling to keep up with the accounting and tax compliances. SMT Consulting Group helped us get organized and streamlined our accounting and tax compliances."}, {initials: "KK", name: "Khalid Ahmed Khan", role: "Company Secretary, Asia Marine (Pvt) Ltd", quote: "We had a great experience working with SMT Consulting Group. Their team is knowledgeable, responsive, and professional. We highly recommend their services."}, {initials: "HS", name: "Hassan Arif Siddqui", role: "Chief Executive, Med Gas Technology", quote: "We have worked with several accounting firms in the past, but SMT Consulting stands out for their personalized service and attention to detail. They take the time to understand our business needs and provide tailored solutions that work for us."} ]; // Set to true after replacing the [ADD REAL TEAM MEMBER PROFILES …] block on the About page. const TEAM_MEMBERS_READY = false; const CASE_STUDIES = [ {client: "Areshah Limited", industry: "United Kingdom", service: "Corporate & Tax Compliance", challenge: "[ADD VERIFIED CHALLENGE DETAIL]", solution: "[ADD VERIFIED SOLUTION DETAIL]", result: "[ADD VERIFIED RESULT — no unverified figures]"}, {client: "Jamshoro Power Company Limited", industry: "Power Generation", service: "Tax Advisory", challenge: "[ADD VERIFIED CHALLENGE DETAIL]", solution: "[ADD VERIFIED SOLUTION DETAIL]", result: "[ADD VERIFIED RESULT — no unverified figures]"}, {client: "Maxima Logistics Services", industry: "Logistics", service: "Accounting & Tax Compliance", challenge: "[ADD VERIFIED CHALLENGE DETAIL]", solution: "[ADD VERIFIED SOLUTION DETAIL]", result: "[ADD VERIFIED RESULT — no unverified figures]"}, {client: "Med Gas Technology", industry: "Industrial Gas", service: "Accounting Services", challenge: "[ADD VERIFIED CHALLENGE DETAIL]", solution: "[ADD VERIFIED SOLUTION DETAIL]", result: "[ADD VERIFIED RESULT — no unverified figures]"} ]; const POSTS = [ {category: "Finance", date: "11 Aug 2024", title: "Maximizing Strategies Effective for Wealth Management", excerpt: "How structured planning and disciplined review cycles compound into long-term financial strength.", image: "https://images.pexels.com/photos/6801648/pexels-photo-6801648.jpeg?auto=compress&cs=tinysrgb&w=900", alt: "Financial planning documents and charts on a desk"}, {category: "Tax", date: "11 Aug 2024", title: "Tax Planning Made Easy: Expert Tips to Minimize Your Tax", excerpt: "Practical planning steps that work best when taken before the financial year closes.", image: "https://images.pexels.com/photos/6863183/pexels-photo-6863183.jpeg?auto=compress&cs=tinysrgb&w=900", alt: "Tax forms and a calculator on a desk"}, {category: "Business Growth", date: "11 Aug 2024", title: "Investing in Your Child's Future: Save for Education Expenses", excerpt: "Building an education fund that keeps pace with real cost increases over time.", image: "https://images.pexels.com/photos/5900228/pexels-photo-5900228.jpeg?auto=compress&cs=tinysrgb&w=900", alt: "Parent reviewing savings plans with a financial adviser"} ]; const TRAINING_PROGRAMS = [ {title: "Leadership Training", desc: "Building the decision-making, delegation and communication skills that turn strong individual contributors into effective managers.", who: "New and aspiring managers, team leads"}, {title: "Management Training", desc: "Practical management fundamentals — planning, performance conversations, delegation and running effective meetings.", who: "First-line and mid-level managers"}, {title: "Communication Skills Training", desc: "Clearer writing, more effective meetings, and difficult conversations handled with less friction.", who: "Any employee, especially client-facing roles"}, {title: "Team Building Training", desc: "Structured sessions that improve how a specific team collaborates, hands off work and resolves disagreements.", who: "Intact teams and departments"}, {title: "Employee Development", desc: "Individual development plans that map an employee's growth path against the skills the business actually needs.", who: "Employees on a growth or promotion track"}, {title: "Workplace Skills Training", desc: "Core professional skills — time management, workplace software, business writing and financial literacy basics.", who: "New hires and early-career employees"}, {title: "Corporate Training Programs", desc: "Multi-session programs rolled out across a department or the whole organisation, with consistent content and follow-up.", who: "HR and L&D teams planning organisation-wide training"}, {title: "Customized Training Programs", desc: "Training built specifically around your industry, your systems and the problems your team actually runs into.", who: "Organisations with needs generic courses don't cover"} ]; const TRAINING_FAQS = [ {q: "What is professional development training?", a: "Professional development training is structured learning aimed at improving specific workplace skills — leadership, communication, management or technical ability — so employees can perform better in their current or future role."}, {q: "Who can benefit from professional training programs?", a: "Anyone from new hires building workplace skills to experienced managers developing leadership capability. Programs are matched to where the participant is in their career, not delivered as one generic course."}, {q: "What types of training programs are available?", a: "Leadership, management, communication, team building, employee development, workplace skills and fully customised corporate training programs — covered in detail above."}, {q: "Can training programs be customized?", a: "Yes. Most of our corporate training work is customised to the client's industry, systems and the specific skills gap they're trying to close, rather than delivered as an off-the-shelf course."}, {q: "How can professional training improve workplace performance?", a: "Employees who understand a skill and have practised it under guidance make fewer errors, need less supervision and can take on more responsibility — which is where the performance improvement comes from."}, {q: "Why is employee development important?", a: "Employee development improves retention, builds an internal pipeline for future leadership roles, and reduces how much a business depends on external hiring when it needs to grow or fill a gap."}, {q: "How do leadership training programs benefit organizations?", a: "Leadership training gives new and aspiring managers the decision-making and communication skills to lead effectively sooner, which reduces costly management mistakes during the transition into the role."} ]; const GENERAL_FAQS = [ {q: "What services does SMT Consulting Group provide?", a: "Three areas. Consultancy covers accounting, bookkeeping, tax, payroll, CPA & CFO services and business registration. IT services cover digital marketing, graphics design, e-commerce development, ERP and mobile app development, and SEO. We also run professional and business training programmes."}, {q: "What size of business do you work with?", a: "From owner-led businesses through to established companies. The scope of work is scaled to what the business actually needs rather than sold as a fixed package."}, {q: "Do you work with clients outside the United States?", a: "Yes. We work with clients across multiple countries and industries, including power generation, logistics, marine services and industrial gas."}, {q: "How does an engagement start?", a: "With a consultation. We establish what you're dealing with, tell you honestly whether we're the right fit, and propose a scope only if we are."}, {q: "Can you take over from our current provider?", a: "Yes. Transitions are routine — we review prior-period work, reconcile opening positions and agree a handover timeline."}, {q: "Can we use more than one service together?", a: "Yes, and that's often where the value is. Accounting, tax and payroll share the same underlying records, so running them together removes duplication."}, {q: "How is our financial information protected?", a: "Client financial and business information is treated as confidential and accessed only by team members working on your account, except where disclosure is legally required."}, {q: "What are your business hours?", a: "Monday to Friday, 10:00 AM to 7:00 PM. You can reach us by email, phone or WhatsApp."}, {q: "How do you price your services?", a: "Pricing depends on scope — the number of transactions, entities, employees or deliverables involved. We give a clear quote after the initial consultation rather than a generic rate card, so you know exactly what's included before work starts."}, {q: "Do you offer ongoing support or only one-off projects?", a: "Both. Accounting, bookkeeping, payroll and CFO advisory are typically ongoing monthly engagements. IT services such as website builds or ERP implementation are usually project-based, with an optional maintenance arrangement afterward."}, {q: "How quickly can you start working with us?", a: "Once scope and terms are agreed, most consultancy engagements begin within one to two weeks. IT and development projects start once requirements are documented, which we can usually complete within the same timeframe."}, {q: "Who will actually handle our account?", a: "You are assigned a lead contact for your engagement who coordinates the specialists working on it — an accountant, a tax preparer, a developer or a marketer — so you have one point of contact rather than several."}, {q: "Do you sign confidentiality or service agreements?", a: "Yes. Every engagement is covered by a written agreement setting out scope, fees, confidentiality and responsibilities before any work begins."}, {q: "What software or systems do you work with?", a: "We work across commonly used accounting, payroll and ERP platforms and can advise on the right fit for your business rather than requiring you to adopt a specific tool."} ]; // Only logos that exist in /assets/clients/ are shown. `npm run build` checks the folder and // passes the list in (window.__SMT_CLIENT_LOGOS); with none uploaded the strip isn't rendered, // so there are no broken images and no layout shift. The old WordPress copies no longer exist. const CLIENT_LOGOS = ((typeof window !== "undefined" && window.__SMT_CLIENT_LOGOS) || []).map(file => ({ label: "Client logo", src: "/assets/clients/" + file })); const CATEGORIES = ["Accounting","Bookkeeping","Tax","Payroll","Business Consulting","Digital Marketing","SEO","E-Commerce","Technology","Business Growth","Finance","Training"]; class Component extends DCLogic { state = { ...this.initialRoute(), menu: null, drawer: false, scrolled: false, headerH: 104, faqOpen: {} }; openCookieSettings = (e) => { if (e && e.preventDefault) e.preventDefault(); if (window.SMTConsent) window.SMTConsent.openPreferences(); }; scrollToTop = () => { window.scrollTo({ top: 0, behavior: "smooth" }); }; // Cards visible at once and how far one step moves, matching the CSS slide // widths: 3 × 33.33% (desktop), 2 × 50% (tablet), one 88%-wide card that // shows a peek of the next one (phones). testiLayout() { const w = typeof window !== "undefined" ? window.innerWidth : 1440; if (w >= 1024) return { per: 3, step: 100 / 3 }; if (w >= 768) return { per: 2, step: 50 }; return { per: 1, step: 88 }; } testiMaxIndex() { return Math.max(0, TESTIMONIALS.length - this.testiLayout().per); } testiIndexNow() { return Math.min(this.state.testiIndex || 0, this.testiMaxIndex()); } // Auto-advance only while the carousel is on screen, the tab is visible and the // visitor hasn't asked for reduced motion; each tick re-renders the page. testiStartAuto = () => { clearInterval(this._testiTimer); if (this._testiReduce || !this._testiVisible || document.hidden) return; this._testiTimer = setInterval(() => this.testiNext(), 5000); }; testiPause = () => clearInterval(this._testiTimer); testiResume = () => this.testiStartAuto(); testiNext = () => { const max = this.testiMaxIndex(); this.setState(s => ({ testiIndex: Math.min(s.testiIndex || 0, max) >= max ? 0 : Math.min(s.testiIndex || 0, max) + 1 })); }; testiPrev = () => { const max = this.testiMaxIndex(); this.setState(s => ({ testiIndex: Math.min(s.testiIndex || 0, max) <= 0 ? max : Math.min(s.testiIndex || 0, max) - 1 })); }; testiGo = (i) => () => { this.setState({ testiIndex: Math.min(i, this.testiMaxIndex()) }); this.testiStartAuto(); }; testiTouchStart = (e) => { this._touchStartX = e.touches[0].clientX; this._touchStartY = e.touches[0].clientY; this._touchDeltaX = 0; this._touchDeltaY = 0; this.testiPause(); }; testiTouchMove = (e) => { this._touchDeltaX = e.touches[0].clientX - this._touchStartX; this._touchDeltaY = e.touches[0].clientY - this._touchStartY; }; testiTouchEnd = () => { // Only a mostly-horizontal swipe changes slides; vertical scrolling passes through. if (Math.abs(this._touchDeltaX) > 45 && Math.abs(this._touchDeltaX) > Math.abs(this._touchDeltaY)) { if (this._touchDeltaX > 0) this.testiPrev(); else this.testiNext(); } this._touchDeltaX = 0; this._touchDeltaY = 0; this.testiResume(); }; testiTrackRef = (el) => { if (!el || this._testiBound) return; this._testiBound = true; this._testiReduce = !!(window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches); this._testiVisible = false; if ("IntersectionObserver" in window) { this._testiObs = new IntersectionObserver((entries) => { this._testiVisible = entries[0].isIntersecting; if (this._testiVisible) this.testiStartAuto(); else this.testiPause(); }, { threshold: 0.25 }); this._testiObs.observe(el); } else { this._testiVisible = true; this.testiStartAuto(); } this._onVisibility = () => { if (document.hidden) this.testiPause(); else this.testiStartAuto(); }; document.addEventListener("visibilitychange", this._onVisibility); }; toggleFaq = (key) => (e) => { if (e) e.preventDefault(); this.setState(s => ({ faqOpen: Object.assign({}, s.faqOpen, { [key]: !s.faqOpen[key] }) })); }; buildFaqList = (prefix, faqs) => (faqs || []).map((f, i) => { const key = prefix + i; const open = !!this.state.faqOpen[key]; return { q: f.q, a: f.a, open, rows: open ? "1fr" : "0fr", arrowRotate: open ? "rotate(180deg)" : "rotate(0deg)", toggle: this.toggleFaq(key) }; }); measure = () => { const el = document.getElementById("om-fixed-stack"); const hh = el ? Math.round(el.getBoundingClientRect().height) : 104; const s = window.scrollY > 60; const past = window.scrollY > 300; try { document.documentElement.style.setProperty("--smt-header-h", hh + "px"); } catch (e) {} if (this.state.drawer && window.innerWidth > 980) this.setState({ drawer: false }); const per = this.testiLayout().per; if (s !== this.state.scrolled || hh !== this.state.headerH || past !== this.state.pastFold || per !== this.state.testiPer) this.setState({ scrolled: s, headerH: hh, pastFold: past, testiPer: per }); }; onScroll = () => this.measure(); componentDidMount() { window.addEventListener("scroll", this.onScroll, { passive: true }); window.addEventListener("keydown", this.onKeyDown); window.addEventListener("resize", this.onScroll); this.measure(); this._m = setTimeout(this.measure, 300); try { document.documentElement.lang = "en"; } catch (e) {} window.SMTNavigate = (page) => { if (PAGE_SEO[page]) this.go(page)(); }; this._formT0 = Date.now(); if (this.routingEnabled()) { window.addEventListener("popstate", this.syncFromLocation); this.syncFromLocation(); } this.updateSEO(); } // Render the URL's page on the very first paint (instead of Home, then switching), // so deep links don't flash the home hero or start downloading its video. initialRoute() { if (!this.routingEnabled()) return { page: "home", svcId: null }; try { return this.pathToState(window.location.pathname); } catch (e) { return { page: "home", svcId: null }; } } routingEnabled() { try { return /(^|\.)smtconsultinggroup\.com$/.test(window.location.hostname); } catch (e) { return false; } } pathToState(pathname) { const p = (pathname || "/").replace(/\/index\.html$/, "/"); const m = p.match(/^\/services\/([a-z0-9-]+)\/$/); if (m && SERVICES.some(s => s.id === m[1])) return { page: "service", svcId: m[1] }; const key = Object.keys(PAGE_SEO).find(k => PAGE_SEO[k].path === p); return { page: key || "notfound", svcId: null }; } syncFromLocation = () => { const st = this.pathToState(window.location.pathname); this.setState({ page: st.page, svcId: st.svcId, menu: null, drawer: false }); }; pushPath(path) { if (!this.routingEnabled()) return; try { if (window.location.pathname !== path) window.history.pushState({}, "", path); } catch (e) {} } onKeyDown = (e) => { if (e.key === "Escape" && this.state.drawer) { this.setState({ drawer: false }); const t = document.getElementById("om-nav-toggle"); if (t) t.focus(); } }; syncDrawerClass() { try { document.documentElement.classList.toggle("smt-drawer-open", !!this.state.drawer); } catch (e) {} } componentDidUpdate() { this.syncDrawerClass(); this.updateSEO(); } componentWillUnmount() { window.removeEventListener("scroll", this.onScroll); window.removeEventListener("keydown", this.onKeyDown); window.removeEventListener("resize", this.onScroll); window.removeEventListener("popstate", this.syncFromLocation); clearInterval(this._testiTimer); if (this._testiObs) this._testiObs.disconnect(); if (this._onVisibility) document.removeEventListener("visibilitychange", this._onVisibility); clearTimeout(this._m); } setMeta(sel, attr, value) { const el = document.querySelector(sel); if (el) el.setAttribute(attr, value); } imgFallback = (e) => { const el = e.currentTarget; if (!el) return; const fb = el.getAttribute("data-fallback"); if (!el.dataset.fb && fb) { el.dataset.fb = "1"; el.src = fb; return; } // Local file and fallback both failed: hide the tile instead of showing a broken image. if (el.parentElement) el.parentElement.style.display = "none"; // No logo could load at all: hide the whole "Trusted by" strip rather than leave it empty. const track = el.closest(".om-marquee-track"); const section = el.closest("section"); if (track && section && ![...track.children].some(c => c.style.display !== "none")) section.style.display = "none"; }; setXDefault(href) { let el = document.querySelector('link[hreflang="x-default"]'); if (!el) { el = document.createElement("link"); el.setAttribute("rel", "alternate"); el.setAttribute("hreflang", "x-default"); document.head.appendChild(el); } el.setAttribute("href", href); } setLD(id, obj) { let el = document.getElementById(id); if (!el) { el = document.createElement("script"); el.type = "application/ld+json"; el.id = id; document.head.appendChild(el); } el.textContent = JSON.stringify(obj); } updateSEO() { const page = this.state.page; const seoKey = page + "|" + (this.state.svcId || ""); if (this._seoKey === seoKey) return; this._seoKey = seoKey; const base = "https://smtconsultinggroup.com"; if (page === "notfound") { // Error page: served at whatever URL was missing, so no canonical/hreflang, never indexed. document.title = PAGE_SEO.notfound.title; this.setMeta('meta[name="description"]', "content", PAGE_SEO.notfound.desc); this.setMeta('meta[name="robots"]', "content", "noindex, follow"); ['link[rel="canonical"]', 'link[rel="alternate"][hreflang="en"]', 'link[rel="alternate"][hreflang="x-default"]'].forEach(s => { const el = document.querySelector(s); if (el) el.remove(); }); ["ld-breadcrumb", "ld-service", "ld-faq"].forEach(id => { const el = document.getElementById(id); if (el) el.remove(); }); return; } let meta = PAGE_SEO[page] || PAGE_SEO.home; let path = meta.path; let title = meta.title, desc = meta.desc; let breadcrumbs = [{ "@type": "ListItem", position: 1, name: "Home", item: base + "/" }]; let serviceSchema = null; if (page === "service" && this.state.svcId) { const svc = SERVICES.find(s => s.id === this.state.svcId); if (svc) { path = "/services/" + svc.id + "/"; title = svc.seoTitle || (svc.title + " | SMT Consulting Group").slice(0, 60); desc = svc.seoDesc || svc.tagline.slice(0, 150); breadcrumbs.push({ "@type": "ListItem", position: 2, name: "Services", item: base + "/services/" }); breadcrumbs.push({ "@type": "ListItem", position: 3, name: svc.title, item: base + path }); serviceSchema = { "@context": "https://schema.org", "@type": "Service", name: svc.title, description: svc.tagline, provider: { "@type": "Organization", name: "SMT Consulting Group", url: base }, serviceType: svc.title, areaServed: ["United States", "United Kingdom", "Pakistan"] }; } } else if (path !== "/") { breadcrumbs.push({ "@type": "ListItem", position: 2, name: meta.crumb || title.split("|")[0].trim(), item: base + path }); } document.title = title; this.setMeta('link[rel="alternate"][hreflang="en"]', "href", base + path); this.setXDefault(base + path); this.setMeta('meta[name="description"]', "content", desc); this.setMeta('link[rel="canonical"]', "href", base + path); this.setMeta('meta[property="og:title"]', "content", title); this.setMeta('meta[property="og:description"]', "content", desc); this.setMeta('meta[property="og:url"]', "content", base + path); this.setMeta('meta[name="twitter:title"]', "content", title); this.setMeta('meta[name="twitter:description"]', "content", desc); this.setMeta('meta[name="robots"]', "content", "index, follow, max-image-preview:large"); // A breadcrumb trail needs at least two steps; the homepage has none. if (breadcrumbs.length > 1) this.setLD("ld-breadcrumb", { "@context": "https://schema.org", "@type": "BreadcrumbList", itemListElement: breadcrumbs }); else { const el = document.getElementById("ld-breadcrumb"); if (el) el.remove(); } if (serviceSchema) this.setLD("ld-service", serviceSchema); else { const el = document.getElementById("ld-service"); if (el) el.remove(); } // FAQ markup only where those FAQs are the page's own content (home repeats /faq/'s list, so it has none). const svcForFaq = page === "service" ? SERVICES.find(s => s.id === this.state.svcId) : null; const faqs = page === "training" ? TRAINING_FAQS : page === "faqs" ? GENERAL_FAQS : svcForFaq ? svcForFaq.faqs : null; if (faqs && faqs.length) this.setLD("ld-faq", faqLD(faqs)); else { const el = document.getElementById("ld-faq"); if (el) el.remove(); } } toggleDrawer = (e) => { if (e && e.preventDefault) e.preventDefault(); this.setState(s => ({ drawer: !s.drawer })); }; isModifiedClick(e) { return !!(e && (e.metaKey || e.ctrlKey || e.shiftKey || e.altKey || e.button === 1)); } go = (page) => (e) => { if (this.isModifiedClick(e) && this.routingEnabled()) return; if (e && e.preventDefault) e.preventDefault(); this.setState({ page, svcId: null, menu: null, drawer: false }); this.pushPath((PAGE_SEO[page] && PAGE_SEO[page].path) || "/"); if (typeof window !== "undefined") window.scrollTo(0, 0); }; openService = (id) => (e) => { if (this.isModifiedClick(e) && this.routingEnabled()) return; if (e && e.preventDefault) e.preventDefault(); this.setState({ page: "service", svcId: id, menu: null, drawer: false }); this.pushPath("/services/" + id + "/"); if (typeof window !== "undefined") window.scrollTo(0, 0); }; setMenu = (menu) => () => this.setState({ menu }); toggleMenu = (menu) => (e) => { e.preventDefault(); this.setState(s => ({ menu: s.menu === menu ? null : menu })); }; toggleWaPicker = (e) => { e.preventDefault(); this.setState(s => ({ waOpen: !s.waOpen })); }; makeCounterRef = (target) => (el) => { if (!el || el.dataset.counted) return; // The final figure is already in the markup; only animate for visitors who haven't asked for less motion. if (window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches) return; const obs = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting && !el.dataset.counted) { el.dataset.counted = "1"; const duration = 1500, start = performance.now(); const tick = (now) => { const p = Math.min((now - start) / duration, 1); const eased = 1 - Math.pow(1 - p, 3); const val = Math.round(target * eased); el.textContent = (val >= 1000 ? Math.round(val / 1000) + "K" : val) + (p >= 1 ? "+" : ""); if (p < 1) requestAnimationFrame(tick); else el.textContent = Math.round(target / 1000) + "K+"; }; requestAnimationFrame(tick); obs.disconnect(); } }); }, { threshold: 0.4 }); obs.observe(el); }; clientsCounterRef = this.makeCounterRef(30000); projectsCounterRef = this.makeCounterRef(25000); setFormStatus = (key, val) => this.setState(s => ({ forms: Object.assign({}, s.forms, { [key]: val }) })); // Forms post to our own /api/contact.php first (server-side validation, rate limiting, delivery // to info@). FormSubmit.co is only a fallback for when that endpoint is unreachable or can't send // mail — never for a submission the server rejected (validation, spam, rate limit). makeSubmitHandler = (key, subject) => (e) => { e.preventDefault(); const form = e.target; const cur = (this.state.forms || {})[key]; if (cur && cur.busy) return; if (!form.checkValidity()) { form.reportValidity(); return; } const honey = form.querySelector('input[name="_honey"]'); if (honey && honey.value) return; this.setFormStatus(key, { busy: true, kind: "loading", msg: "Sending…" }); const fd = new FormData(form); fd.set("form", key); fd.set("_elapsed", String(Date.now() - (this._formT0 || 0))); fd.set("_page", window.location.href); const okMsg = key === "newsletter" ? "You're subscribed — thanks." : "Thanks — your message has been sent. We'll be in touch shortly."; const failMsg = "Something went wrong sending your message. Please try again, or email us directly at info@smtconsultinggroup.com."; const done = () => { this.setFormStatus(key, { busy: false, kind: "success", msg: okMsg }); form.reset(); // Conversion event for whichever analytics/ad tools the visitor consented to. const evt = key === "newsletter" ? "subscribe" : key === "feedback" ? "feedback" : "lead"; if (window.SMTTrack) window.SMTTrack(evt, { form: key, service: fd.get("service") || undefined }); }; const fail = (msg) => this.setFormStatus(key, { busy: false, kind: "error", msg: msg || failMsg }); const viaFormSubmit = () => { const fs = new FormData(form); fs.set("_subject", subject); fs.set("_captcha", "false"); fs.set("_template", "table"); const emailField = form.querySelector('input[name="email"]'); if (emailField && emailField.value) fs.set("_replyto", emailField.value); return fetch("https://formsubmit.co/ajax/info@smtconsultinggroup.com", { method: "POST", body: fs, headers: { Accept: "application/json" } }) .then(res => res.json().then(data => ({ ok: res.ok, data }))) .then(r => { if (r.ok && r.data && String(r.data.success) === "true") done(); else throw new Error(JSON.stringify(r.data)); }); }; fetch("/api/contact.php", { method: "POST", body: fd, headers: { Accept: "application/json" }, credentials: "same-origin" }) .then(res => { const isJson = (res.headers.get("content-type") || "").indexOf("application/json") !== -1; if (!isJson) return viaFormSubmit(); return res.json().then(data => { if (res.ok && data && data.ok) return done(); if (res.status >= 400 && res.status < 500) return fail(data && data.message); return viaFormSubmit(); }); }) .catch(() => viaFormSubmit()) .catch(err => { console.error("Form submission failed:", err); fail(); }); }; statusStyle = (kind, onDark) => { const base = { padding: "0.8rem 1rem", borderRadius: "6px", fontSize: "13.5px", fontWeight: 600, marginTop: "1.2rem", lineHeight: 1.5 }; if (kind === "success") return Object.assign({}, base, { background: onDark ? "rgba(255,255,255,0.10)" : "#e6f4ea", color: onDark ? "#bdf0cd" : "#1e7e34" }); if (kind === "error") return Object.assign({}, base, { background: onDark ? "rgba(255,255,255,0.10)" : "#fdeceb", color: onDark ? "#ffcac4" : "#c0392b" }); return Object.assign({}, base, { background: onDark ? "rgba(255,255,255,0.08)" : "#eef2f7", color: onDark ? "#d3e0ee" : "#4b5c70" }); }; formVals = () => { const f = this.state.forms || {}; const out = {}; [["consult", false], ["contact", false], ["feedback", false], ["newsletter", true]].forEach(pair => { const k = pair[0], dark = pair[1]; const s = f[k] || {}; out[k + "Msg"] = s.msg || ""; out[k + "Busy"] = !!s.busy; out[k + "StatusStyle"] = this.statusStyle(s.kind, dark); }); return out; }; renderVals() { const { page, svcId, menu, drawer, scrolled, headerH } = this.state; const solid = scrolled || page !== "home"; const svc = SERVICES.find(s => s.id === svcId) || SERVICES[0]; const decorate = (list) => list.map(s => ({ id: s.id, title: s.title, tagline: s.tagline, image: s.image, imageSafe: s.image, alt: s.alt, href: "/services/" + s.id + "/", open: this.openService(s.id) })); const related = SERVICES.filter(s => s.cat === svc.cat && s.id !== svc.id).slice(0, 3) .map(s => ({ title: s.title, href: "/services/" + s.id + "/", open: this.openService(s.id) })); return { imgFallback: this.imgFallback, homeHeroVideoRef: (el) => { if (!el) return; el.muted = true; el.loop = true; el.autoplay = true; el.playsInline = true; el.controls = false; el.preload = "auto"; // Poster only for visitors who asked for less motion or less data. const conn = navigator.connection || {}; const reduce = window.matchMedia && window.matchMedia("(prefers-reduced-motion: reduce)").matches; if (reduce || conn.saveData) { el.preload = "none"; el.autoplay = false; return; } const src = "https://videos.pexels.com/video-files/7593581/7593581-sd_640_360_25fps.mp4"; if (el.dataset.omSrc !== src) { el.dataset.omSrc = src; el.querySelector("source").setAttribute("src", src); el.load(); } const tryPlay = () => { if (el.paused) { const p = el.play(); if (p && p.catch) p.catch(() => {}); } }; setTimeout(tryPlay, 0); if (el.dataset.omCanplayBound !== "1") { el.dataset.omCanplayBound = "1"; el.addEventListener("canplay", tryPlay); } }, homeStoryVideoRef: (el) => { if (!el) return; el.controls = true; el.playsInline = true; el.preload = "metadata"; }, heroPoster: "/assets/img/home-hero-poster-1200.webp", isHome: page === "home", isService: page === "service", pageLoading: !!this.state.pageLoading, isServices: page === "services", isAbout: page === "about", isTraining: page === "training", isStories: page === "stories", isReviews: page === "reviews", isBlog: page === "blog", isFaqs: page === "faqs", isContact: page === "contact", isFeedback: page === "feedback", isPrivacy: page === "privacy", isTerms: page === "terms", isNotFound: page === "notfound", openCookieSettings: this.openCookieSettings, showBackToTop: !!this.state.pastFold, scrollToTop: this.scrollToTop, goHome: this.go("home"), goServices: this.go("services"), goAbout: this.go("about"), goTraining: this.go("training"), goStories: this.go("stories"), goReviews: this.go("reviews"), goBlog: this.go("blog"), goFaqs: this.go("faqs"), goContact: this.go("contact"), goFeedback: this.go("feedback"), goPrivacy: this.go("privacy"), goTerms: this.go("terms"), consultOpen: menu === "consult", itOpen: menu === "it", aboutOpen: menu === "about", contactOpen: menu === "contact", openConsult: this.setMenu("consult"), openIt: this.setMenu("it"), openAbout: this.setMenu("about"), openContact: this.setMenu("contact"), closeMenu: this.setMenu(null), servicesOpen: menu === "services", openServices: this.setMenu("services"), trainingOpen: menu === "training", openTraining: this.setMenu("training"), toggleConsult: this.toggleMenu("consult"), toggleIt: this.toggleMenu("it"), toggleTraining: this.toggleMenu("training"), toggleAbout: this.toggleMenu("about"), toggleContact: this.toggleMenu("contact"), menuTop: headerH + "px", consultOpen: menu === "consult", itOpen: menu === "it", openConsult: this.setMenu("consult"), openIt: this.setMenu("it"), drawerOpen: drawer, navToggleLabel: drawer ? "Close navigation menu" : "Open navigation menu", toggleDrawer: this.toggleDrawer, needsSpacer: page !== "home", hdrBg: solid ? "#00224A" : "transparent", hdrBorder: solid ? "rgba(255,255,255,0.10)" : "transparent", hdrShadow: solid ? "0 6px 26px rgba(0,17,38,0.30)" : "none", hdrBlur: solid ? "saturate(140%) blur(10px)" : "none", heroBtnHover: { opacity: 0.92, transform: "translateY(-2px)", boxShadow: "0 12px 28px rgba(0,17,38,0.35)" }, consultServices: decorate(SERVICES.filter(s => s.cat === "consult")), itServices: decorate(SERVICES.filter(s => s.cat === "it")), svcTitle: svc.title, svcCategory: svc.cat === "consult" ? "Consultancy" : "IT Services", svcHeadline: svc.headline, svcH1: svc.h1 || svc.headline, svcTagline: svc.tagline, svcImage: svc.image, svcVideoSrc: svc.video, svcWaLink: "https://wa.me/12407035405?text=" + encodeURIComponent("Hello SMT Consulting Group, I would like to know more about your " + svc.title + ".") , svcHeroVideoRef: (el) => { if (!el) return; if (el.dataset.omSrc !== svc.video) { el.dataset.omSrc = svc.video; el.setAttribute("src", svc.video); el.load(); } el.muted = true; el.loop = true; el.autoplay = true; el.playsInline = true; el.controls = false; const p = el.play(); if (p && p.catch) p.catch(() => {}); }, svcAlt: svc.alt, svcOverview1: svc.overview1, svcOverview2: svc.overview2, svcAudience: svc.audience, svcProblems: svc.problems.map(text => ({ text })), svcBenefits: svc.benefits.map(text => ({ text })), svcGallery: svc.extra.slice(0, 3).map((url, i) => ({ url, alt: svc.title + " — photo " + (i + 1) })), svcProvide: svc.provide, svcProcess: svc.process, svcFaqs: this.buildFaqList("svc" + svc.id + "-", svc.faqs), svcRelated: related, testimonials: TESTIMONIALS, // Step by the real card width; the last position sits flush with the right edge. testiTransform: (() => { const L = this.testiLayout(); const off = Math.min(this.testiIndexNow() * L.step, Math.max(0, TESTIMONIALS.length * L.step - 100)); return "translateX(-" + off + "%)"; })(), testiTrackRef: this.testiTrackRef, testiPause: this.testiPause, testiResume: this.testiResume, testiNext: this.testiNext, testiPrev: this.testiPrev, testiTouchStart: this.testiTouchStart, testiTouchMove: this.testiTouchMove, testiTouchEnd: this.testiTouchEnd, testiArrowHover: { transform: "translateY(-50%) scale(1.08)" }, // One dot per reachable position (5 on phones, 3 on desktop), not per card. testiDots: Array.from({ length: this.testiMaxIndex() + 1 }, (_, i) => ({ go: this.testiGo(i), label: "Show testimonials, position " + (i + 1) + " of " + (this.testiMaxIndex() + 1), current: i === this.testiIndexNow() ? "true" : "false", active: i === this.testiIndexNow() ? "#D97008" : "rgba(255,255,255,0.3)" })), caseStudies: CASE_STUDIES.map(cs => { const real = v => typeof v === "string" && v.trim() !== "" && !/^\[ADD/i.test(v.trim()); const hasDetail = real(cs.challenge) && real(cs.solution) && real(cs.result); return Object.assign({}, cs, { hasDetail, columns: hasDetail ? "220px 1fr" : "1fr" }); }), // Editor guidance embedded in the page — never shown to visitors. showEditorNotes: false, // "Meet our team" appears once TEAM_MEMBERS_READY is set to true (see the About page markup). showTeam: TEAM_MEMBERS_READY, posts: POSTS.map(p => Object.assign({}, p, { imageSafe: p.image })), generalFaqs: this.buildFaqList("general-", GENERAL_FAQS), generalFaqsPage: this.buildFaqList("generalpage-", GENERAL_FAQS), trainingPrograms: TRAINING_PROGRAMS, trainingFaqs: this.buildFaqList("training-", TRAINING_FAQS), svcSecondaryImage: svc.extra[3], categories: CATEGORIES.map(name => ({ name })), clientSlots: CLIENT_LOGOS, showClientLogos: CLIENT_LOGOS.length > 0, clientMarquee: CLIENT_LOGOS.concat(CLIENT_LOGOS), navHover: { background: "transparent", color: "#F48701" }, logoHover: { opacity: 0.85 }, itemHover: { background: "#f6f8fb", color: "#D97008" }, ...this.formVals(), onSubmitConsult: this.makeSubmitHandler("consult", "New consultation request — SMT Consulting Group website"), onSubmitContact: this.makeSubmitHandler("contact", "New enquiry — SMT Consulting Group website"), onSubmitFeedback: this.makeSubmitHandler("feedback", "New client feedback — SMT Consulting Group website"), onSubmitNewsletter: this.makeSubmitHandler("newsletter", "New newsletter signup — SMT Consulting Group website"), btnHover: { opacity: 0.88 }, btnActive: { transform: "scale(0.97)", opacity: 0.8 }, cardHover: { boxShadow: "0 14px 38px rgba(0,35,71,0.12)", transform: "translateY(-3px)" }, waFabHover: { transform: "scale(1.08)" }, waRowHover: { background: "#f6f8fb" }, toggleWaPicker: this.toggleWaPicker, waOpen: !!this.state.waOpen, clientsCounterRef: this.clientsCounterRef, projectsCounterRef: this.projectsCounterRef }; } }