/*
Theme Name: Just Ask Omar
Theme URI: https://justaskomar.co.uk
Author: Just Ask Omar
Author URI: https://justaskomar.co.uk
Description: Just Ask Omar: pharmacist-designed, root-cause holistic health tools and content, built on removing harm before adding benefit and on the principle that everyone is different. Carries the full live tool catalogue and the three paid tools. Deployed via WordPress Admin theme upload. UK English, zero em-dashes. Full version history is in the changelog block below this header.
Version: 3.32.66
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: All Rights Reserved
Text Domain: muslim-health-expert
*/

/*
============================================================
CHANGELOG  (reference only, deliberately kept OUT of the theme header above)
WordPress parses only the first 8 KB of style.css for the theme header,
so this history lives below the header to keep the Version readable under
Appearance, Themes. Do not move any of this above the Version line.
============================================================

v3.5.1 extends the assessment authorship-anchor reword (decision-E) to the HHF1 and ADD2 tool-output surfaces, keeping evidence and book provenance while dropping the professional-authorship reliance claim, corrects a missing article in the HHF1 anchor line, and rewrites this description to match the shipped state. Brand-level pharmacist identity (About, footer, named pharmacist Omar) untouched. Deployed via WordPress Admin theme upload. UK English, zero em-dashes, ABSPATH guards on every PHP entry point, functions.php one open tag and no closing tag. v3.6.0 adds the Work With Omar landing page (page-work-with-omar.php, slug work-with-omar): a self-contained, application-only high-ticket consultation page for the 90-Day Personal Programme, with a dormant VSL video slot and the mhe_handle_application AJAX handler, which follows the shared six-layer silent-success anti-spam pattern, the mhe_form_nonce action, and EmailOctopus PENDING signup tagged subscribed and via-application. No payment element on the page. v3.7.0 wires the MHE front page into that funnel: the four-tier pricing block (Entry, Initial, Follow-Up, Comprehensive) is replaced by a single 90-Day Personal Programme card linking to /work-with-omar/, the nav Pricing item now points to the landing page, the tools-band consult card, the two how-it-works step cards, two FAQ items, and the contact-form subject radios are reconciled to the single by-application offer with the free assessment as the lower-cost path, and the old removed-tier copy is retired. Pricing-section id pricing is preserved so in-page anchors still resolve. v3.8.0 surfaces the full live tool catalogue on the home page: a More free tools grid links the Personal Sun Need Calculator, Modest Dress and Sun Calculator, Leaky Gut Reality Check, Additives Worth Knowing About, E-Number Decoder and the 10-Minute Parent's Guide, a Go further card links the paid 14-Day Gut Reset Companion (19.99 GBP), and a Tools nav item points to the tools section. The access-code-gated 90-Day Foundation companion is intentionally not surfaced publicly. v3.9.0 grafts four more catalogue tools into the theme: SUN22 Sun Spectrum Explainer (slug sun-spectrum-explainer, an explainer with no email gate or handler), F4 Energy Battery (slug energy-battery, handler mhe_handle_f4, tag via-f4), F5 Mitochondria Mini-Lab (slug mitochondria-mini-lab, a thin template plus partials/mitochondria-mini-lab-body.php plus vendored assets/css/f5-mito-lab.css, assets/js/f5-mito-lab.js and 17 SVG icons in assets/f5, wired by mhe_enqueue_f5_assets, mhe_f5_module_type and mhe_f5_print_importmap, handler mhe_handle_f5, tag via-f5), and F25 ATP Lab (slug atp-lab, handler mhe_handle_f25, tag via-f25). The three gated tools keep the six-layer silent-success anti-spam pattern and EmailOctopus PENDING signup. three.js (0.160.0 for F4, 0.161.0 for F5, kept distinct by design) and html2canvas 1.4.1 load from the jsDelivr CDN per each tool's own design with graceful fallback; F25 has no external libraries. All four are added as More free tools tiles on the home page at their canonical slugs. F20, F21 and G9 remain to be grafted in later passes. v3.12.3 fixes the stray site chrome above the three get_header() tools (F21 Fatigue Pattern Finder, G9 Gut-Brain Cable, F20 Personal Fatigue Report): the theme previously shipped no header.php or footer.php, so get_header() and get_footer() fell back to WordPress core theme-compat output (the site title link and the My WordPress Blog tagline, plus Proudly powered by WordPress). This release adds header.php and footer.php that reproduce the page-assessment.php branded bar (white sticky bar, 940px container, 38px logo, Crimson Pro wordmark in deep green, Back to Home link) and a slim branded footer, all namespaced under .mhe-sitebar and .mhe-sitefoot with hard-coded colours so no tool CSS can collide. It also adds a tightly scoped template_include safety net in functions.php: because the theme ships no page.php, any tool page whose stored template assignment is stale or missing would fall through to index.php and render an empty document; the filter routes a singular page back to its matching page-{slug}.php whenever index.php was about to be used and that template exists, never overriding a template that already resolved correctly and never touching non-page requests. The self-contained tool templates were unchanged in v3.12.3. v3.12.4 locks that branded bar as the universal tool header across the whole catalogue. A single source, partials/site-bar.php (white sticky bar, 38px logo, Muslim Health Expert wordmark in deep green, Back to Home link, namespaced .mhe-sitebar with hard-coded colours), is now the only place the bar is defined. header.php requires it, so F21, G9 and F20 keep their bar from one source, and F20 and F21 have their old in-page brand strips removed so the bar is not doubled. Every self-contained tool now shows the same bar. Tools whose top element was a bespoke identity strip have it replaced by the shared bar: Toxic Load Audit, Symptom Checker, Gut Reset Companion, SUN1 Personal Sun Need, SUN4 Modest Dress and Sun, F4 Energy Battery, ADD1 Additives, ADD2 E-Number Decoder. Tools whose top element is a hero or a functional control keep that element with the bar inserted above it: SUN22 Sun Spectrum Explainer keeps its in-hero gold tool-name label, F25 ATP Lab keeps its stage-control strip, Pre-Consultation keeps its hero, F5 Mitochondria Mini-Lab and the 10-Minute Parent's Guide keep their hero, G21 Leaky Gut Reality Check keeps its layout. The ADD2 in-header book link was dropped for uniformity, and the book is still referenced in that tool's footer. page-assessment.php is the visual reference and is left as is. Work With Omar (a sales landing page), Terms (a legal page) and the access-code-gated, in-build 90-Day Foundation are not catalogue tools and are intentionally excluded. v3.12.5 hardens the tool-page safety net and adds an operator testing reset to the two paid tools. When a singular page would render the bare index.php fallback, the template_include safety net now honours an explicitly assigned page template first, then an exact page-{slug}.php match, then retries against the canonical name with a trailing numeric suffix stripped, so a tool page left at slug-2 by a duplicate or trashed page still resolves. F20 Personal Fatigue Report and G14 Gut Reset Companion each gain a ?lock=1 parameter that clears the persisted paid state (the F20 sessionStorage flag and the G14 mhe_g14_paid cookie) so the gate can be re-tested as a fresh visitor would see it. The existing unlock links, ?paid=1 for F20 and ?paid=g14 for G14, are unchanged. No tool content, copy or pricing changed. v3.12.6 removes the F20 buy-button dev stub that, when the Stripe link was still the placeholder, popped a confirm dialog and on OK marked the visitor paid and entered the tool, which meant a missing live link granted free access. The buy button now redirects to the configured Stripe Payment Link, and when no live link is set it shows a brief unavailable message and grants no access, so payment fails safe. Access is granted only on the ?paid=1 return after a real payment; ?paid=1 and ?lock=1 remain for operator testing. v3.12.7 removes the visible Muslim Health Expert wordmark from the tool header bar, keeping the logo image, which already carries the brand name, and keeping its alt text for accessibility. Applied to the shared site-bar partial (every unified tool header and header.php) and to the Assessment header. The home page header was already logo-only. Footers, page titles, legal text, PDF output and email copy are unchanged. Work With Omar uses a text-only masthead wordmark with no image logo and was left as is. v3.13.0 turns the Terms of Use page into a combined Terms and Privacy page (template renamed Terms and Privacy, slug terms-and-privacy). It now carries two anchored parts, Terms of Use (#terms) and a UK GDPR Privacy Policy (#privacy), with jump links at the top so payment and email providers can deep-link to the privacy part. The Privacy Policy covers controller identity, what is collected, the explicit-consent basis for health data, lawful bases, processors (EmailOctopus, Stripe, Cal.com, hosting), international processing, retention, cookies and browser storage, children, data rights and the ICO. The home page footer now links Terms and Privacy plus a direct Privacy Policy link. No payment, tool or anti-spam code changed.
v3.14.0 reworks the home page for focus and conversion using $100M Offers value-equation framing. The hero now leads with a single outcome-led offer (free, pharmacist-built, about 5 minutes), carries the assessment's value stack in the subhead, uses one first-person CTA (Start my free assessment), and drops the consultation price line so the top funnels into the free tools. The five outbound social icons were removed from the header (they remain in the footer) to cut exit points. The three paid tools are pulled out of the identical free-tile look into a colour-coded premium set, Toxic Load Audit (teal), Personal Fatigue Report (amber) and 14-Day Gut Reset (terracotta), each with a category label, a prominent price, a what-you-get value stack, a first-person value CTA, and a section-level 7-day refund line. The two flagship free tiles also moved to first-person CTAs. New CSS carries mobile and reduced-motion rules. No tool, payment or anti-spam code changed.
v3.15.0 reconciles the remaining consultation references across the theme to the single by-application 90-Day Personal Programme, so nothing contradicts the retired four-tier or cheap-entry pricing. On the Terms and Privacy page, the services list, the refund section and the what-to-expect section drop the Entry, Initial, Follow-Up and Comprehensive tiers and the 30 GBP entry-fee credit, and a single 90-Day Personal Programme refund clause replaces them (14-day cooling-off under the Consumer Contracts Regulations 2013, a fair pro-rata charge once the work has started, no change-of-mind refund once the bespoke 90-day work is underway, statutory Consumer Rights Act 2015 rights preserved, and payment-plan instalments payable for the whole programme). The Symptom Checker drops the 49 GBP PDF-plus-Initial-Consultation tier and the consultation-tiers aside, keeps the 19 GBP PDF, and points its upgrade panel and its PDF next-steps to the free Holistic Health Assessment only, with no programme pitch on that surface. The Toxic Load Audit re-points its consultation CTA from the dead /consultations/ page to /work-with-omar/ and renames its three-product framing, medical disclaimer, CTA button and sources note to the 90-Day Personal Programme. No payment, tool logic or anti-spam code changed. Four orphaned Cal.com tier URL placeholders remain defined but unused in functions.php, left in place pending an operator decision.
v3.15.1 completes the consultation-to-programme wording sweep on the Terms and Privacy page. The remaining generic consultation references in the terms body and the privacy policy (the what-we-provide line, the accurate-information clause, the intake-storage description, the third-party processor list and the Cal.com purpose, the special-category-data and lawful-basis text, and the retention line) now name the single 90-Day Personal Programme, with by-application wording (apply for or join the programme) replacing book a consultation. No payment, tool logic or anti-spam code changed.
v3.15.2 tidies functions.php by removing the three dead Cal.com tier URL placeholders (entry, initial, follow-up) left over from the retired four-tier consultation model, all of which were defined but referenced nowhere. The discovery-call placeholder is kept for the by-application 90-Day Personal Programme and its comment block is rewritten to match. No payment, tool logic or anti-spam code changed.
v3.15.3 makes three front-page corrections: the hero credential badge now reads 20+ Years' Holistic Study (was 15+); the three remaining pharmacist-built strings (hero eyebrow, hero subtitle, paid-tools subtitle) are corrected to pharmacist-designed to match the pharmacist-designed-only rule and the rest of the page; and the duplicate health and free time hadith is removed from the Wisdom Quotes section (with its gloss line), with Your body has a right over you promoted to the feature slot so the section keeps its anchor. The hadith now appears once on the page. No payment, tool logic or anti-spam code changed.
v3.16.0 restructures the top of the front page so the free tools surface sooner (Hormozi-style funnel tightening). The Personalised Advice = Lasting Results value-equation block now sits directly under the hero, because the health and free time hadith has been lifted out of the hero and relocated to a values beat just after the free tools, paired with a second Start my free assessment button. The hero is also tidied: the redundant Completely free. More free tools just below. line is removed, the three credential badges move to below the call to action so the headline-to-button path is uninterrupted, and the trailing Evidence and the Sunnah, where they genuinely meet clause is trimmed from the subtitle because the value-equation eyebrow now carries that phrase right below it. The relocated hadith is restyled for the light tools-band background (cream-gold card, green emphasis) and is static, so no new animation is introduced. The .hero-quote and .hero-pricing CSS rules are now orphaned but harmless and are left in place for a later tidy. No payment, tool logic or anti-spam code changed.
v3.16.1 reframes the More free tools grid as a post-assessment step to keep the first choice binary: it gains an After your assessment eyebrow and the headline Go deeper, still free, with a subtitle positioning the tools as a way to explore a specific area once the assessment has shown where to look. To stop Go deeper appearing twice, the paid tier headline changes from Go deeper, and walk away with the plan to Walk away with the plan, so the page now reads as three clear tiers: start with two free tools, go deeper for free, then walk away with the plan. Copy only, no payment, tool logic or anti-spam code changed.
v3.17.0 colour-codes and organises the free tools grid so the tiles no longer all look the same. The twelve tiles are regrouped into five topic clusters, each with a small sub-heading and its own accent colour applied as a coloured top strip, a tinted category chip and a matching button: Energy and tiredness (amber, shared with the paid Energy and fatigue card), Sun and vitamin D (teal), Gut and digestion (terracotta, shared with the paid Gut card), Food and additives (blue), and For families (green). The colour mechanism mirrors the existing paid premium cards via per-tile accent variables, and the category chip falls back to the original green for the two featured starter tiles, which are unchanged. No tile copy, links, tool logic, payment or anti-spam code changed.
v3.18.0 makes two front-page changes. First, the 10-Minute Parent's Guide is promoted from the Go deeper grid up into the starter section alongside the symptom checker and the assessment, so that section now holds three tiles and its heading changes from Two free tools. Two ways to start. to Three free tools to start.; the guide is restyled to match the other two starter tiles (a 10 minutes time chip, a For parents badge and a Best for line) rather than carrying its old green topic colour, and the now-empty For families cluster is removed from the Go deeper grid, which keeps four clusters (energy, sun, gut, food). Second, the large standalone Generic Advice = Generic Results / Personalised Advice = Lasting Results band is removed and folded into the hero as a compact three-line value-equation (small Sunnah eyebrow, a tight struck-through and gold line, and the Because everyone is different note), static and styled for the dark hero, which removes a full section of vertical space and brings the tools up. The .gr-section, .tools-band__tile--family, .hero-quote and .hero-pricing CSS rules are now orphaned but harmless and are left for a later tidy. No tile copy, links, tool logic, payment or anti-spam code changed.
v3.18.1 makes two emphasis tweaks to the front page. The hero value-equation is scaled up so it no longer reads as too small: the eyebrow, the struck-through Generic advice line and especially the gold Personalised advice = lasting results line are enlarged (the live line now clamps up to 2.5rem) with more breathing room, while staying below the main headline. In the starter section, the 10-Minute Parent's Guide is now a featured tile alongside the Holistic health assessment (both gain the brighter primary button), and the featured treatment itself is strengthened with a stronger shadow and a subtle green tint, so the assessment and the Parent's Guide stand out from the symptom checker. Visual only, no copy, links, tool logic, payment or anti-spam code changed.
v3.18.2 makes two front-page tweaks. The symptom checker is moved to last of the three starter tiles, so the order is now the Holistic health assessment, the 10-Minute Parent's Guide, then the symptom checker. In the hero value-equation, the struck Generic advice = generic results line is enlarged (up to 2.1rem) and its strikethrough is animated again: a drawn-on red strike line that reuses the original grStrike keyframe on a slow 7-second loop, with a prefers-reduced-motion override that shows a static struck line for users who prefer no motion. Visual only, no copy, links, tool logic, payment or anti-spam code changed.
v3.18.3 is a front-page tidy and copy pass. Two stale consultation-era references in the footer are reconciled to the single by-application 90-Day Personal Programme: the tagline now reads Holistic Health Guided by Islamic Principles (the plural Consultations is dropped), and the confidentiality line now names the 90-Day Personal Programme rather than consultations. The footer Pre-Consultation Questionnaire link is kept but de-emphasised beneath a prominent Work With Omar primary button and a line naming Work With Omar as the best place to start, so the by-application route leads. The four orphaned CSS blocks left from the v3.16.0 to v3.18.0 hero rework are removed (.gr-section and its helpers, .tools-band__tile--family, .hero-quote and its helpers, .hero-pricing), along with their now-unused helper keyframes (grFade, grLiveRise, glowPulse, quoteBorderGlow) and the dead .gr-section scroll observer in the page script. The grStrike keyframe is retained because the live hero value-equation strike line still uses it, and the four live tile-accent colours (energy, sun, gut, food) are unchanged. No tool, payment or anti-spam code changed.
v3.19.0 wires the live Cal.com discovery-call link into the funnel: MHE_CALCOM_DISCOVERY_URL in functions.php now holds the real booking URL (https://cal.eu/healthcoach/mhe-discovery-call) for the by-application 90-Day Personal Programme, replacing the __REPLACE_ME__ placeholder. The event is a free 30-minute call with Requires confirmation enabled. No tool, payment or anti-spam code changed; the three Stripe payment-link placeholders (Toxic Load Audit, F20, G14) remain pending.
v3.19.1 updates the three paid-tool prices sitewide to the operator-locked values and drops the .99 charm pricing: Toxic Load Audit 9.99 to 12, Personal Fatigue Report (F20) 19.99 to 19, Gut Reset Companion (G14) 19.99 to 29. Thirty-nine display occurrences were updated across the front-page premium cards, each tool's own source price and sales copy, every cross-sell mention on the other tools (energy battery, fatigue pattern finder, mitochondria mini-lab, ADD1, modest-dress and sun-need calculators, the F20 module library, the leaky-gut cross-route data and the 90-day foundation cross-route data), the Terms and Privacy paid-products line, and the relevant code comments, covering every price encoding in use (plain, HTML entity and escaped-unicode pound signs). Three same-priced but out-of-scope items were deliberately left untouched: the g38 Vagus Nerve Trainer (9.99), the g33 FODMAP Detective (19.99) and the historical changelog. No tool logic, payment or anti-spam code changed; the Stripe payment links must be created at these new prices.
v3.20.0 is the paid-tool payment go-live. The three live Stripe Payment Links are wired in: Toxic Load Audit into MHE_TLA_PAYMENT_URL (functions.php), 14-Day Gut Reset Companion into MHE_G14_PAYMENT_URL (functions.php), and Personal Fatigue Report (F20) into stripePaymentLink in assets/js/f20-config.js, replacing the three placeholder strings. Each link redirects after payment to its tool with the correct unlock parameter (toxic-load-audit/?paid=tla, gut-reset-companion/?paid=g14, personal-fatigue-report/?paid=1). The F20 fail-safe is intact: page-personal-fatigue-report.php still reads the link from f20-config.js with a placeholder fallback and a guard that shows an unavailable message rather than granting free access if the link is ever unset, so payment fails safe. No tool content, pricing or anti-spam code changed.
v3.20.1 completes the pharmacist-designed-only sweep on the tools grafted after v3.15.3, which had corrected the same phrasing on the front page. Nine pharmacist-built and pharmacist-led tool-surface strings are corrected to pharmacist-designed: five on the Personal Fatigue Report (F20), being the sales subhead, two methodology lines, the credibility paragraph and the customer-facing trust line; two on the Fatigue Pattern Finder, being the subtitle and the intro eyebrow; one on the Gut Reset Companion G21 cross-link; and one on the G9 Gut-Brain Cable newsletter blurb. Two instances are deliberately left in place: the F20 source changelog comment that records the original removed phrase, and the g9-config Speak with our pharmacist-led team line, which describes people rather than a tool and would read incoherently as designed. One 10-Minute Parent's Guide line is restored from the softened quietly working against you to silently working against you, matching the canonical vocabulary guide. Copy only; no tool logic, pricing, payment or anti-spam code changed.
v3.20.2 resolves the one open copy decision left from the v3.20.1 sweep. The G9 Gut-Brain Cable cross-link to the Holistic Health Assessment read "Speak with our pharmacist-led team", which both implied a team (the operator is the sole practitioner) and pitched a consultation on a card that links to the free self-serve assessment. It now reads "Free, pharmacist-designed. See what is driving your symptoms.", which describes the tool it links to, drops the inaccurate team wording, and clears the last live pharmacist-led string from any tool surface. Only the F20 source changelog comment still carries the historical phrase, by design. Copy only; no tool logic, pricing, payment or anti-spam code changed.
v3.21.0 adds the hard-gate foundation for the three paid tools: a Stripe webhook receiver, a purchases record, and the verification helpers the tool front-ends will call. A single account-level webhook at the REST route mhe/v1/stripe-webhook receives checkout.session.completed events, verifies Stripe's signature with PHP hash_hmac (no SDK, no new dependency), and records each paid Checkout Session in a new wp_mhe_purchases table (created idempotently via dbDelta on theme switch and admin load). The tool a payment belongs to is read from the Checkout Session metadata key mhe_tool when set, and otherwise inferred from the amount, since the three prices (1200, 1900, 2900 pence) are distinct. Two read helpers (by session id, by email) and a nonce-protected mhe_verify_paid AJAX endpoint (email path rate limited per IP) let the front-ends verify a real payment instead of trusting a query parameter. This release is additive and dormant: it records nothing until MHE_STRIPE_WEBHOOK_SECRET is defined in wp-config.php, and the front-end gates keep their current soft behaviour until MHE_STRIPE_HARD_GATE is set true, so the webhook can be configured and proven before the gates are switched over (a later release). No existing tool, payment link, copy or anti-spam code changed; functions.php requires the new inc/functions-stripe-webhook.php alongside the F20 include.

v3.21.1 fixes the missing theme version under Appearance, Themes. The full changelog had been written inside the theme header comment block, ahead of the Version line, and the oversized Description field plus the per-release paragraphs pushed the Version line to byte 25530, far past the first 8192 bytes that WordPress reads when it parses a theme header. WordPress could therefore no longer find the Version and showed it blank. This release moves the entire changelog into this separate comment block beneath a clean, compact header, shortens the Description to a single line, and leaves all CSS untouched, so the Version parses and displays again. No tool, payment, copy or anti-spam code changed. Standing rule going forward: never write changelog text above the Version line in the theme header; keep the header compact and put history in this block.

v3.22.0 closes the no-payment bypass on the three paid tools (Toxic Load Audit, Personal Fatigue Report, 14-Day Gut Reset Companion) by adding a server-verified hard payment gate, controlled by a new wp-config flag MHE_STRIPE_HARD_GATE (default off, so this release changes nothing until the flag is set true). When off, the tools behave exactly as before. When on: the bare ?paid return parameter no longer unlocks anything; a real payment is confirmed against the wp_mhe_purchases record written by the Stripe webhook, either automatically on return from checkout via the Checkout Session id (polled briefly to bridge the webhook-versus-redirect race) or, as a fallback, by the customer entering the email they paid with. The shared client helper assets/js/mhe-paygate.js performs the verification against the existing nonce-protected mhe_verify_paid endpoint; it is loaded in the head of each paid tool page. Each tool config now carries hardGate, verifyNonce (mhe_form_nonce) and a tool key. The G14 ?lock=1 and F20 ?lock=1 testing resets are unchanged, and the post-payment email-signup step (with its Skip option) is unaffected since it now sits behind the payment gate. No tool content, copy, pricing or anti-spam code changed. Activation requires confirming a real sale records (recorded:true) and then setting MHE_STRIPE_HARD_GATE to true.

v3.22.1 fixes the hard payment gate on the Personal Fatigue Report (F20) only. F20 reads its settings from assets/js/f20-config.js, which reassigns window.F20_CONFIG wholesale; the hard-gate fields (hardGate, tool, verifyNonce) had been set before that file loaded, so they were wiped and F20's gate never activated even with MHE_STRIPE_HARD_GATE on. This left F20's ?paid=1 still bypassable and hid the returning-customer email check. Fix: those three fields are now set in a script block AFTER the f20-config.js include, so they survive the reassignment. No change to the Toxic Load Audit or 14-Day Gut Reset, which do not use an external config file and were already correct. Metadata and one line of head ordering only; no tool content, copy, pricing or anti-spam code changed.
v3.23.0 moves the whole family onto one EmailOctopus list on the RealHealth.Expert (parent) brand and labels the MHE site as part of that family. functions.php repoints MHE_EO_LIST_ID from the old MHE list to the RealHealth.Expert list (one constant, used by the shared mhe_subscribe_to_emailoctopus helper and the confirm path, so every signup now feeds the parent list), and the shared helper now adds a site-mhe source tag to every signup so the single list can be segmented by origin (analytics, and later targeted sends to the Muslim-audience segment once there is data). The subscribed onboarding trigger and the existing per-tool via source tags are unchanged. Activation note: this assumes the RealHealth.Expert list is in the same EmailOctopus account as MHE_EO_API_KEY; if it is a separate account, MHE_EO_API_KEY must be set to that account's key or signups silently fail. On the front page, the header now carries a small Part of the RealHealth.Expert family line under the logo (new .brand-block and .brand-family rules, responsive font, links to the parent site). The MHE site keeps its own Muslim identity; the family line only signals the parent. No tool logic, pricing, payment or anti-spam code changed.
v3.23.1 updates the 90-Day Personal Programme price to £1,997 with £2,497 struck through (previously £1,497 with £1,997 struck), in both places it appears: the price card on page-work-with-omar.php and the mirrored price card on front-page.php (whose note now reads Standard £2,497 thereafter). Stale references to the old £1,497 figure were also brought into line so everything reads consistently: the application investment-acknowledgement checkbox on page-work-with-omar.php and the application notification label in functions.php now both read £1,997. No tool logic, payment gate or anti-spam code changed.
v3.23.2 sweeps the retired old MHE list ID (6400eb84) out of every place it could affect or misrepresent live behaviour, finishing the single-list move from v3.23.0. The Personal Fatigue Report (F20) fallback constant F20_EMAILOCTOPUS_LIST_ID, consulted by mhe_f20_emailoctopus_pending() only if the shared mhe_subscribe_to_emailoctopus helper is ever absent, no longer hard-codes the retired list; it now tracks the canonical MHE_EO_LIST_ID (the RealHealth.Expert parent list), so the fallback can never drift back to the dormant list and silently subscribe paying F20 buyers there with no onboarding. The two inert client-side emailOctopusListId config values in the ADD1 and SUN1 templates (never sent to the server, which chooses the list via the shared helper) are repointed to the parent list so they no longer contradict the one-list architecture. Five comments that still named the old list as the tool's list are corrected to the parent list: the G21 dependency-doc block in functions.php and the SUN1, ADD2 (E-Number Decoder), SUN4 (Modest Dress and Sun) and F4 (Energy Battery) subscribe comments. No live subscribe path changed: every form already routed to the parent list through the shared helper, so this release only closes a dormant fallback and removes misleading values and comments. No tool logic, pricing, payment gate or anti-spam code changed. The old list ID is left in only two places, both deliberately: the functions.php comment that names it precisely to document that the define is not it, and the not-yet-live HHF1 90-Day Foundation email-preview surface (a doc comment plus a footer that also still shows the old MHE sender identity), which will be reworked together as part of the pending HHF1 email activation rather than piecemeal here. Correction (v3.31.1): a third occurrence was missed by this sweep, a malformed old-list fragment in assets/leaky-gut-data.json that the G21 tool never read; it is removed in v3.31.1, so the in-code single-list cleanup is now complete (the deliberate HHF1 references remain pending that tool's email activation).
v3.24.0 sharpens the front page around a single primary call to action and hands the high-ticket close back to the dedicated landing page (Option A of the home-page plan). The 90-Day Personal Programme section is slimmed from a full sales card back to a teaser: the duplicated six-row value stack, the capacity-cohort banner, the fit-first guarantee box and the results-take-time paragraph are removed, because all of them already live on the Work With Omar landing page, and the section now shows one concise card (badge, price, a short summary that keeps the remove-harm-first pillar, and a single See the 90-Day Programme button to /work-with-omar/) plus the existing not-ready free-assessment line, so the home page no longer competes with its own sales page or carries two copies of the offer to maintain. Six mid-page buttons that previously funnelled into the contact form (Random Tips, Two Paths, How It Works, Our Approach, the Comprehensive Assessment section and the pre-pricing prompt) are repointed to the free Holistic Health Assessment so the whole page drives one top-of-funnel action; two get-in-touch labels are reworded (Start Free and Take the Free Assessment) to match the new destination, and contact stays reachable from the nav and the footer. The Bismillah line and its English gloss are removed from the very top of the page per operator decision, to make the first impression secular-but-warm and widen the page to non-Muslim visitors; the MHE site keeps its Muslim identity elsewhere on the page and the five-before-five hadith in the programme section is left in place pending the separate faith-sequencing pass. Copy and links only: no tool logic, pricing values, payment gate, anti-spam or email code changed, and front-page div balance is preserved.
v3.25.0 begins the home-page resequence-and-cull (Option B), stage one: the redundancy cull. Four sections that duplicated messaging carried elsewhere or were purely decorative are removed: Health Is Wealth (a decorative pyramid), the Prevention Infographic, the Overwhelmed-becomes-Simplified SVG (the third of three chaos-becomes-order visuals, leaving the Random Tips becomes Personalised Plan graphic as the single such visual), and The Gap We Fill (which overlapped Our Approach and the mechanism copy). All four had no section id, no script, no inline handler and no inbound anchor, so nothing in the nav or the page JavaScript referenced them; the Two Paths timeline is deliberately kept for now because the inline script still targets its id, and it will be handled in stage two. Front-page div balance is preserved exactly (359 open, 359 close). No tool logic, pricing, payment gate, anti-spam or email code changed, and no faith content was touched in this stage. The remaining B work (the who-and-why section merges, the Two Paths removal with its script, and the final section order) follows in a later stage.
v3.26.0 completes the Option B redundancy cull. The Two Paths timeline infographic is removed from the Health Data section (the last of the journey-style comparison visuals, overlapping the Lifespan-versus-Healthspan and Quality-of-Life comparisons that remain), together with its IntersectionObserver script, and the now-dead pyramid-stacking script left behind when Health Is Wealth was removed in v3.25.0 is also deleted. The Lifespan-versus-Healthspan block and the Quality-of-Life bar comparison are kept. The Two Paths block carried one of the duplicate Take the First Step assessment buttons, removed with it, leaving the single-primary-CTA discipline intact. Front-page div balance stays exact (344 open, 344 close) and the inline JavaScript still lints clean. The .two-paths, .tp-* and .ig-pyramid CSS rules are now orphaned but harmless and left for a later style-sheet tidy. No faith content, tool logic, pricing, payment gate, anti-spam or email code changed. The remaining structural work (condensing the faith-laced who-and-why sections and the final section order) is folded into the faith-sequencing pass (Option C), because those sections' Tibb-e-Nabawi and Prophetic-medicine wording must be decided there and C repositions the faith blocks anyway, so doing it once in C avoids moving the same large blocks twice.
v3.27.0 is the faith-sequencing pass (Option C): the overt faith blocks move below the first several screens and the page title and top are made secular-but-warm, with the Muslim identity kept on the page. The browser title tag changes from Holistic Islamic Healing to the brand-led secular line Muslim Health Expert | Root-Cause, Evidence-Based Holistic Health (not pharmacist-led, per the standing rule), and the hero subtitle drops for Muslims to widen the first impression while the Where evidence and the Sunnah genuinely meet bridge line is kept lower in the hero. Two standing-rule corrections are folded in: the Registered with the GPhC credential line is removed from the Why a holistic pharmacist section (no GPhC in mainline), and the Tibb-e-Nabawi (Prophetic medicine) clause is trimmed from that same high section since it reappears in the lower Our Approach section. The Remove Harm Before Adding Benefit core-principle infographic is lifted out of the faith-heavy Our Approach section into its own dark section high in the secular zone, just after We Go Beneath the Surface, so the number-one brand pillar leads rather than sits buried; its one faith phrase is secularised for that high slot (Prophetic nutrition becomes whole foods, spiritual practices becomes restorative practices), while the faith framing of restore remains in Our Approach below. Is This Programme Right For You and How It Works are merged into one tightened section under the kept id how-it-works, removing a duplicate section heading. Final section order: hero, tools, trust bar, why-mpharm, Random Tips becomes Personalised Plan, We Go Beneath the Surface, the lifted Remove Harm principle, Lifespan-versus-Healthspan data, the merged is-this-for-you-plus-how-it-works, Our Approach, Wisdom quotes, About the Expert, then the assessment and the rest unchanged. Nav anchors (approach, tools, programmes, free-ebook, faq, contact) and every getElementById hook are preserved. Front-page div balance stays exact (344 open, 344 close), section count stays at 20, the inline JavaScript lints clean, the PHP regions stay balanced, and the em-dash and en-dash sweep is zero. Copy and structure only: no tool logic, pricing, payment gate, anti-spam or email code changed. Still pending: Option D (the interactive Random-Tips chart and promoting the assessment-variable explorer) and the one-off orphaned-CSS tidy.
v3.27.1 updates the live Cal.com discovery-call booking URL after the event slug was renamed in the Cal.com dashboard from mhe-discovery-call to discovery-call, dropping the site prefix so the link is brand-neutral and serves both sites. MHE_CALCOM_DISCOVERY_URL in functions.php now holds https://cal.eu/healthcoach/discovery-call, and the templates reference that one constant, so every booking button updates from this single change. The historical v3.19.0 changelog entry, which records the original slug, is left unchanged. This release also carries the v3.27.0 home-page faith-sequencing work, since v3.27.0 was built but not deployed, so one upload ships both. functions.php keeps its single opening php tag and no closing tag. No tool logic, pricing, payment gate, anti-spam or email code changed; the quoted URL string is the only live change.

v3.28.0 is the home-page interactivity pass (Option D). The Random Tips becomes Personalised Plan graphic, which previously stacked the scattered-advice state above the personalised-plan state and looped both on autoplay, is now a single visitor-controlled toggle: two buttons (Random tips, Your personalised plan) flip one stage between the two states, and because the inactive view is display:none, switching to a view restarts its results-line draw so flipping visibly redraws the line. A neutral lead heading (Random advice, or a plan built around you?) replaces the fixed Random Tips = Random Results title, and each state now carries its own caption. The rt-section animations, which had no reduced-motion override before, now have one: under prefers-reduced-motion the toggle still swaps content instantly but all rt-section motion is disabled and the result lines and checkmarks render fully drawn rather than mid-animation. The 26-variable assessment explorer (the We Explore an Unrivalled Number of Variables section, with the funnel visual, the category filter tabs, the tag cloud and the tap-to-reveal detail boxes) is promoted up into the proof area, now sitting directly after the Lifespan-versus-Healthspan data and before the merged How it works, instead of below the faith blocks. Its default visible state stays the secular Everyone Is Different box, with faith content surfacing only when a variable is tapped, so the move is consistent with the v3.27.0 secular-top sequencing. The explorer's filter and tap-to-reveal JavaScript is selector-based and runs after the DOM, so the relocation did not touch its behaviour. The toggle handler is vanilla JavaScript with no console statements and no new dependencies. Front-page div balance stays exact (345 open, 345 close, the single net increase coming from the toggle wrappers), section count stays at 20, the inline JavaScript lints clean, the PHP regions stay balanced, and the em-dash and en-dash sweep is zero. No tool logic, pricing, payment gate, anti-spam or email code changed. The one remaining home-page item is the one-off orphaned-CSS tidy (the .two-paths, .tp-* and .ig-pyramid rules, plus the now-removed BUT THERE IS A BETTER WAY divider styling if any), after which the home page is ready to deploy.

v3.28.1 is the orphaned-CSS tidy, the final home-page housekeeping item, and it also removes the matching dead JavaScript. The CSS rules left behind by the v3.25.0 and v3.26.0 section culls are deleted: the Health Is Wealth band (.hiw-section), the Health Pyramid (.ig-pyramid and .ig-pyramid-tier, including its two responsive overrides), the enhanced gap-card comparison layout (.gap-card, .gap-row and the .gr-* and .gc-eyebrow rules with their two dedicated media queries) left from The Gap We Fill, and the Two Paths timeline (.two-paths and the .tp-* rules) together with its eight now-unused keyframes (tpCrashIn, tpFadeUp, tpSlideLeft, tpSlideRight, tpLineGrow, tpOutcomeSlam, tpPulse, tpPulseGreen). Each class was verified absent from the markup before removal. The dead animateGapCard function and its three call sites (the no-IntersectionObserver fallback, the shared chart observer's else-if branch and the observe-registration loop) are also removed, since they only ever queried the now-gone gap-card elements; the live animateChart path that shares that observer is untouched. The reusable .ig-gap-* bar component is deliberately kept: although it still sits under the old Gap We Fill comment, it is used in the live data infographics and is animated by the separate barObs observer, so removing it would have broken a live visual. In total 166 lines come out of front-page.php. Front-page div balance is unchanged at 345 open and 345 close (the removals were all inside the style and script blocks, not the markup), section count stays at 20, the inline JavaScript still lints clean with no console statements, the PHP regions stay balanced, and the em-dash and en-dash sweep is zero. No tool logic, pricing, payment gate, anti-spam or email code changed. With this, the home-page rework is complete and the theme is ready to deploy and flush permalinks.

v3.29.0 is the Hormozi-style flow and high-CTA pass for the information homepage, with the offer itself kept on the dedicated work-with-omar page. Five changes. (1) A short problem-agitation block is added directly after the hero ("You're doing everything right. So why do you still feel off?"), carrying the book's thesis, the remove-harm-first pillar and the everyone-is-different pillar, so desire is built before the page presents anything to act on; it reuses existing section classes, so no new CSS. (2) The page is re-sequenced so conviction precedes the commercial asks: the three free tools stay high as the low-friction entry, then the proof and mechanism (why a pharmacist, random-versus-personalised, beneath the surface, remove-harm, the lifespan data and the variable explorer) run before any paid product, and the paid "Walk away with the plan" block (the £12, £19 and £29 tools) is lifted out of the top tools band and relocated far down into the commercial zone, after the testimonials and before the programme teaser, wrapped in its own tools-band section so the existing BEM styles still apply. (3) The 8-card Specialised Programmes grid is cut: it contradicted the page's own one-programme-by-application line and duplicated work-with-omar. (4) The pricing section is slimmed to a teaser: the full £1,997 (was £2,497) price, the payment-plan note and the detailed breakdown are removed from the homepage, and the card now carries a short summary and a single button to work-with-omar, where pricing, the fit-first promise and how to apply now live; the one-programme framing, the experience reassurance and the Sunnah quote are kept. (5) The four mid-page assessment CTAs that varied in wording (Stop Guessing, Discover Your Health Picture, Sound Simple, Ready to Start) are standardised to the single unmistakable label "Start my free assessment", matching the hero and the tools band. The high consult teaser ("Work one-to-one with Omar") is kept in the tools band as a deliberate skip-ahead for ready buyers. No offer-page devices (guarantees, bonus stacks, scarcity or a price table) are added here, since those belong on work-with-omar; the homepage's risk reversal stays the free assessment. Front-page div balance stays exact at 337 open and 337 close, section count moves from 20 to 21 (one cut, two added), the inline JavaScript lints clean with no console statements, the PHP regions stay balanced, and the em-dash and en-dash sweep is zero. Two pieces of new copy (the agitation block and the pricing teaser summary) are first drafts for review.

v3.30.0 applies the Hormozi-review borrows to the work-with-omar offer page (page-work-with-omar.php) and keeps everything that was already stronger on it. Four changes. (1) The practitioner wording is standardised from "UK-registered pharmacist" to "a UK pharmacist (MPharm)" in all six places (meta description, hero subhead, hero badge, the proof card, the About section and the FAQ), and "Trained and registered" becomes "Trained and qualified", which keeps the word "registered" off the page and aligns with the mainline no-credential-blocks rule. (2) A short "If this is you" symptom-mirror is added directly after the hero: a five-point recognition list (running on empty, bloods normal but you do not feel normal, tired but wired, money spent on supplements and tests, you want a plan built around you) closing on the remove-harm line. It reuses the existing section and cost-list styles, so no new CSS. (3) A fourth bonus card is added to the included-with-your-place section, framed as a "Plus": all three paid tools (Toxic Load Audit £12, Personal Fatigue Report £19 and the 14-Day Gut Reset Companion £29), £60 of self-serve tools included free, which puts a concrete value on the stack and is true since those tools exist. (4) An "Is it online or in person?" FAQ is added after the discovery-call question. Scarcity wording is deliberately left as "a small number", per the operator's decision, with no specific number committed. The conditional VSL placeholder is untouched and still hidden until the embed URL is set. Everything that was already better on this page than on the RHE equivalent is kept unchanged: the distraction-free no-nav build, the on-page qualifying application form with the investment acknowledgement, the founder origin story, the 30-day follow-up bonus, the testimonial placeholders with the do-not-invent note, the warm fit-first guarantee, the future-pacing close and the Muslim identity. The page balances exactly at 112 open and close divs and 16 open and close sections, the PHP regions balance, the inline JavaScript lints clean with no console statements, and the em-dash and en-dash sweep is zero.

v3.31.0 enriches the 90-Day Personal Programme value stack on the offer page (page-work-with-omar.php), after confirming the fixed £1,997 (was £2,497) on this page is the canonical price. Three new value-stack rows are added and two existing rows are strengthened. New: (1) "A full medication and supplement review", the pharmacist's unique value, every prescription, over-the-counter medicine and supplement checked together for interactions, duplication and timing, alongside the GP; (2) "The test results you already have, explained", any bloods or reports the client brings translated into plain English with the questions to take back to their GP, framed as interpretation of what they have and not ordering or diagnosing; (3) "A plan to keep it going after the 90 days", a written maintenance plan covering what to keep doing, what to watch for and when to seek help, which folds in the red-flag guidance. Strengthened: the WhatsApp support row now reads "Continuous phone and WhatsApp support, messages and calls" with an explicit reply promise of within one working day, and the halal plan row now mentions practical guidance on choosing halal supplements and foods. The value stack moves from six rows to nine. The £60-of-tools bonus added in v3.30.0 remains in the bonus section. Scarcity wording stays "a small number" and the conditional VSL placeholder is untouched. The page balances at 115 open and close divs and 16 open and close sections, the PHP regions balance, the inline JavaScript lints clean with no console statements, and the em-dash and en-dash sweep is zero. Note: the separate Pricing page Comprehensive tier still shows "we agree the price together" and does not carry these benefits; it needs aligning to the £1,997 and the new value stack separately, as that page is not part of this theme bundle.

v3.31.1 is a data-hygiene tidy with no change to any rendered page, tool behaviour, pricing, payment or anti-spam code. A single malformed list ID was removed from assets/leaky-gut-data.json: its meta.list_id read 6400eb84-310c-11f1-9baf-437228b08f42, a botched find-and-replace artefact from the v3.23.2 single-list sweep that fused the retired old-list prefix (6400eb84-310c) onto the canonical parent-list tail (9baf-437228b08f42), so it matched neither real list. The value was inert: the G21 Leaky Gut Reality Check config bridge (MHE_G21_CONFIG) carries no list ID, the tool JavaScript never reads meta.list_id, and the server handler mhe_handle_leaky_gut_reality_check subscribes through the shared mhe_subscribe_to_emailoctopus helper to the canonical MHE_EO_LIST_ID, so no subscriber was ever routed by this value. The whole list_id key is dropped rather than repointed, because nothing consumes it and a list ID that nothing reads is exactly what let the v3.23.2 sweep drift unnoticed. This was the third occurrence the v3.23.2 entry did not account for, now recorded in that entry's correction note above. No other file changed; the homepage and offer-page surfaces shipped in v3.29.0 through v3.31.0 are byte-for-byte unchanged.

v3.32.0 rebrands the theme in place from Muslim Health Expert to Just Ask Omar (new public domain justaskomar.co.uk), the rebranded tools-and-content site under the RealHealth.Expert parent brand. This is a brand-string pass only: every user-facing brand name, wordmark, page title, meta title, footer, PDF header and footer, and email-template line was changed from Muslim Health Expert, MuslimHealthExpert, MUSLIMHEALTHEXPERT and the bare MHE wordmark to Just Ask Omar, and every muslimhealthexpert.com URL was repointed to justaskomar.co.uk. All email addresses, the info address and the former noreply sender, now route to the single inbox info@realhealth.expert, and the WordPress mail From display name is Just Ask Omar. The internal plumbing is deliberately untouched: the theme folder and Text Domain stay muslim-health-expert, and MHE_EO_LIST_ID, MHE_AUDIT_CONFIG, MHE_CONTACT_EMAIL (value updated to the shared inbox, constant name kept), MHE_STRIPE, the mhe_subscribed cookie, the mhe_handle_ AJAX actions, the mhe-paygate handle and the MHE-SC- PDF reference prefix all keep their existing identifiers, so no form, gate, list or webhook binding changes. The EmailOctopus list, the six-layer silent-success anti-spam pattern, all pricing, payment and gate logic, and the Islamic on-page content are unchanged. Code comments and the historical entries in this changelog retain their original wording as a record. UK English, zero em-dashes.

v3.32.1 finishes the Just Ask Omar rebrand with three small follow-ups on the v3.32.0 base. The faith line 'Where evidence and the Sunnah genuinely meet' is removed from the two page meta descriptions that carried it (Gut Reset Companion and 90-Day Foundation), keeping metadata neutral while the same framing stays in the page bodies. The mail sender display name is set to 'Omar, Health Expert' across the WordPress mail From headers, the F20 sender constant and the 90-Day email-preview sender label; addresses still route to info@realhealth.expert. The Leaky Gut Reality Check data file has its pharmacist-credential note reworded to the mainline non-credential voice, with the original wording preserved verbatim in a separate internal audit log per the audit-trail rule. No tool logic, pricing, payment, gate or anti-spam code changed. UK English, zero em-dashes.

v3.32.2 completes the Just Ask Omar secular-forward content pass across the remaining tools, neutralising faith-specific wording where a tool reads better as fully general while keeping faith content where it genuinely belongs and keeping every halal-as-feature reference. The Holistic Health Assessment moves its meta from Prophetic medicine wisdom to traditional wisdom and rewords its three faith-specific questions to read for everyone with a For Muslims hint, the daily-rhythm question now reading How regular are your daily prayers, or moments of stillness and reflection, scoring unchanged. The Terms page replaces its single Sunnah-framing disclaimer with a broader honesty paragraph that is evidence-first by default, acknowledges traditional and Islamic content may not always align fully with current science, and confirms the site is not a substitute for medical advice or religious guidance and issues no religious rulings. The Personal Fatigue Report emails, all six templates, and the 14-Day Gut Reset Companion and 90-Day Foundation reports move their greeting and sign-off to the secular Peace be with you and With prayers for your wellbeing, the Gut Reset PDF cover now greets by first name and its body tagline drops the trailing Sunnah sentence while the longer honesty statement and all halal handling stay. The Personal Sun Need Calculator relabels its dress options by how much skin is covered rather than by garment, percentages and calculation unchanged, with the maps updated to match and the SUN4 cross-link keeping its link minus the Sunnah-framing phrase. The Pre-Consultation tool relabels its prayer question to How often do you pray each day with the data-question tag Prayer frequency, keeping the internal field id and the fasting and halal-conscious options. The Work With Omar offer page moves faith content down out of the hero into the FAQ, removes the halal-by-default hero badge and reframes the bio to faith-aligned guidance where it genuinely fits, keeping both the halal FAQ and the not-Muslim FAQ. Three heavy faith tools are deliberately unchanged, the 10-Minute Parents Guide, the SUN4 Modest Dress calculator whose Islamic-perspective card stays visible, and the 90-Day Foundation Islamic thread. Internal plumbing is untouched, the EmailOctopus list id, the mhe_subscribed cookie, the mhe_handle_ AJAX actions, MHE_AUDIT_CONFIG, the theme folder and the text domain keep their identifiers, so no form, list, gate or webhook binding changes. No tool logic, pricing, payment gate or anti-spam code changed. QA, all edits were string-literal swaps so the PHP regions balance, the standalone scripts lint clean, all four JSON data files parse, mobile and prefers-reduced-motion behaviour is unchanged, and the em-dash and en-dash sweep across the whole theme is zero. UK English, zero em-dashes.

v3.32.3 adds Organisation structured data and a former-name line for search continuity after the Just Ask Omar rebrand, with no change to any rendered tool, pricing, payment, gate or anti-spam code. A small wp_head function in functions.php now outputs a single JSON-LD Organization block in the document head, declaring the current brand name Just Ask Omar with alternateName Muslim Health Expert and the site URL from home_url, so search engines receive the former-brand association as machine-readable metadata while visitors see nothing added to the page. The Terms page gains one short, plainly readable line in its existing footer, This site was formerly known as Muslim Health Expert, placed at the very bottom; it is normal body text and is not hidden, off-screen, colour-matched to the background or shrunk, so it stays within search-engine policies on hidden text. No deceptive or hard-to-read styling is used anywhere. Internal plumbing is untouched, the theme folder and text domain stay muslim-health-expert and functions.php keeps its single open tag and no closing tag. QA, the PHP regions balance, the JSON-LD encodes via wp_json_encode, and the em-dash and en-dash sweep is zero. UK English, zero em-dashes. Deploy note, this entry sits on the v3.32.2 base from the go-live handover bundle; if the current built base is newer (the Hajj-scene line v3.33.0 to v3.35.0), apply the same two changes to that base instead so the Hajj work is not lost.

v3.32.4 adds the same readable former-name line to the home page footer, completing the search-continuity surfacing started in v3.32.3, with no change to any tool, pricing, payment, gate or anti-spam code. A single short line, Formerly Muslim Health Expert, is added to the front-page site-footer directly beneath the copyright and tagline lines. It is normal footer body text in the existing light-grey-on-dark .site-footer style, the same style as the visible copyright, tagline and links beside it, and is not hidden, off-screen, colour-matched to the background or shrunk, so it stays within search-engine policies on hidden text. The full former brand name is used rather than the MHE acronym, because the full name is the meaningful continuity signal and matches the Terms-page line and the Organization alternateName added in v3.32.3. No deceptive or hard-to-read styling is used. QA, the front-page PHP regions balance and the em-dash and en-dash sweep is zero. UK English, zero em-dashes. Deploy note as in v3.32.3, this sits on the v3.32.2 handover base; if the current built base is newer (the Hajj-scene line v3.33.0 to v3.35.0), apply the same one-line footer addition there too.

v3.32.5 begins the SVG animation precision pass, starting with the two homepage result graphs in the Random Tips and Personalised Plan toggle on front-page.php, with no change to copy, pricing, payment, gate or anti-spam code. Each drawn line is normalised to pathLength 100 and animated with stroke-dasharray 100 and stroke-dashoffset 100 to 0, replacing the guessed dash lengths that left the jagged line short of completing (true length near 684 against a set 600) and made the smooth line finish about halfway through its cycle and then sit static (true length near 240 against a set 500). The jaggedDraw and smoothDraw keyframes are retimed to the 0 to 100 range. A reduced-motion rule scoped to the toggle now freezes both graphs fully drawn, which the inline-styled draws were previously escaping. The smooth line thick underlay is kept as an intentional glow, not removed as a duplicate, and the repeated checkmark and icon polylines elsewhere are unchanged because they are reused UI icons, not chart ghosts. QA, front-page PHP regions balance and the em-dash and en-dash sweep is zero. UK English, zero em-dashes. Remaining SVG animations (the symptom-checker and fatigue-report radar charts, the energy-battery curve, the assessment draws and the ATP-lab flow) are queued for the same precision treatment, with interactivity to be added to the result charts. Deploy note as in v3.32.3, this sits on the v3.32.2 handover base; apply to the newer Hajj base if that is current.

v3.32.6 continues the SVG animation precision pass on the Energy Battery curve and the Symptom Checker radar, with no change to copy, pricing, payment, gate or anti-spam code. Energy Battery, the solid result curve in page-energy-battery.php now carries pathLength 100 so its draw is exact, replacing a guessed dash length of 4000 that made the curve finish almost instantly; the dashed comparison line is left as an intentional dashed style and reduced-motion was already handled globally. Symptom Checker radar in partials/symptom-checker-body.php, the data polygon now uses pathLength 100 with stroke-dasharray 100 and stroke-dashoffset 100 to 0, replacing a guessed perimeter of 1000 that made the outline finish early and sit static; a reduced-motion branch renders the finished radar with no draw or pop. Each of the six pillar vertices gains a generous transparent, keyboard-focusable target that reveals the pillar name, a strength band and a plain-English meaning on hover, tap or focus, with an aria-label carrying the same text, plus a Replay control and tap-away-to-close on touch. The reveal uses the page tooltip element and the existing weighted load values, so no figures are fabricated. QA, both files PHP regions balance, the symptom-checker script passes node --check and the em-dash and en-dash sweep on both files is zero. UK English, zero em-dashes. Still queued, the Personal Fatigue Report radar and gauge (same pattern), the assessment draws and the ATP-lab flow. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.7 adds the reveal interactivity to the Personal Fatigue Report radar and severity gauge in page-personal-fatigue-report.php, with no change to copy, pricing, payment, gate, anti-spam or PDF export. Neither visual draws a line by dasharray, the radar scales and fades in and the needle swings, so there was no precision fault to fix and reduced-motion was already handled. A shared reveal helper now adds a transparent, keyboard-focusable target over each of the six radar vertices and over the gauge. The radar reveal shows the pillar name, a load band and a plain-English meaning plus the score already on the chart and the typical reference value, using the existing weighted values so no figures are invented. The gauge reveal shows the severity band and a short remove-harm framed line. All reveals carry matching aria-labels, close on tap-away on touch, and are user-triggered so they add no motion. The transparent targets are invisible to the html2canvas PDF snapshot, so the exported report is unchanged. QA, the three edited graphics functions pass node --check in isolation, the file PHP tag pattern is unchanged (one opener with no end-of-file closing tag, valid), and the em-dash and en-dash sweep is zero. UK English, zero em-dashes. Still queued, the assessment draw-ins and the ATP-lab metabolic flow. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.8 covers the Assessment radar and the ATP-Lab metabolic flow, with no change to copy, pricing, payment, gate or anti-spam code. Assessment, the result radar in page-assessment.php used the same guessed perimeter of 1000 as the symptom-checker radar, so its outline finished early and sat static; it now uses pathLength 100 with stroke-dasharray 100 and stroke-dashoffset 100 to 0, drawing exactly, and reduced-motion was already handled. The small completion tick uses a short dash and is a fixed icon, not a line graph, so it is left as is, and the circular progress ring already uses its computed circumference, which is correct, so it is untouched. ATP-Lab, the cellular-respiration scene runs 97 looping SMIL animations, which the CSS reduced-motion rule cannot stop, so they previously kept running for reduced-motion users until the pause button was pressed. The scene now auto-pauses for reduced-motion at load, freezing on a populated frame (the timeline is advanced to two seconds, then paused) rather than the empty start frame, with play still available, and a media-query listener applies the same if the preference changes at runtime. No precision fix was needed there because its dasharray values are decorative dashed styling, not draws. QA, both files PHP regions balance, the edited functions pass node --check in isolation, and the em-dash and en-dash sweep on both is zero. UK English, zero em-dashes. The result charts and the main animated scenes are now done; remaining is a light sweep of decorative loops for flash-frames and reduced-motion. Optionally the Assessment radar could gain the same tap-to-reveal as the other two result charts, on request. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.9 completes the SVG animation pass with the decorative-loop sweep, with no change to copy, pricing, payment, gate or anti-spam code. A theme-wide scan compared the first and last frame of every infinite loop and checked reduced-motion coverage. Two real flash-frames were found, both on front-page.php, where the funnel items (funnelDrop) and the draining dots (drainDown) jumped in opacity at the loop boundary; both keyframes now hold opacity at zero across the reset, so each cycle fades in and out cleanly with no blink. Everything else was already correct, the orb, cycle-wheel and glyph rotations run 0 to 360 degrees which is seamless, and the hero and drift pulses use the alternate direction so they reverse rather than snap; these were left untouched. Reduced-motion coverage had no gaps, every file with infinite loops already disables them under prefers-reduced-motion. The scan also found that .flow-particle, which drives flow-along-x in page-atp-lab.php, is applied to no element, so it is orphaned CSS rather than a live flash; it is left for the separate CSS tidy and noted here. QA, front-page PHP regions balance and the em-dash and en-dash sweep is zero. UK English, zero em-dashes. This closes the animation work, the homepage line graphs, the energy-battery curve, the symptom-checker, assessment and fatigue-report radars with reveal interactivity on two radars and the fatigue gauge, the ATP-lab reduced-motion auto-pause, and now the decorative loops. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.10 adds a reusable next-step funnel block and wires it into the Symptom Checker as a first example, with no change to existing copy, pricing, payment, gate or anti-spam code. A theme scan found that the homepage and the paid programme pages route strongly to the consultation, but most free tools (symptom checker, energy battery, e-number decoder, additives, parents guide, leaky-gut, gut-brain cable, mitochondria lab, sun-spectrum, and even the paid fatigue report) barely route onward, so people finish and dead-end. The new partial partials/next-steps.php outputs a single bottom-of-page band with two routes, a link to the most relevant next free tool to keep people on the site, and a clear 1-2-1 call to action to the Work With Omar page for the consultation, framed in the pharmacist voice with the remove-harm and everyone-is-different pillars and an unhedged call to action. A small editable map sets the related-tool link per tool. The block is scoped, mobile-first (cards stack below 640px) and has a reduced-motion override. It is wired only into page-symptom-checker.php so far as a working example; the other free tools are a one-line include each once the copy and the cross-link map are approved. QA, the partial and the template balance their PHP tags, the em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. The version stays on this base patch line to avoid clashing with the parallel Hajj v3.33 line; on the latest base this is a feature-level change. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.11 rolls the next-step funnel block out across the free tools, with no change to existing copy, pricing, payment, gate or anti-spam code. The block from v3.32.10 is now included on all sixteen free-tool pages via a one-line include before each page footer: symptom checker, toxic load audit, energy battery, fatigue pattern finder, the two sun calculators, sun spectrum explainer, e-number decoder, additives, gut-brain cable, leaky-gut reality check, mitochondria mini-lab, ATP-lab, the parents guide, the assessment, and the paid personal fatigue report. Each free tool shows a related free tool to keep people on the site, plus the 1-2-1 call to action to the Work With Omar page; the consultation card keeps the soft-to-strong step, sending to the offer page rather than naming the price. The paid personal fatigue report, which was badly under-routed at two references, shows the consultation card alone with no free cross-link. The two call-to-action-saturated programme tools, the 90-day foundation and the gut-reset companion, were left out because they already route heavily. The cross-link map was corrected so the Fatigue Pattern Finder points to a free tool rather than the paid report under a free label. Three footer patterns were handled, wp_footer for the self-contained tools, get_footer for the fatigue finder, gut-brain cable and fatigue report, and a body-end include for the assessment. QA, every edited template carries the include, the theme-wide em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. To confirm, the gut-brain-cable slug is the only cross-link target not linked elsewhere in the theme, so check it matches the live page slug, and any tool built but not yet publicly launched should have its cross-link removed until it is live. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.12 is the first homepage funnel pass, with no change to pricing, payment, gate or anti-spam code. The homepage already funnels into the free tools well (hero call to action plus an early tools band) and already explains the path to working with Omar, but that path sat near the bottom of the page (the eleventh section), so a first-time visitor saw a lot of free-tool pushing before learning the journey leads to a 1-2-1. Rather than lengthen an already long page, a slim three-step path strip was added high up, between the problem section and the free-tools band: Start free, then See your picture, then Work 1-2-1 with Omar, with a soft See how link on step three to the Work With Omar page. The hero Start my free assessment stays the primary top action, so the strip frames the destination without competing with the free entry point, and the existing detailed how-it-works section near the foot is unchanged. The strip reuses the theme tokens and the existing reveal animation (so reduced-motion is already covered), is mobile-first (stacks below 760px, three across above), and has a subtle connector line between steps on desktop. QA, the front-page PHP tags balance, the inserted block is well formed (one section, one list, three items), and the theme-wide em-dash and en-dash sweep is zero. UK English, zero em-dashes. Remaining funnel layers, the Work With Omar page tightened to one clean booking action, then the email capture wired as a nurture step. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.13 corrects the book title across every email and on-screen reference, with no change to pricing, payment, gate or anti-spam code. The book was renamed from the old working title to Tired, Wired, and Toxic, and three places in the theme still carried the old name. The transactional assessment-report email, sent to every person who completes the assessment with their PDF attached, had the old title in its closing P.S.; it now names Tired, Wired, and Toxic, and its framing was widened from an environment-only hook to the book's actual positioning, finding and removing the hidden causes behind feeling unwell. The two on-screen assessment result messages shown when the environment pillar scores as a weak point were corrected the same way. QA, no instance of the old title remains anywhere in the theme, functions.php keeps its single opener with no closing tag, page-assessment.php tags balance, the theme-wide em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. One item is left for your decision rather than fixed: the transactional report email opens with a salam while the EmailOctopus nurture sequences are secular by standard, so whether that report email stays Islamic for the Just Ask Omar audience or matches the secular standard is a voice call for you. Separately noted, the assessment report call-to-action buttons still point to the old homepage contact and pricing anchors with a stale capacity line rather than the single Work With Omar page. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.14 makes all transactional emails neutral and consistent in voice, with no change to pricing, payment, gate or anti-spam code. Three system emails sent from the theme still opened with an Islamic greeting: the plain-text assessment report, the HTML Toxic Load Audit results, and the 90-Day Programme application confirmation. All three now open with "Hi {name}," to match the EmailOctopus sequences. The application email also carried Islamic wording in its body and sign-off, an "in sha Allah" phrase and a "With duas for your wellbeing" close, both now neutral. Sign-offs were standardised to "Speak soon, Omar" across the three (previously "Take care of yourself, Just Ask Omar", "Yours in good health, Omar", and "With duas for your wellbeing, Omar"), and the application email sender name was aligned from "Omar at Just Ask Omar" to "Omar, Health Expert", so every user-facing email now sends as "Omar, Health Expert". Code comments describing the old greetings and sign-offs were updated to match. One Islamic phrase was deliberately left in place: the on-screen contact-form success message ("in sha Allah"), which is on-page Just Ask Omar content rather than an email and so outside the email-neutrality change. QA, no salam or other overtly Islamic wording remains in any email, functions.php keeps its single opener with no closing tag, the em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.15 corrects the email greeting and sign-off wording to the canonical secular-forward convention, fixing an error introduced in v3.32.14. The correct convention, set in the v3.32.2 secular pass and already live in 7 greeting and 28 sign-off locations across the tool emails and PDFs, is the greeting "Peace be with you, {first name}," and the sign-off "With prayers for your wellbeing, Omar" (the English, faith-neutral renderings of the salam and the duas), sender "Omar, Health Expert". v3.32.14 wrongly used the RealHealth.Expert marketing voice ("Hi {name}," and "Speak soon, Omar") on the three theme emails. Those three (the plain-text assessment report, the HTML Toxic Load Audit results, and the 90-Day application confirmation) now use the canonical wording. A fourth surface, the F20 Personal Fatigue Report inline fallback email in inc/functions-f20-additions.php, was found still carrying the old "As-salamu alaykum" greeting and "With duas for your wellbeing" sign-off (its template files were converted in v3.32.2 but the inline fallback was missed); it is now canonical too. The deep check confirmed everything else is correct: the six F20 email templates and the Gut Reset PDF cover already use the canonical wording, and the three faith tools deliberately kept Islamic by operator decision (the 10-Minute Parents Guide, the SUN4 Modest Dress card, and the gated 90-Day Foundation Islamic thread) are unchanged, as are on-page tool greetings that carry the salam as part of the site's on-page Muslim identity. QA, functions.php keeps its single opener with no closing tag, both edited files balance, the em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.16 applies the finalised email identity across every email, tool and PDF, on operator instruction, overriding the earlier decision to keep some faith tools as-is for greetings and sign-offs. Greeting set to "Peace be with you, {first name},", sign-off to "With prayers for your wellbeing, Omar", and the sender name changed from "Omar, Health Expert" to "Just Ask Omar | RealHealth.Expert" (address info@realhealth.expert unchanged). Surfaces brought into line: the gated 90-Day Foundation (18 email-template greetings, its on-screen welcome and report greetings, and its "Speak soon" report sign-off), the 10-Minute Parents Guide greeting and "With duas" sign-off, the SUN4 Modest Dress result greeting, the SUN1 result greeting, the Gut Reset on-screen welcome and check-in greetings, the Leaky Gut on-screen greeting, the Work With Omar offer-page greeting, the four functions.php From headers, the F20 sender constant, and the HHF1 sender footer. The F20 email templates and the Gut Reset PDF cover already used the greeting and sign-off. Two items were deliberately left: the ADD1 historical changelog comment, which records that ADD1's salam was already removed, and the user-to-Omar export email body "Hi Omar,", which is a message the user sends rather than one Omar sends. The three EmailOctopus email files (post-assessment, free-tool nurture, JAO tool nurture) were updated to match. The day-by-day Sunnah content inside the gated 90-Day Foundation was left intact; only its greetings and sign-off changed, since the instruction covered greeting, sign-off and sender. QA, functions.php keeps its single opener with no closing tag, all replacements are quote-neutral so every file remains structurally intact, the em-dash and en-dash sweep is zero theme-wide, and no debug flags are set. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.17 upgrades the Work With Omar offer page and aligns the homepage cohort line, applying the $100M Offers recommendations that are safe for a regulated pharmacist offer. Cohort scarcity is now specific: five people per cohort, in the turn line, the price-card terms, the urgency line (tied to the cohort filling and the next intake opening only once this one finishes, no invented start date), the About section, and the homepage consult tile. The two testimonial placeholders were replaced with four real, permissioned client quotes carried over from the homepage (a practising doctor plus three clients) under the homepage honesty line, real client experiences edited for length and shared with permission, results vary, everyone is different. The price anchor gained an honest cost comparison: what the parts cost separately, a defensible private-consultation reference, and a per-day reframe of about twenty-two pounds a day, which is tied to the current 1,997 price and must be updated if the price changes. A new What changes when you are not running on empty section paints the life-quality return (evenings with family, the sport you stopped making time for, steadier days and fewer lost to feeling wiped out, better conversations, time and headspace back), framed as life-quality with an explicit not-a-promise-to-treat-or-cure line and the everyone-is-different caveat, so it stays clear of health-outcome claims. The three included bonuses were retagged from a generic Included to the obstacle each solves (Week-one win, Yours to keep, Stay on track); the 60-pound tools bonus is unchanged. The conditional refund now leads with a scannable Try the first session at my risk. Price left unchanged at 1,997 pending the decision on moving to 2,497. QA, em-dash and en-dash sweep zero theme-wide, mobile reuses the existing responsive containers, no debug flags. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.18 raises the 90-Day Personal Programme to 2,497 and removes the founding-cohort framing, on operator decision. The struck-through 2,497 anchor and the founding-cohort line are gone; the price reads simply 2,497 with a clean one-fee line, and value is anchored by the honest cost comparison rather than a discount, which also removes the risk of an introductory price looking stale if the first places take a while to fill. The application-form investment acknowledgement was updated from 1,997 to 2,497 to match. Scarcity is reworded from cohort-based to evergreen across the turn line, the urgency block, the About section and the homepage consult tile: five people at a time rather than five per cohort or first group of five, with selectivity FOMO (I choose each one on the discovery call, apply while a place is open), so it never reads as empty or endless. The per-day reframe is updated to about twenty-eight pounds a day. The Ajmel K. testimonial ellipsis was restored to match the homepage permissioned wording. The assessment results page was fixed: both result CTAs now point to /work-with-omar/ rather than the old /#contact and /#pricing homepage anchors, and the stale up-to-8-consultations-a-month line is replaced with By application, I only work with five people at a time, consistent with the offer page. QA, em-dash and en-dash sweep zero theme-wide, functions.php intact, no debug flags. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.19 is the homepage compliance and identity pass, copy and dead-CSS only, with no change to pricing, payment, gate, anti-spam or email code. The home page is rewritten into the first person throughout, replacing the corporate "we", "our", "he", "his" and "him" with "I" and "my" across the navigation, the section titles, the twelve assessment tag-detail boxes, the unique-approach band, the first step card, the four-pillars line, the testimonials subtitle, the newsletter privacy line, the whole About and journey passage, the why-MPharm block, the when-this-is-not-suitable safety line, and the FAQ answers and contact section, so the voice matches the one-to-one Just Ask Omar offer. Three kinds of "we" are deliberately preserved: scripture inside quotations, the collaborative "we" where it means Omar and the client together (for example "our ancestors" and "substances we encounter every day"), and the formal legal disclaimer block, which is left in its defensive register unchanged. Four claim wordings approved by the operator are applied. The gut tile drops "We restore gut health through Prophetic medicine protocols", an outcome claim, and reframes to the gut sitting at the centre of how you feel so the assessment starts there, keeping the hadith and the fermented-foods and Prophetic-dietary-practice detail. The allergies tile drops the vague "restore balance" and reframes to spotting hidden food triggers and removing the harm before anything is added. The diet tile removes only the single word "purification", a detox claim, and keeps the remove-harm-before-adding-benefit pillar leading at full strength alongside fasting and clean, whole-food eating. The FAQ answer to what can you help with drops the named-condition list, including mental health and weight management, which read as treatment claims, and replaces it with experiential symptom language plus an explicit "I do not treat named conditions or replace your GP" and the remove-harm framing. Six homepage testimonials that carried health-outcome or weight-loss claims (Hassan A., Ahmed M., Amjad H., Ali H., Ahmed A. and P. Ali) are retired rather than reworded, because editing a named person's quote would attribute words they did not say; the five claim-free testimonials (Dr. S. Mohamed, Ajmel K., H. Ali, C. Mohammed and S. Hussain) are kept. On the ATP Lab page, one block of genuinely dead CSS is removed: the flow-particle rule, its flow-along-x keyframes animation (referenced only by that rule), and the two flow-particle entries in the paused-state and reduced-motion selector lists; the class was applied to no element in the markup or scripts, and every co-listed selector and the other keyframes are kept. Four things are deliberately left for a later decision rather than changed here, and flagged: the legal disclaimer block is not first-personed, the "Unrivalled" and "Unique" superlatives are kept (only the voice around them changed, not the claims), the homepage "a limited number of clients each month" line still differs from the offer page's "five people at a time", and the journey wording "real healing" and "heal holistically" is carried as voice-only. QA, the front-page edits were applied as forty-nine whole-string replacements, each asserted unique, together with the six testimonial deletions; five testimonial cards remain, front-page.php and page-atp-lab.php both balance on PHP tags, braces, parentheses, brackets and the div, details and paragraph containers, functions.php keeps its single opener with no closing tag, the theme-wide em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.20 strips the GPhC line from the home page, completing the no-GPhC-in-mainline rule on the front page, with no change to pricing, payment, gate, anti-spam or email code. The "Professional qualifications and titles" disclaimer in the homepage legal block no longer states registration with the General Pharmaceutical Council: the clause "and is registered with the General Pharmaceutical Council (GPhC)" is removed, the Master of Pharmacy (MPharm) degree fact is kept, and the rest of that disclaimer, the disclosure that "Nutritionist" is not a legally protected UK title, is unchanged. This was the only user-facing GPhC reference left; the why-a-holistic-pharmacist section's GPhC credential line was already removed in v3.27.0. Two code comments that exist to enforce the no-GPhC rule are deliberately kept, since they are not user-facing and removing them would weaken the guard: the functions.php port-handoff note on GPhC minimisation and the g9 copy-patterns guard comment that reads no GPhC number, no Companies House number. No GPhC reference now remains on any user-facing surface, and the Work With Omar landing page and the terms page were already clear. This release carries all of v3.32.19 (the homepage first-person identity sweep, the four approved claim rewordings, the six retired testimonials and the ATP Lab dead-CSS removal), since v3.32.19 was built but not deployed, so one upload ships both. QA, front-page.php balances on PHP tags, braces and parentheses (the removed GPhC clause drops one parenthesis pair, still balanced), functions.php keeps its single opener with no closing tag, the theme-wide em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.21 replaces the site logo with the new Just Ask Omar wordmark, the speech-bubble-and-leaf mark, cropped tight so it reads at full size, with no change to copy, pricing, payment, gate, anti-spam or email code. The new logo is dropped in over the existing asset filename assets/images/muslim-health-expert-logo.png, so all three surfaces that already reference it update at once: the homepage header (56px), the homepage footer, and the shared tool-page bar (38px, partials/site-bar.php). The supplied image was a 508 by 508 square with heavy cream padding; it is cropped to its content (392 by 218) and the cream background is keyed to full transparency with a soft alpha edge, matching the previous logo's transparent treatment, so it sits cleanly on the white header and bar and on the dark footer. No template or CSS changed, the references and the height rules were already in place, so this is an asset swap plus the version bump. The previous Muslim Health Expert wordmark it replaces is preserved in an internal, non-shipped backup. QA, the new asset is a 392 by 218 RGBA PNG with transparency, every template is unchanged and still balances, functions.php keeps its single opener with no closing tag, the theme-wide em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.22 adds a proper favicon and wires it into every page, with no change to copy, pricing, payment, gate, anti-spam or email code. The icon is the speech-bubble-and-leaf mark taken from the new Just Ask Omar logo, not the wordmark, since the wordmark is unreadable at tab size; it is placed on a cream rounded tile (the theme cream) so the green bubble, the leaf and the gold arc stay legible on both light and dark browser chrome. A standard set is generated into assets/images: a multi-resolution favicon.ico (16, 32 and 48), favicon-32x32.png, favicon-16x16.png, apple-touch-icon.png at 180, and favicon-512.png for larger uses. The link tags (icon 32 and 16, apple-touch-icon and shortcut icon) are added to the head of the homepage (front-page.php), the Work With Omar landing page and the shared tool-page header (header.php). The terms page previously carried the only icon link in the theme and pointed it at the full wordmark logo, which a browser squashes into an illegible smudge in the tab; that link is corrected to the favicon set. The logo asset from v3.32.21 is unchanged. QA, the four edited templates balance on PHP tags, braces and parentheses (each gains the favicon link islands), functions.php keeps its single opener with no closing tag, the theme-wide em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.23 adds S. Hussain as the fifth testimonial on the Work With Omar offer page, matching the homepage, with no change to pricing, payment, gate, anti-spam or email code. The offer page carried four of the five claim-free testimonials kept on the homepage in v3.32.19; the fifth, S. Hussain (the realise-I-do-not-know-much and write-a-book quote), is now added in the same testi-card format using the verbatim permissioned homepage wording, claim-free and consistent with the ASA position. The testimonial block is a single centred column of stacked cards, so the fifth card simply stacks below the others with no layout change. QA, page-work-with-omar.php balances on PHP tags, braces and parentheses, functions.php keeps its single opener with no closing tag, the theme-wide em-dash and en-dash sweep is zero, and no debug flags are set. Carries the favicon and all prior v3.32.x work. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.24 changes the typography on the two flagship pages, the home page and the Work With Omar offer page, from Crimson Pro and Source Sans 3 to Fraunces and Plus Jakarta Sans, matching the RealHealth.Expert typeface pairing, on operator request and as the first step of a staged rollout, with no change to copy, pricing, payment, gate, anti-spam or email code. Each page routes its fonts through two CSS variables, so the swap is mostly the heading variable --font-h repointed from Crimson Pro to Fraunces and the body variable --font-b from Source Sans 3 to Plus Jakarta Sans, with the Georgia and system-ui fallbacks kept. The Google Fonts request on each page is updated to load the new families: the home page keeps the italic axis, since it has one true-italic serif pull-quote, and the offer page mirrors the RealHealth.Expert weight set. On the home page, three serif and six sans SVG text labels that name the family directly rather than through the variable were updated too, so the inline diagrams match. Neither page uses the sans above weight 700, so nothing relies on a weight Plus Jakarta Sans does not carry and there is no rendering regression. The rest of the theme, including the shared tool-page bar in header.php and every other template, still loads Crimson Pro and Source Sans 3 by design; those will be brought across in the whole-site pass if the look is confirmed here. QA, front-page.php and page-work-with-omar.php both balance on PHP tags, braces and parentheses with counts unchanged from before the edit, every replacement was applied as an asserted exact-count string substitution, the inputs keep font-size 1rem so iOS does not zoom on focus, functions.php keeps its single opener with no closing tag, the theme-wide em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.25 completes the typography migration to the RealHealth.Expert pairing across the rest of the site, on operator instruction, after v3.32.24 converted the home page and the Work With Omar offer page. No change to copy, pricing, payment, gate, anti-spam or email code. Nineteen further website files move from Crimson Pro and Source Sans 3 to Fraunces and Plus Jakarta Sans: the shared tool-page header and bar, the assessment, energy battery, gut-brain cable, modest-dress sun, personal sun need, pre-consultation, sun spectrum and terms pages, the 90-Day Foundation, ADD1, E-number decoder, gut-brain cable, Gut Reset, Leaky Gut, next-steps, Parents Guide and site-bar partials, and the F5 mito-lab stylesheet. Every Google Fonts request that named Crimson Pro is rebuilt to one canonical request: Fraunces carrying the weights and italics Crimson used, including 900, and Plus Jakarta Sans capped at weight 800. Plus Jakarta Sans has no 900, so the few Source Sans 3 requests for 900 are served at 800, and any body text set to weight 900 now renders at Plus Jakarta Sans's 800 maximum, a deliberate and minor change. JetBrains Mono on the E-number decoder, Outfit as the occasional display face, and the web-safe Helvetica stacks in the email templates are all left untouched, since email clients strip web fonts. One stray dead serif on the assessment page, a Cormorant Garamond declaration that was never loaded and so was falling back to Georgia, is folded into Fraunces. While migrating, five self-contained tool pages were found to declare a brand font in their CSS but load no webfont at all, so they had been rendering the Georgia and system fallback all along, before this change too: the Leaky Gut Reality Check, the Mitochondria Mini-Lab, the Personal Sun Need Calculator, the ATP Lab, and the shared next-steps block on the Toxic Load Audit. The canonical font link is added to each of those page heads, and Fraunces is added to the Toxic Load Audit's existing Plus Jakarta Sans and Outfit request, so they now render the brand fonts. Because the CSS already named the brand fonts, this realises the original design intent rather than restyling anything; functions.php was not touched and the sixteen pages that already loaded fonts are unchanged. QA, every modified file balances on PHP tags, braces and parentheses with counts unchanged from before the edit, each replacement was applied as an asserted string substitution, the canonical Google Fonts request is valid by construction with Plus Jakarta Sans never requested above 800, every page now reaches a Fraunces link, inputs keep font-size 1rem, functions.php keeps its single opener with no closing tag, the theme-wide em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy note as before, built on the v3.32.2 base; graft onto the newer Hajj base if that is current.

v3.32.26 is a correctness follow-up to v3.32.25 after a recheck. The v3.32.25 sweep changed font references in PHP and CSS only and did not scan JavaScript. One JavaScript module, js/g9/shared/vagus-cable-svg.js, sets the font-family of the G9 gut-brain-cable SVG diagram labels directly in script, and still named Source Sans 3. Because the G9 page now loads Plus Jakarta Sans and no longer loads Source Sans 3, those diagram labels had been falling back to the system sans. That one JS font-family is changed to Plus Jakarta Sans so the labels render in the brand sans; node --check passes on the file. Two stale descriptive comments are corrected to name the current fonts: the enqueue comment in page-gut-brain-cable.php and the fonts comment in page-energy-battery.php. These are comment-only edits with no behaviour change. Deliberately left untouched: the additive-data strings 'Crimson Lake' in the E-number and ADD1 data, which is a genuine E120 colour synonym and not a font; the vendored jsPDF libraries, which contain only generic font-keyword logic and no brand-font names; one header.php comment describing the removed wordmark's historic styling; and the changelog history itself. No @font-face anywhere, and every Google Fonts request remains valid with Plus Jakarta Sans never requested above weight 800. QA, every modified file balances on PHP tags, braces and parentheses with counts unchanged from before the edit, the JavaScript lints clean under node --check, the exhaustive all-file scan shows no remaining active brand-serif or brand-sans reference in any font-family, font link, or script-set font, inputs keep font-size 1rem, functions.php is untouched with its single opener and no closing tag, the em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy v3.32.26 in place of v3.32.25; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.27 is a correctness follow-up to the typography migration after a layout-and-weight recheck. The home page declares font-weight 800 on nine elements but its Google Fonts request loaded Fraunces only to 700 and Plus Jakarta Sans only to 700, so those nine were rendering at 700: four Plus Jakarta Sans micro-labels (the section tag, two gold badges and the complete-tier price badge) and five Fraunces display elements (the infographic stat numbers, the VS divider, the donut centre label, and the inline Lifespan and Healthspan labels). The v3.32.24 note that neither flagship page used the sans above 700 was inaccurate for the home page, which is why its request had been built short. The fix is the font link only, with no CSS change and no design change: front-page.php now loads the same canonical request the other pages use, Fraunces with optical sizing, weights to 900 and italics to 700, and Plus Jakarta Sans to 800, so weight 800 resolves on the sans labels, weight 800 interpolates on the Fraunces display elements, and the home page's sixteen italic usages gain the heavier italic styles. The multiple-choice options and text boxes were rechecked and are unaffected: the assessment .option, the Fatigue Pattern Finder answer buttons, and the Symptom Checker tiles all centre by flexbox or grid with padding-based sizing and no fixed-height line-height centring, so the swap cannot misalign them. The single font-weight 900, the assessment health-age number, is on Fraunces with Fraunces 900 loaded and was already correct. The Work With Omar page is unchanged because it uses no weight above 700. QA, front-page.php balances on PHP tags, braces and parentheses with counts unchanged from before the edit, the change was applied as an asserted exact-count string substitution, the inputs keep font-size 1rem, functions.php is untouched with its single opener and no closing tag, JavaScript lints clean under node --check, the em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy v3.32.27 in place of v3.32.26; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.28 ports the RealHealth.Expert Work With Me page styling onto the Just Ask Omar Work With Omar offer page (page-work-with-omar.php), on operator request, as part of consolidating to a single Work-With landing page that now lives on Just Ask Omar rather than being duplicated on RealHealth.Expert. No change to pricing, payment, gate, anti-spam or email code, and the page copy is unchanged except for the paid-tools panel below. Three visual treatments are brought across, rendered in the Just Ask Omar palette rather than the RealHealth.Expert hex values, since the two themes are separate codebases with different tokens. First, a centred gold underline bar is added under every section heading (.sec-h::after, 52 by 3 pixels, var(--gold), which is the Just Ask Omar antique gold c9a84c, not the RealHealth.Expert FCD34D). Second, the two card lists, .cost-list and .change-list, drop their coloured left-border accent and gain a hollow green circle bullet, a 13 pixel ::before with a 2 pixel var(--green-mid) ring and matching left padding, mirroring the RealHealth.Expert feel-list look. Third, the paid-tools panel, previously one bonus-card with the prices written into a sentence, is rebuilt as a green dashed box (.tools-incl) titled Plus every paid tool, included free, listing the Toxic Load Audit, the Personal Fatigue Report and the 14-Day Gut Reset Companion, each with a struck-through price (12, 19 and 29 pounds) over hairline dividers, and a sixty-pounds-of-self-serve-tools caption, mirroring the RealHealth.Expert included-free box. The 14-Day label keeps a plain hyphen, not the en-dash the source rendered, to hold the zero-dash rule. No animation was added, so the prefers-reduced-motion block is unchanged, and the inputs keep font-size 1rem. QA, page-work-with-omar.php balances on PHP tags (eleven openers, eleven closers, unchanged), braces (197) and parentheses (264), every edit was applied as an asserted exact-count string substitution, functions.php is untouched with its single opener and no closing tag, the em-dash and en-dash sweep is zero, and no debug flags are set. The RealHealth.Expert Work With Me page is to be retired and redirected to this Just Ask Omar page; that is RealHealth.Expert-side work and is not part of this theme. UK English, zero em-dashes. Deploy v3.32.28 in place of v3.32.27; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.29 styles the existing Is this for you section on the Work With Omar offer page (page-work-with-omar.php) to match the RealHealth.Expert version, on operator request, after confirming the section was already present in Just Ask Omar. This is a CSS-only change, with no change to the section copy, the column headings, the bullet wording, the pricing, payment, gate, anti-spam or email code, and no markup was edited. The two-column yes-and-no comparison already gained the gold heading underline in v3.32.28; here the plain list bullets are replaced with the RealHealth.Expert treatment, a green tick on the This is for you if column (.who-col.yes li::before, a checkmark in var(--green-mid)) and a small grey dot on the This is not for you if column (.who-col.no li::before, a 6 pixel var(--text-light) circle), with the list indent rebuilt around the markers (list-style none with per-item left padding). The Just Ask Omar section keeps its own bullet wording, including the faith-and-evidence line that belongs on this audience's site, and its heading stays Is this for you, which differs from the RealHealth.Expert Is this right for you; aligning that heading or the column wording would be a copy change and is left for a separate decision. The columns also keep their subtle green-and-grey top-border accent, which the RealHealth.Expert version does not have. No animation was added, so the prefers-reduced-motion block is unchanged, and the inputs keep font-size 1rem. QA, page-work-with-omar.php balances on PHP tags (eleven openers, eleven closers, unchanged), braces and parentheses, the edit was applied as an asserted exact-count string substitution, functions.php is untouched with its single opener and no closing tag, the em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy v3.32.29 in place of v3.32.28; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.30 adds two FAQs to the Work With Omar offer page (page-work-with-omar.php), bringing across the two items the RealHealth.Expert page carried that Just Ask Omar did not, on operator request. No change to pricing, payment, gate, anti-spam or email code, and no styling changed; both additions are new FAQ items in the existing accordion markup. First, a How is this different from seeing my GP question is added after the Are you a doctor question, using the RealHealth.Expert answer adapted to the first-person Just Ask Omar voice: it complements the GP rather than replacing them, the GP handles diagnosis and prescriptions, and the programme is educational, root-cause and lifestyle-led across nutrition, body, mind and sleep, environment, lifestyle and history, working alongside existing care. Second, a Can I pay in instalments question is added before the Is there a cheaper option question: it confirms a payment plan can be arranged with the amount and schedule agreed on the discovery call, and states, deliberately gently and without bold, that the plan completes before the first session so the programme begins once everything is settled. This matches the operator policy that the full fee, including any instalments, is paid before the programme starts. The terms page is NOT changed in this release: its Section 5 refund policy already covers programme payment, the 14-day Consumer Contracts Regulations cooling-off, cancellation and a payment-plan line, but it does not yet state explicitly that a plan completes before the programme begins; adding that one clarifying sentence is held pending operator approval, since the terms are a legal document. QA, page-work-with-omar.php balances on PHP tags (eleven openers, eleven closers, unchanged), braces (199) and parentheses (266) unchanged since the additions are pure HTML, the edits were applied as asserted exact-count string substitutions, the FAQ count rises from nine to eleven, functions.php is untouched with its single opener and no closing tag, the em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy v3.32.30 in place of v3.32.29; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.31 makes three hero and claim edits to the Work With Omar offer page (page-work-with-omar.php), on operator request, with no change to pricing, payment, gate, anti-spam or email code. First, the hero kicker is changed: the previous opening line was the salam "Peace be with you" (class salam); it is replaced with the RealHealth.Expert audience-qualifier line "For people who have tried everything and still feel off", styled as a pill to match the RealHealth.Expert hero (new .hero-kicker, gold uppercase text in a rounded 1 pixel gold border, sitting on the dark-green hero). Note this removes the salam greeting from the hero; the salam CSS rule, used only here, is repurposed into the pill rule. Second, the hero subheading's closing phrase "The whole picture, in 90 days" is reworded to "Your whole picture, finally joined up", because pairing "the whole picture" with a 90-day deadline reads as an unrealistic completeness claim; the new wording keeps the whole-picture motif and the joined-up-versus-siloed message without promising a finished result in a fixed time. Third, in the keep-it-going item of the value stack, "so the results last well beyond the programme" becomes "so the changes can last well beyond the programme", softening a presumed-outcome word to the changes themselves. A full claim scan of the page was run; the rest was deliberately left alone to avoid over-softening the message: "a complete root-cause investigation" describes the breadth of the process, not a guaranteed cure; "your first win lands in week one" is defined in the same breath as a clear first step and momentum from removing harm, not a health outcome; and the five testimonials are permissioned, carry a "results vary, everyone is different" disclaimer, and were previously curated to exclude outcome and weight-loss claims, so they stand. The page already carries a not-a-promise-to-treat-or-cure caveat, a medical-disclaimer, and a feel-based guarantee. QA, page-work-with-omar.php balances on PHP tags (eleven openers, eleven closers, unchanged), braces (199) and parentheses (267, one pair added by the pill's rgba border), every edit was applied as an asserted exact-count string substitution, the inputs keep font-size 1rem, functions.php is untouched with its single opener and no closing tag, the em-dash and en-dash sweep is zero, and no debug flags are set. The terms-page payment-plan clarification offered in v3.32.30 is still pending operator approval and is not in this release. UK English, zero em-dashes. Deploy v3.32.31 in place of v3.32.30; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.32 verified, reframed and re-sourced the home-page statistics (front-page.php). Each of the thirteen The Data Speaks figures was checked against its primary source. Reduce Alcohol was lowered from plus 3.5 to plus 2 years, because the 3.5 figure was not in Wood et al, Lancet 2018. The Quality Sleep and Stress Management years figures were removed, because their cited papers carry no years figure, and are shown instead as a Protective pill on an empty track with a footnote, on the operator's instruction to keep them but soften the wording. Healthy Diet was kept at plus 7 with an age caveat. Both chart source lines were replaced with per-figure citations and the hedge approximate population-level estimates, individual results vary. The risk-reduction numbers were kept and three citations corrected, dementia from Russ et al BMJ 2012 (the wrong paper, about psychological distress and mortality) to the Lancet Commission 2020, depression to Zhao et al Nature Mental Health 2023, and cancer to Cancer Research UK. The 80 percent line was scoped from all chronic disease to premature heart disease, stroke and type 2 diabetes. Unrivalled was dropped from the variables heading. The inline count-up script was made NaN-safe so figureless rows animate width only, and CSS was added for the protective pill with a mobile rule. A verified-sources file in Markdown and PDF was produced as the audit trail. UK English, zero em-dashes.

v3.32.33 restructures the home page (front-page.php) so the secular content leads and the faith-aligned content is gathered into one section near the foot of the page, on operator request, after porting the secular wording from the live RealHealth.Expert home page. No payment, tool, gate, anti-spam or email code changed, and no JavaScript was edited. The faith-flavoured headings were swapped to the RealHealth.Expert secular wording, the data section heading Health as a Measurable Blessing became Health Is Wealth: The Data Speaks (its now-duplicate The Data Speaks subheading was removed), and Chronic Disease Risk Reduction became Most of Your Risk Is Within Your Control. Copy was de-Islamicised in place where the section itself is secular, the trust bar (the Prophetic Medicine and the Quranic-guidance-and-Sunnah lines reworded to evidence and research wording), the how-it-works step three (integrates Islamic principles with natural health approaches became integrates evidence-based natural health approaches), the My Approach section (the subtitle and the four retained cards stripped of Islamic phrasing, the two Islamic approach bullets moved out), and the About the Expert prose (the Islamic-scholars, wisdom-in-the-Sunnah, Tibb-e-Nabawi and in-keeping-with-Islamic-principles phrases reworded to secular equivalents). The whole-person infographic's gold card was relabelled from Spiritual (prayer, dhikr, fasting) to Emotional and Purpose (mood, resilience, gratitude, meaning, inner peace). A new section, Where Evidence and the Sunnah Meet (id faith-aligned, class section section-alt), was added directly above the Contact section and carries the relocated faith content, the Tibb-e-Nabawi and Natural Solutions cards, the two Islamic approach bullets, the health-and-free-time hadith lifted from under the free tools, the three former Wisdom Quotes, the two former About quotes and the whole-person Prophet quote, reusing the existing approach-card and quote-block classes so no new CSS or animation was needed. The Sunnah e-book section (The Prophetic Lifestyle Guide and its EmailOctopus signup form, honeypot intact) was relocated whole to sit between the new section and Contact, so the page's only email-capture form moved down with the faith content, and an optional secular newsletter block higher on the page was offered as a follow-up and is not in this release. QA, front-page.php balances on PHP tags (fifty-eight openers, fifty-eight closers), braces (1062) and parentheses (1459), every edit was applied as an asserted exact-count string substitution with the two block relocations done by anchor-bounded slicing, there are no duplicate element ids, the single newsletter form is preserved, the inputs keep font-size 1rem, the existing prefers-reduced-motion override is unchanged because the relocated content reuses existing animation classes, functions.php is untouched with its single opener and no closing tag, the em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy v3.32.33 in place of v3.32.32, built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.34 reframes the faith section opening and one FAQ so the page positions Just Ask Omar as being for everyone, with a subtle, optional faith-based service available for those who want it, on operator request (front-page.php). The "Where Evidence and the Sunnah Meet" section intro now leads with that inclusive framing before the optional faith layer, keeping the evidence-and-the-Sunnah bridge phrase and the not-needed-to-use-the-tools caveat. The existing "Do I need to be Muslim to benefit?" FAQ was reframed to the question "Who is Just Ask Omar for?" with an answer that leads with "Everyone" and points to the optional faith layer lower down the page, replacing the previous Islamic-first wording. Copy only: no statistic, source, citation, link, payment, tool, gate, anti-spam or email code changed, and no JavaScript edited. A recheck of the page during this change confirmed the major faith blocks sit at the foot (the faith section and the relocated Sunnah e-book), but also found Islamic framing still above the faith section that a separate pass should address: the hero value-equation eyebrow ("Where evidence and the Sunnah genuinely meet"), two free-tool tile blurbs (the Muslim-parents guide, and the additives tool halal-status line), several cards in the "I Explore a Wide Range of Variables" section (Prophetic protocols, the stomach-is-the-house-of-disease line, the spiritual-wellbeing and sleep-following-the-Sunnah cards), the "Is this for you" section (aligns-with-your-Islamic-values and integrating-Islamic-principles wording), one further FAQ (the Tibb-e-Nabawi line in the approach FAQ), a Prophet quote in the pricing section, the footer tagline "Holistic Health Guided by Islamic Principles", and the decorative girih pattern. QA, front-page.php balances on php tags, braces and parentheses, both edits applied as asserted exact-count string substitutions, the FAQ count is unchanged at seven, the em-dash and en-dash sweep is zero, functions.php untouched with its single opener and no closing tag, no debug flags set. UK English, zero em-dashes. Deploy v3.32.34 in place of v3.32.33; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.35 completes the secular-first homepage pass (front-page.php), bringing the content above the faith section into line with the for-everyone framing added in v3.32.34, on operator request. Reworded in place to secular equivalents, with no statistic, source, citation, link, payment, tool, gate, anti-spam or email code changed and no JavaScript edited: the hero value-equation eyebrow ("Where evidence and the Sunnah genuinely meet" to "Evidence-led, root-cause health that fits you"); one funnel label in the variables infographic (Prayer to Mindset); nine cards in the "I Explore a Wide Range of Variables" section (nutrition, supplements, gut, exercise, mindset, spiritual wellbeing, stress, sleep and social), removing the Quran-and-Sunnah, Prophetic-herbs, stomach-is-the-house-of-disease, Prophets-example, Islamic-psychology, prayer-and-dhikr, Islamic-strategies, sleep-following-the-Sunnah and rooted-in-Islamic-tradition lines; the "Is this for you" subtitle and two of its bullets; the approach FAQ (the Tibb-e-Nabawi line); and the testimonials subtitle. The Prophet "five before five" quote was removed from the pricing section and relocated verbatim into the "Where Evidence and the Sunnah Meet" section so it sits with the other faith content. A stale HADITH BREATH code comment was corrected, the hadith itself having been relocated in v3.32.33. Deliberately left for an operator decision, as genuine attributes rather than framing: the Muslim-parents guide tile, the additives tool halal-status line, the two halal-by-default mentions in the pricing section, the footer tagline "Holistic Health Guided by Islamic Principles" (which sits at the foot), and the decorative girih pattern. After this pass the only faith references above the faith section are those flagged genuine-attribute items plus the intentional pointer to the faith section in the "Who is Just Ask Omar for?" FAQ. QA, front-page.php balances on php tags (58 and 58), braces (1062 and 1062) and parentheses (1457 and 1457), all edits applied as asserted exact-count string substitutions, the FAQ count is unchanged at seven, the em-dash and en-dash sweep is zero, functions.php untouched with its single opener and no closing tag, no debug flags. UK English, zero em-dashes. Deploy v3.32.35 in place of v3.32.34; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.36 softens the home-page footer tagline from "Holistic Health Guided by Islamic Principles" to "Holistic, evidence-led health, with faith-aligned guidance for those who want it" (front-page.php), on operator request, so the footer matches the secular-forward, for-everyone framing used across the rest of the page while keeping a light, optional faith note. Copy only: no statistic, source, citation, link, payment, tool, gate, anti-spam or email code changed, and no JavaScript edited. QA, front-page.php balances on php tags, braces and parentheses, the edit was applied as an asserted exact-count string substitution, the em-dash and en-dash sweep is zero, functions.php untouched with its single opener and no closing tag, no debug flags. UK English, zero em-dashes. Deploy v3.32.36 in place of v3.32.35; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.37 softens one bullet in the "This is for you if" list on the Work With Omar page (page-work-with-omar.php), on operator request, to match the secular-forward, for-everyone framing. "You want your faith and the evidence at the same table" becomes "You want an evidence-led approach, with faith-aligned guidance available if it matters to you", leading with evidence and keeping faith as an optional, subtle note. The Ajmel K. testimonial was reviewed and kept on the operator's instruction (a real, permissioned testimonial). The bio line, the halal FAQ and the not-Muslim FAQ were already on-brand and were left unchanged. Copy only: no pricing, payment, gate, anti-spam or email code changed, and no JavaScript edited. QA, page-work-with-omar.php balances on php tags (eleven openers, eleven closers), braces and parentheses, the edit was applied as an asserted exact-count string substitution, the inputs keep font-size 1rem, the em-dash and en-dash sweep is zero, functions.php untouched with its single opener and no closing tag, no debug flags. UK English, zero em-dashes. Deploy v3.32.37 in place of v3.32.36; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.38 moves the halal-by-default note out of the home-page pricing section and into the FAQ, on operator decision, so the pricing section reads fully secular while the genuine halal attribute is still answered for anyone who wants it (front-page.php). The phrase was removed from both pricing lines (the reassurance line and the programme card), keeping "no upselling" in each, and a new FAQ, "Is the guidance halal?", was added after "Who is Just Ask Omar for?", answering "Yes. Food and supplement recommendations are halal by default, and I flag anything that needs flagging." The FAQ is deliberately worded without a Sunnah reference to stay subtle on the secular-forward page; this mirrors the Work With Omar page, which already answers halal in its FAQ. This completes the secular-first homepage pass: the Muslim-parents guide tile and the additives halal-status line were kept as genuine features on the operator instruction. Copy only: no statistic, source, citation, link, payment, tool, gate, anti-spam or email code changed, and no JavaScript edited. QA, front-page.php balances on php tags (58 and 58), braces (1062 and 1062) and parentheses (1457 and 1457), the FAQ count rises from seven to eight, all edits applied as asserted exact-count string substitutions, the em-dash and en-dash sweep is zero, functions.php untouched with its single opener and no closing tag, no debug flags. UK English, zero em-dashes. Deploy v3.32.38 in place of v3.32.37; built on the v3.32.2 base, graft onto the newer Hajj base if that is current.

v3.32.39 reconciles the programme price across the theme, adds the approved Terms payment-plan clause, and removes one orphaned strike-through rule, on operator confirmation. Pricing: the application notification email in functions.php still recorded the ready budget acknowledgement as Ready to invest £1,997 (incl. payment plan); this is corrected to £2,497 to match the canonical figure already shown on the Work With Omar page, where the price card, the investment radio and the around-twenty-eight-pounds-a-day comparison were already £2,497 and are unchanged. A theme-wide numeric sweep confirmed this admin email was the only stale price figure: the remaining £1,997 strings are in this changelog block only, and the 1997 in the Personal Fatigue Report is the Murphy and Campbell 1997 sleep-onset citation, deliberately left untouched. Terms: the operator-approved clause, Where a payment plan is used, it is completed in full before the programme begins; the first session is scheduled once the final instalment has cleared, was added to the 90-Day Personal Programme refund subsection of page-terms.php, placed before the existing instalments-remain-payable paragraph so the two payment-plan facts read in temporal order; no other terms wording changed. Cleanup: the orphaned .price-card .was strike-through rule in page-work-with-omar.php, defined but unused since the struck anchor price was removed, was deleted, so no strike-through styling remains on the programme price; the .tools-incl-was strike on the included-tools bonus list (£12, £19, £29, yours free) was kept on purpose, as it conveys the value given free with the programme rather than acting as a price anchor. QA, all three edited files balance: functions.php keeps its single opener and no closing tag with braces and parentheses unchanged; page-terms.php balances on php tags (eighteen and eighteen), braces and parentheses, with one paragraph added; page-work-with-omar.php balances on php tags (eleven and eleven, unchanged), with braces dropping one pair from 199 to 198 and parentheses one pair from 267 to 266, both accounted for by the single removed rule and its one var() call. Every edit was applied as an asserted exact-count string substitution, no JavaScript was edited, the em-dash and en-dash sweep is zero across all four files, and no debug flags are set. UK English, zero em-dashes. Deploy v3.32.39 in place of v3.32.38; built on the v3.32.2 base, graft functions.php, page-terms.php, page-work-with-omar.php and style.css onto the newer Hajj base if that is current.

v3.32.40 tidies the home-page inline CSS and merges two who-and-why sections, on operator instruction (strip all, merge approach plus about), with no statistic, source, citation, link, payment, tool, gate, anti-spam or email code changed and no JavaScript behaviour changed. Orphan sweep: fifty-eight CSS classes defined in the two inline style blocks of front-page.php but used in no markup and referenced by no JavaScript were removed, clearing dead rules left by earlier redesigns: the assessment-band promo, an old infographic set (ig-grid, ig-stat, ig-donut, ig-scale and the gap bars), old bar-chart bits, old pricing fragments (price-amount, the chosen, starter and existing price badges, price-note), an old programmes block (programme-card, programmes-grid, programmes-faq-teaser, vs-item), a capacity banner, and a handful of strays (prog-icon, step-pill, testimonial-grid, tt-color, yt-green, yt-red). The removal was computed by a CSS-aware, selector-member-level pass that deletes a rule only when every class in its selector is orphaned and rewrites a grouped selector when only some members are dead, so one shared rule was rewritten from .bar-label,.qol-label,.qol-label-spacer to .qol-label,.qol-label-spacer, keeping the two live quality-of-life labels while dropping the dead bar-label, and dead descendant rules scoped under removed ancestors (the .assess-band__cta button rules, the .ig-grid stat-pop animations and the .ig-vs vs-item animations) were removed without touching the live .btn-primary, .ig-card or .ig-vs styling. That removed one hundred and twenty-seven rules plus one selector rewrite, about twenty and a half kilobytes, with every live class retained and confirmed. Girih: the decorative Islamic geometric overlay behind quote blocks (.quote-block::before, a seven-per-cent-opacity tessellation) was removed on operator decision, so quote blocks now render plain with their green left border and light gradient kept; the base .quote-block styling is unchanged, and the second girih overlay went out with the dead assessment-band block it was attached to. Merge: the Our Approach section, formerly its own dark-green section, was merged into About the Expert as a single light section titled Who I am, and how I work, with the personal-journey content first and the approach cards and list below; the four approach cards were recoloured for the light background (a solid white card with a soft border and shadow, green-deep card headings, light body text, gold tick bullets kept), and the now-invisible white inline colour was removed from the approach subtitle. The #approach navigation anchor is preserved by moving its id onto the approach sub-heading inside the merged section, so the My Approach nav link still scrolls to the approach block; the unreferenced #about-expert id is kept on the section. Left for a separate decision: fifteen @keyframes, about one and nine-tenths kilobytes, that the deleted animation rules had been the only users of are now unused but were kept, since keyframes are not classes and were outside the authorised scope; and the pre-existing dangling #programmes nav link, which points at a section removed in an earlier release, was left untouched. QA, front-page.php balances on php tags (fifty-eight and fifty-eight), braces (nine hundred and five and nine hundred and five) and parentheses (one thousand three hundred and four and one thousand three hundred and four), the section count drops from twenty-two to twenty-one and the div count from three hundred and thirty-six to three hundred and thirty-five from the single merge, there are no duplicate element ids, and the single newsletter form is preserved. The orphan removal was applied by CSS-aware member-level slicing with safety assertions that refuse to delete any live selector, the merge by anchor-bounded slicing, and the approach recolour and subtitle fix by asserted exact-count string substitutions. JavaScript lints clean under node --check with no console statements, the inputs keep font-size 1rem, functions.php is untouched with its single opener and no closing tag, the em-dash and en-dash sweep is zero, and no debug flags are set. UK English, zero em-dashes. Deploy v3.32.40 in place of v3.32.39; built on the v3.32.2 base, graft front-page.php and style.css onto the newer Hajj base if that is current.
v3.32.41 is a full pre-deploy hygiene sweep of the theme plus the deferred home-page CSS cleanup, on operator instruction (full pre-deploy sweep and CSS cleanup), with no statistic, source, citation, link, payment, tool, gate, anti-spam or email code changed and no JavaScript behaviour changed; the front-page.php inline script is byte-identical to v3.32.40. Sweep, verified from the files not from memory: no live muslimhealthexpert.com link remains anywhere in the theme, the only occurrences of that string being descriptive text in this changelog block; all debug flags are false (MHE_DEBUG in functions.php, and the HHF1 var MHE_DEBUG in partials/90-day-foundation-body.php); zero console statements in the theme's own JavaScript, with the vendored jspdf minified files excluded as third-party; the home-page #tools section lists fourteen free tool tiles, each resolving to a real page template, and the mitochondria-mini-lab and atp-lab tiles were confirmed as two distinct tools (F5 the interactive mini-lab, F25 the self-contained ATP explainer), so the count is correct and there is no double-listing; the silent-success anti-spam invariant holds across all three form handlers (mhe_handle_contact, mhe_handle_newsletter and mhe_handle_preconsultation), every bot-reject path (nonce, honeypot, timestamp, Akismet, non-Latin majority, terms and disposable email) returning the identical success a genuine user sees, with wp_send_json_error reserved for plain field validation and real server failures; the timestamp gates are internally consistent, contact and newsletter running in seconds against a client that sends Math.floor of the load time over one thousand, and preconsultation running in milliseconds against a client that sends Date.now, so neither is the seconds-versus-milliseconds failure mode; the em-dash and en-dash sweep is zero across all ninety-two files; every PHP file balances on braces and parentheses with no stray closing tag; node --check passes on all eleven of the theme's own JavaScript files; and the mobile checks pass, with no input, select or textarea setting font-size below 1rem (so iOS does not auto-zoom) and a viewport meta present on every self-contained page. The sweep surfaced two items, both fixed in front-page.php and nothing else. First, the CSS cleanup deferred in v3.32.40: the fifteen now-unused keyframes (assessCtaBreath, chaosSpin, dotPulseGlow, dropBounce, hexSpin, jaggedGlow, jaggedPulse, pulseGlow, resultGrow, resultShake, slideInLeft, slideInRight, smoothGrow, vsItemPop and vsItemSlam) were removed from the inline CSS, about 1.9 kilobytes, by brace-aware block removal. Each was re-verified dead by counting every occurrence of its name in the file, including inline style attributes, -webkit-animation and JavaScript, and removed only where the name appeared nowhere but its own keyframes definition. A broader first scan had flagged thirteen more keyframes as unused (areaFade, arrowPulse, checkmarkDraw, dot2Pop, dot3Pop, dot4Pop, drainDown, equalsFlash, funnelDrop, jaggedDot, jaggedDraw, smoothDraw and steadyRise), but those are live: they are applied through inline style animation attributes on the home-page chaos-and-smooth, funnel and drain SVG infographics, which a style-block scan does not see, so they were kept and all thirteen remain defined and referenced after the edit. Second, the pre-existing dangling #programmes nav link, which pointed at a section removed in an earlier release, was removed from the nav rather than repointed; the Work With Omar nav item already routes to the consultation and the live #pricing section is still reachable from the in-page See how we work together link. QA, front-page.php is the only file changed in v3.32.41 (the style.css change is the version line and this entry): it balances on php tags (58 and 58), with braces dropping from 905 to 851 and parentheses from 1304 to 1257, both drops fully accounted for by the fifteen removed keyframe blocks, and the nav edit removing one list item; there are no duplicate element ids; the single newsletter form is preserved; the inline script is byte-identical so node --check still passes with no console statements; the inputs keep font-size 1rem; functions.php is untouched with its single opener and no closing tag; the em-dash and en-dash sweep is zero; and no debug flags are set. Left for a later tool-page pass: page-atp-lab.php carries one unused keyframes (pulse-emission), confirmed dead by the same occurrence check but untouched here, since it sits inside a self-contained tool outside this home-page cleanup. UK English, zero em-dashes. Deploy v3.32.41 in place of v3.32.40; built on the v3.32.2 base, graft front-page.php and style.css onto the newer Hajj base if that is current.
v3.32.42 secularises the two form success messages, on operator instruction (make the success toasts warm and secular friendly), with no statistic, source, citation, link, payment, tool, gate or anti-spam logic changed and no JavaScript behaviour changed; only the displayed text of the success messages was edited. The contact form success message in functions.php, which had ended on a faith-aligned sign-off, now reads a warm secular line, and the pre-consultation questionnaire success message, which had carried a faith-aligned sign-off, now reads a warm secular line as well. The pre-consultation message appears in seven places that must stay identical for the silent-success anti-spam invariant: the six server paths in functions.php (the genuine success plus the five bot-reject paths of mhe_handle_preconsultation, namely honeypot, timestamp, Akismet, non-Latin majority and disposable email) and the one client-side fallback in page-preconsultation.php; all seven were changed to the same new text, so no bot can enumerate which layer rejected it. Both new messages are phrased without an apostrophe, matching the sibling success strings, so they sit safely inside the single-quoted PHP and JavaScript literals; the leading tick is kept to match the other toasts. The internal pre-consultation notification email, a plain-text admin alert with the questionnaire as its body, carries no sign-off and was not touched; the stale handler comment that had described the old sign-off was updated. QA, functions.php is unchanged in structure with its single opener and no closing tag, balancing on braces (448 and 448) and parentheses (2316 and 2316); page-preconsultation.php balances on php tags (13 and 13), braces (150 and 150) and parentheses (327 and 327), and its inline JavaScript lints clean under node --check; the em-dash and en-dash sweep is zero across both files; no debug flags are set. Files changed on the 3.32.x line now also include functions.php (last touched in v3.32.39) and page-preconsultation.php (new to the changed set). UK English, zero em-dashes. Deploy v3.32.42 in place of v3.32.41; built on the v3.32.2 base, graft front-page.php, functions.php, page-terms.php, page-work-with-omar.php, page-preconsultation.php and style.css onto the newer Hajj base if that is current.
v3.32.43 removes one dead animation block from page-atp-lab.php, on operator instruction (apply the deferred dead-keyframes removal before testing), with no statistic, source, citation, link, payment, tool, gate, anti-spam or email code changed and no JavaScript behaviour changed. The unused @keyframes pulse-emission, flagged dead in v3.32.41 and left for a tool-page pass, was removed from the page-atp-lab.php inline CSS; it was re-confirmed dead by counting every occurrence of its name in the file, which found the keyframes definition once and zero references in any animation or -webkit-animation property or inline style attribute, so nothing used it. The shared SVG animation keyframes comment and the four live keyframes beside it, spin-cw, cycle-wheel, drift-y and etc-pulse, are kept. QA, page-atp-lab.php balances on php tags (9 and 9), braces (320 and 320) and parentheses (696 and 696), the @keyframes count in the file drops from five to four with every remaining keyframes confirmed referenced, its two inline JavaScript blocks lint clean under node --check, the em-dash and en-dash sweep is zero, and no debug flags are set. Files changed in v3.32.43 are page-atp-lab.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.43 in place of v3.32.42; built on the v3.32.2 base, graft page-atp-lab.php and style.css onto the newer Hajj base if that is current, in addition to the v3.32.42 graft set.
v3.32.44 reworks six lines of copy on page-work-with-omar.php, on operator instruction (stop implying the Sunnah only counts where it meets the evidence, and make the faith-aligned framing offered to anyone who wants it), with no statistic, source, citation, link, payment, tool, gate, anti-spam or email code changed and no JavaScript behaviour changed; only displayed text was edited. The two FAQ answers, the value-stack plan line and the bio line that had read where it genuinely meets the evidence or where it genuinely fits now read where you want it or for those who want it, so the inclusion of faith-aligned guidance is tied to the reader rather than to the evidence; the halal answer also now states plainly that the Sunnah is sometimes met by the evidence and sometimes followed as a matter of faith, with the difference always made clear. The faith-and-evidence narrative line lost the word war and now reads the two were never at odds, and the who-this-is-for line changed from faith-aligned guidance available if it matters to you to faith-aligned guidance there for you if you want it. The testimonial from Ajmel K. was left exactly as written, on operator instruction. QA, page-work-with-omar.php balances on php tags (11 and 11), braces (198 and 198) and parentheses (266 and 266), its single inline JavaScript block lints clean under node --check, the em-dash and en-dash sweep is zero, and no debug flags are set. Files changed in v3.32.44 are page-work-with-omar.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.44 in place of v3.32.43; built on the v3.32.2 base, graft page-work-with-omar.php and style.css onto the newer Hajj base if that is current, alongside the page-atp-lab.php change from v3.32.43 and the earlier v3.32.42 graft set.
v3.32.45 adds three more client testimonials to the two testimonials sections, on operator instruction (add some of the RealHealth.Expert testimonials to make the sections look fuller), with no statistic, source, citation, payment, tool, gate, anti-spam or email code changed and no JavaScript behaviour changed; only displayed content was added. The three are real RealHealth.Expert client quotes supplied by the operator (Adam H., Ali K. and Zayn A.), each transcribed as given; none were invented. They were added to the home-page testimonials grid in front-page.php, before the closing assessment call to action, in the existing testimonial-card and cite format with reveal-flip stagger classes, and to the Work With Omar testimonials block in page-work-with-omar.php in the existing testi-card and who-said format; each section goes from five cards to eight. To match the existing cards the credit is the name only, so the RealHealth.Expert Client subtitle from the source cards was not carried over, and the ellipses use the same U+2026 character the existing quotes use. No testimonial already on either page was changed, reworded or reordered. QA, front-page.php balances on php tags (58 and 58), braces (851 and 851) and parentheses (1257 and 1257); page-work-with-omar.php balances on php tags (11 and 11), braces (198 and 198) and parentheses (266 and 266); the single inline JavaScript block in each lints clean under node --check; the em-dash and en-dash sweep is zero across both files; and no debug flags are set. Files changed in v3.32.45 are front-page.php, page-work-with-omar.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.45 in place of v3.32.44; built on the v3.32.2 base, graft front-page.php, page-work-with-omar.php and style.css onto the newer Hajj base if that is current, alongside the page-atp-lab.php change from v3.32.43.
v3.32.46 adds two links beneath the hero value-equation tagline on front-page.php, on operator instruction (under Personalised advice = lasting results, an all-free-tools link, then a line inviting people who want to work with Omar to find out what he can do, linking to the consultation page), with no statistic, source, citation, payment, tool, gate, anti-spam or email code changed and no JavaScript behaviour changed. A new hero-valueeq__links block sits just below the Because everyone is different line: an All free tools link to the on-page #tools section, which is the same target the Tools nav item uses and which carries the full free-tools listing, and a short line, Know what you want and want to work with Omar, with the words Find out what he can do for you linking to home_url('/work-with-omar/'), the same consultation URL used elsewhere. Six scoped CSS rules were added next to the existing hero-valueeq rules to style the links light on the dark hero, white text with a gold underline and a gold hover and focus state, at 1rem so they stay tappable; no new animation was introduced so no reduced-motion rule was needed, and the centred column needs no extra breakpoint below 600px. The value-equation tagline and the Because everyone is different line were not changed. QA, front-page.php balances on php tags (59 and 59), braces (857 and 857) and parentheses (1267 and 1267), its single inline JavaScript block lints clean under node --check, the em-dash and en-dash sweep is zero, and no debug flags are set. Files changed in v3.32.46 are front-page.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.46 in place of v3.32.45; built on the v3.32.2 base, graft front-page.php and style.css onto the newer Hajj base if that is current, alongside the page-work-with-omar.php and page-atp-lab.php changes from v3.32.45 and v3.32.43.
v3.32.47 fixes the hero on mobile, where the curved cream divider was covering the lower of the two links added in v3.32.46, on operator report (the phone version has the text covered). The cause was the hero bottom padding being smaller than the decorative curve: the .hero::after curve is an 80px-tall cream ellipse pinned to the bottom of the hero at z-index 2, and the hero bottom padding was 60px on screens up to 992px and 80px on desktop, so on mobile the curve reached about 20px up into the content and the taller hero from the new links pushed the Find out what he can do for you line into that band. The fix lifts the hero bottom padding clear of the 80px curve: 100px on desktop in the base rule, and 100px on the single mobile rule at max-width 992px, which the 640px and 420px breakpoints inherit. No markup, copy, link, animation, statistic, source, payment, tool, gate or email code changed; only the two hero padding values changed, and the curve itself, its height and its clip-path are unchanged. QA, front-page.php balances on php tags (59 and 59), braces (857 and 857) and parentheses (1267 and 1267), its single inline JavaScript block lints clean under node --check, the em-dash and en-dash sweep is zero, and no debug flags are set. Files changed in v3.32.47 are front-page.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.47 in place of v3.32.46; built on the v3.32.2 base, graft front-page.php and style.css onto the newer Hajj base if that is current, alongside the page-work-with-omar.php and page-atp-lab.php changes from v3.32.45 and v3.32.43.
v3.32.48 makes three front-page changes to raise the Work With Omar prominence and tighten the value ladder, on operator instruction (do your recommendations: promote the header Work With Omar link, do not move the paid tools under the free tools, and strengthen the existing pricing card rather than add another Work-With box), with no statistic, source, citation, payment, tool, gate, anti-spam or email code changed and no JavaScript behaviour changed. First, the header nav is reordered so the two call-to-action pills sit together as the right-hand endcap: Work With Omar, which had been a plain text link in the middle of the nav, becomes the green pill at the far right (the terminal position) by gaining the existing .cta-link class, while Contact loses that class to become a plain link and moves left, and the gold .nav-assessment-pill Free Assessment is unchanged and now sits second to last; E-book and FAQs move up accordingly. No new CSS was added: the green pill treatment simply moves from Contact onto Work With Omar by reusing the existing .cta-link and .nav-assessment-pill rules, and the mobile drawer rules apply unchanged. Second, the paid tools section was deliberately left where it is, below the proof, rather than lifted under the free tools, and instead a quiet centred bridge line was added at the foot of the free-tools band beneath the existing work-one-to-one consult box, reading Want a plan to keep, not just the picture, with the words See the three take-home reports linking down to the paid section; a new id reports was added to that paid tools section so the in-page link resolves. Third, a short gold uppercase eyebrow line, Beyond the reports, fully one-to-one, was added above the pricing section heading to strengthen the existing 90-Day Personal Programme card as the step beyond the paid reports, so no fourth Work-With box was introduced. The bridge line and the eyebrow use inline styles with the existing colour tokens (text-light, green-deep and gold); no new CSS rule and no new animation were added, so no reduced-motion rule was needed, and the eyebrow carries the existing reveal class to match the section scroll-reveal. QA, front-page.php balances on php tags (59 and 59), braces (857 and 857) and parentheses (1271 and 1271), the parenthesis rise of four being the four colour-token var calls in the two new inline-styled elements; its single inline JavaScript block lints clean under node --check; there are no duplicate element ids, the new reports id appearing once; the em-dash and en-dash sweep is zero; the inputs keep font-size 1rem; functions.php is untouched with its single opener and no closing tag; and no debug flags are set. Files changed in v3.32.48 are front-page.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.48 in place of v3.32.47; built on the v3.32.2 base, graft front-page.php and style.css onto the newer Hajj base if that is current, alongside the page-work-with-omar.php and page-atp-lab.php changes from v3.32.45 and v3.32.43.
v3.32.49 makes the tool email gates ask for an email address at each new tool, and repoints the e-book signup form at the e-book delivery automation, on operator instruction (ask for the email address at each new tool, and retire the faith-aligned e-book for a secular one), with no statistic, source, citation, payment, tool result, gate logic or anti-spam logic changed, and no tool behaviour changed beyond which subscribe cookie each tool reads and writes. Ask at each new tool: the brand-wide subscribe cookie mhe_subscribed, which one tool set on a successful email signup and other tools then read to skip their own email gate, is replaced by a per-tool cookie, so completing one tool no longer unlocks the next. The surfaces that actually read the cookie to decide whether to show their gate now read their own name: the symptom checker uses mhe_sub_symptom (partials/symptom-checker-body.php), the additives tool ADD1 uses mhe_sub_add1 through MHE_ADD1_CONFIG.cookieName (page-additives-worth-knowing-about.php, with the standalone-preview fallback in partials/add1-body.php matched), the e-number decoder ADD2 uses mhe_sub_enumber through MHE_ADD2_CONFIG.cookieName (page-e-number-decoder.php), and the gut-brain cable G9 optional newsletter card reads mhe_sub_g9 through subscribedCookieName (js/g9/g9-config.js, with the result-page default in js/g9/shared/result-page.js matched). The tools that only wrote the cookie on signup and never read it to skip were repointed for tidiness so they no longer set the shared cookie, namely the ten-minute parents guide to mhe_sub_parents (page-10-minute-parents-guide.php and the fallback in partials/parents-guide-body.php), the assessment to mhe_sub_assessment (page-assessment.php), the ATP lab to mhe_sub_atp (page-atp-lab.php) and the energy battery to mhe_sub_f4 (page-energy-battery.php, the code line only, the historical migration comment left untouched). The paid Toxic Load Audit, unlocked only by payment and never by a subscribe cookie, had its now-decorative subscribe-cookie write repointed to mhe_sub_toxic (partials/toxic-load-audit-body.php) with its payment gate mhe_tla_paid unchanged. The home-page signup forms in front-page.php were left writing mhe_subscribed unchanged; with no tool now reading that name it is harmless, and the home-page e-book section is part of the separate e-book change noted below. E-book form tag: the e-book signup handler mhe_handle_newsletter in functions.php now tags the subscriber via-ebook only, where it had tagged subscribed and via-newsletter, so the subscriber enters the e-book delivery automation and is not added to the welcome series at signup; that automation adds the subscribed tag after the delivery email, which is what then starts the shared welcome series. site-mhe is still added automatically by the shared mhe_subscribe_to_emailoctopus helper. No other handler tag was changed. Pending and deliberately not in this build, by dependency: the via-ebook tag has effect only once the e-book and welcome automations are built in EmailOctopus, so this theme and those automations deploy together; and the home-page e-book section copy and the e-book delivery email still describe the retired faith-aligned guide and must be rewritten for the new secular guide, with its title, cover, contents and download URL, before go-live, held as a separate change until that guide exists so that nothing is invented. The per-tool gate wording that sells the newsletter and the double opt-in is also a separate copy pass. QA, verified from the files: the only remaining occurrences of the token mhe_subscribed are the home-page write in front-page.php and the historical migration comment in page-energy-battery.php, both intended; every changed PHP file balances on php tags, braces and parentheses with no stray closing tag, the string-literal cookie edits and the one-element tag array changing none of those balances from v3.32.48; functions.php keeps its single opener and no closing tag; node --check passes on the changed JavaScript files; the em-dash and en-dash sweep is zero across all changed files; and no debug flags are set. Files changed in v3.32.49 are partials/symptom-checker-body.php, partials/add1-body.php, partials/toxic-load-audit-body.php, partials/parents-guide-body.php, page-additives-worth-knowing-about.php, page-e-number-decoder.php, page-10-minute-parents-guide.php, page-assessment.php, page-atp-lab.php, page-energy-battery.php, js/g9/g9-config.js, js/g9/shared/result-page.js, functions.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.49 in place of v3.32.48; built on the v3.32.2 base, graft these files and style.css onto the newer Hajj base if that is current, alongside the earlier graft set.
v3.32.50 compacts the bottom faith section ("Where Evidence and the Sunnah Meet") on front-page.php so the whole area, and the hadith in particular, take far less vertical space, on operator instruction (optimise the Islamic part at the bottom of the homepage, make it more compact, the hadith in a smaller area, and the whole area more compact and concise without losing substance), with no statistic, source, citation, payment, tool, gate, anti-spam or email code changed and no JavaScript behaviour changed. No scriptural wording, hadith text or attribution was altered, added or removed: all eight quotations are preserved verbatim and every cite is unchanged; the change is layout density plus one prose trim of the section intro. The eight quote blocks, previously eight full-width stacked cards, are wrapped in a new faith-quotes container and laid out as a two-column grid with the feature quote spanning the full width across the top, with reduced quote padding, margin and font size; on screens at or below 640px the grid collapses to a single column. The section intro subtitle was tightened, from about 78 words to about 52, keeping the for-everyone reassurance, the evidence-alone point, the signature where evidence and the Sunnah genuinely meet phrasing, the Prophet Muhammad practices-and-research line and the you-never-need-it line, and dropping only two redundant clauses. The two approach cards now sit in an even two-column grid (one column on mobile) with slightly tighter padding and a smaller icon, the approach list and the section vertical padding are reduced, and on mobile the section padding is tighter still. Every rule is namespaced to the section id #faith-aligned so the shared classes (quote-block, approach-card, approach-grid, approach-list, section-subtitle) used by other sections on the page are untouched; the new rules are static layout only and reuse the existing reveal classes, so no new animation and no new reduced-motion rule were introduced. QA, verified from the files, front-page.php balances on php tags (59 and 59), braces (874 and 874) and parentheses (1276 and 1276); no JavaScript was changed so the inline scripts are unaffected; there are no duplicate element ids; the em-dash and en-dash sweep is zero across both changed files; the inputs keep font-size 1rem; functions.php is untouched with its single opener and no closing tag; and no debug flags are set. Files changed in v3.32.50 are front-page.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.50 in place of v3.32.49; built on the v3.32.2 base, graft front-page.php and style.css onto the newer Hajj base if that is current, alongside the earlier graft set. Note, the three-secular-guide e-book change remains a separate later version (v3.32.51), still pending the operator supplying the guides; v3.32.50 does not touch the e-book section or its still-faith-guide copy.
v3.32.51 replaces the retired faith-aligned e-book section on front-page.php with a secular three-guide lead magnet, placed high on the page as the top-of-funnel offer immediately above the how-it-works path band, on operator instruction (redo the JAO site, replace the old free e-book with the three new guides, use the supplied thumbnails and website blurbs in Alex Hormozi $100M Offers style, near the top as top of funnel), with no statistic, payment, tool, gate logic or anti-spam logic changed and no JavaScript behaviour changed. The old single-cover faith guide block (the Prophetic Lifestyle Guide, its ebook-cover.jpeg image and its blue button) was removed from the page, and a new section with id free-ebook now presents three free guides supplied by the operator, The Everyday Exposure Checklist, The 30-Second Label Rule and The 30-Second Label Rule: Parents' Edition, each in its own card with the operator's cover image and a named-asset stack of what is inside, written in the Hormozi offer-stack style so every component is named in bold (for example The Sugar Alias Decoder, The Fridge Sheet, The When-To-Get-Real-Help Page), drawn faithfully from the supplied blurbs with no claim invented. The section eyebrow marks it free, pharmacist-designed and no card required, the headline is Stop buying health, start removing what is breaking it, and a single signup form delivers all three guides on one email (Option A), keeping the existing form contract unchanged: the same id newsletter-form and id newsletter-status, the same first_name and email fields, the same mhe_hp_field honeypot, and the same handler; a risk-reversal line (no spam, unsubscribe anytime, the guides are yours either way) and a short why-free line close the form. The blue e-book CSS was replaced with a forest-and-gold three-column grid scoped to the new classes (ebook-section, ebook-grid, ebook-card and the per-card children, the form-area, microcopy, unsub and why), collapsing to a single 440px column at or below 860px and disabling the card hover under prefers-reduced-motion, so no shared class is affected. The header nav item that read E-book now reads Free guides and still targets the on-page free-ebook anchor. The three cover images were added to assets/images as ebook-exposure-checklist.png, ebook-label-rule.png and ebook-label-rule-parents.png and are referenced through esc_url of img_path. This build also folds in the two inert EmailOctopus list-id corrections staged earlier in partials/90-day-foundation-body.php, where the retired list id 6400eb84 in a documentation comment and in the email-preview footer display string was corrected to the live consolidated list id 21274c4e-2f9b-11f1-9baf-437228b08f42; both occurrences are non-executing display text on the not-yet-live HHF1 surface and change no behaviour. The e-book signup handler mhe_handle_newsletter in functions.php is unchanged from v3.32.49 and still tags via-ebook only, with site-mhe still added by the shared helper. Pending and deliberately not in this build, by dependency: the three guides' download URLs and the EmailOctopus delivery automation that carries them are not yet built, so a new signup cannot yet receive the files; v3.32.51 must deploy together with that automation, or deployment of the section must be held until the delivery email carries the three real download URLs, so that nothing is promised that cannot be delivered and no retired faith-guide delivery email is ever sent. The double opt-in remains pending as before. QA, verified from the files, front-page.php balances on php tags (61 and 61), braces (881 and 881) and parentheses (1306 and 1306); the new section's own strong tags balance (17 and 17); the form contract is intact with a single newsletter-form and a single newsletter-status; there are no old faith-guide remnants, with zero Prophetic Lifestyle, ebook-cover.jpeg or Ancient Sunnah matches; partials/90-day-foundation-body.php carries zero 6400eb84 and two 21274c4e occurrences; the em-dash and en-dash sweep is zero across the changed files; there are no console statements and no debug flags set; functions.php is untouched with its single opener and no closing tag. Files changed in v3.32.51 are front-page.php, partials/90-day-foundation-body.php, the three new assets/images cover PNGs and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.51 in place of v3.32.50; built on the v3.32.2 base, graft front-page.php, partials/90-day-foundation-body.php, the three cover images and style.css onto the newer Hajj base if that is current, alongside the earlier graft set. Deploy only once the three guide download URLs and the EmailOctopus delivery automation are live, or the e-book section will collect signups it cannot yet fulfil.
v3.32.52 expands the Work With Omar 90-Day Programme offer on page-work-with-omar.php, reworded for the health programme and kept free of outcome promises. The weekly one-to-one consultations row now states twelve sessions across the 90 days and names the weekly accountability check-in; a new deliverable row, Your custom 90-day roadmap, is added before the session-summary row; and the included-tools block is renamed Your private resource vault and gains the three free guides (the Everyday Exposure Checklist, and the 30-Second Label Rule with its Parents' Edition) plus the take-to-your-GP summary as name-only rows, with the value note updated to match. The continuous phone and WhatsApp support row is deliberately left at messages answered within one working day, not 24/7, on safety grounds. Price unchanged at 2,497 GBP. Copy only; no payment, tool logic or anti-spam code changed.
v3.32.53 groups the Work With Omar offer into a single value band on page-work-with-omar.php, on operator instruction (the deliverables list and the free resource vault read as two sections apart; group like with like). The page previously split the offer across a dark-green offer section (the 90-Day deliverables stack, then a mid-stack Apply button) and a separate light-cream bonus section (the three bonus cards, with the resource vault tacked on at the end), so the strongest free-value anchor sat two visual bands away from the deliverables and the reader met a call to action before seeing the free 60 GBP of tools. The two sections are now merged into one dark offer band in value-stack order: the deliverables stack, then the private resource vault lifted up to sit directly beneath it, then the three bonus cards under a new sub-heading, then the momentum levers, then one Apply call to action at the end where perceived value peaks. The mid-stack call to action and the redundant Included with your place eyebrow were removed; one closing call to action remains. No copy was reworded: every deliverable, bonus card, vault row and lever paragraph is carried verbatim, only reordered. The bonus section wrapper was deleted; the now-orphaned .bonus background rule is left in place, harmless. New CSS is scoped under .offer so the vault is readable on the dark band (a white-tint dashed box, cream heading, gold-light tool names, gold-soft struck prices, gold-light note) and a new .offer .bonus-head sub-heading is added; the bonus cards are white-background cards that already read on dark green and were not restyled. The reveal animation and its prefers-reduced-motion override are reused, so no new animation and no new reduced-motion rule were introduced, and the page JavaScript, which observes .reveal generically and references none of these sections by name, is unchanged. QA, verified from the file, page-work-with-omar.php balances on php tags (11 and 11), braces (205 and 205), parentheses (275 and 275) and brackets (2 and 2); node --check passes on the extracted inline script; the em-dash and en-dash sweep is zero; there is exactly one offer section, one resource vault, one bonus sub-heading and no remaining bonus section; the four calls to action across the page (offer, guarantee, price, close) are intact with one in the offer band; inputs keep font-size 1rem; functions.php is untouched with its single opener and no closing tag; no console statements and no debug flags set. Files changed in v3.32.53 are page-work-with-omar.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.53 in place of v3.32.52; built on the v3.32.2 base, graft page-work-with-omar.php and style.css onto the newer Hajj base if that is current, alongside the earlier graft set. This is a copy-and-layout regrouping only; it carries the v3.32.51 homepage three-guide e-book section, so the same e-book deploy gate applies (hold the upload until the shared via-ebook delivery automation carries the three guide URLs in the faith-aligned voice with double opt-in on); the Work With Omar change itself is safe to ship anytime.
v3.32.54 consolidates the duplicated Omar authority on page-work-with-omar.php, on operator instruction, grouping the two separate Omar blocks into one. The standalone About Omar section (heading plus three first-person paragraphs) sat low on the page, separated from the proof section ("A pharmacist who has been where you are") by the guarantee and price sections, and it restated material already on the page: the UK pharmacist (MPharm) credential and the became-my-own-patient story are in the proof credibility grid, the ten-minute-appointment framing is in the why section, and the five-clients scarcity is in the price urgency line. The About section is removed and its one genuinely unique substance, the years-in-conventional-practice setup and the direct-and-honest tone, is folded into a single bio lead-in paragraph placed inside the proof section, under the heading and above the credibility grid, in Omar's first-person voice, with no new claim introduced and the faith-aligned-for-those-who-want-it phrasing preserved from the original About copy. The lead-in deliberately does not restate the MPharm credential or the five-clients count, since both live elsewhere, so the page no longer repeats Omar's bio twice. A scoped .proof .about-lead rule (centred, max 660px, muted body colour) styles the lead-in to match the section's existing intro paragraphs; the now-dead .about and .about p rules are removed. No anchor, navigation item or script referenced the About section, so its removal needs no further wiring; the page reveal animation and its prefers-reduced-motion override are reused, so no new animation and no new reduced-motion rule were introduced, and the testimonials, their attributions and the results-vary note are unchanged. QA, verified from the file, page-work-with-omar.php balances on php tags (11 and 11), braces (204 and 204), parentheses (274 and 274) and brackets (2 and 2); node --check passes on the unchanged inline script; the em-dash and en-dash sweep is zero; there is one proof section, one about-lead, and no About section, with the section order now proof, guarantee, price, faq; inputs keep font-size 1rem; functions.php is untouched with its single opener and no closing tag; no console statements and no debug flags set. Files changed in v3.32.54 are page-work-with-omar.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.54 in place of v3.32.53; built on the v3.32.2 base, graft page-work-with-omar.php and style.css onto the newer Hajj base if that is current, alongside the earlier graft set. This carries the v3.32.51 homepage e-book section, so the same e-book deploy gate applies (hold the upload until the shared via-ebook delivery automation carries the three guide URLs in the faith-aligned voice with double opt-in on); the Work With Omar changes themselves are safe to ship anytime.
v3.32.55 rewires the EmailOctopus trigger tags in functions.php for the consolidated automation architecture, on operator instruction (the welcome series and the three-guides delivery are one automation, with the guides delivered to everyone in the first welcome email, and the three paid-tool sequences are one shared automation). Four tag arrays change and nothing else. The e-book signup handler mhe_handle_newsletter now sends subscribed alongside via-ebook, so guide signups enter the single merged welcome automation directly; via-ebook becomes analytics only, and no separate guide-delivery automation may exist (the old plan, where a via-ebook automation added subscribed afterwards, is retired, and the code comment is updated to match). The three tool gates, Toxic Load Audit (mhe_handle_audit tags), Gut Reset Companion (mhe_g14_signup tags) and the Fatigue Pattern Finder triage, each gain the shared plain trigger tag tool-onboarding alongside their existing subscribed and per-tool via- analytics tags, so one shared EmailOctopus automation can serve all three funnels; the naming follows the existing convention that plain tags (subscribed) are automation triggers and via- tags are source analytics. This supersedes the earlier standing rule that via-ebook is the guide-delivery trigger confined to the e-book form: with the guides delivered by welcome Email 1 to every confirmed subscriber, that rule no longer applies, by explicit operator decision. No anti-spam, silent-success, payment, gate, cookie or template logic changed; the four edits touch only the $tags arrays and their comments, and every bot-reject path still returns a payload byte-identical to a genuine success. QA, verified from the file, functions.php balances on braces, parentheses and brackets, keeps its single php opener and no closing tag, MHE_DEBUG remains false, the em-dash and en-dash sweep is zero, and tool-onboarding appears exactly three times. Files changed in v3.32.55 are functions.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.55 in place of v3.32.54; built on the v3.32.2 base, graft functions.php, page-work-with-omar.php and style.css onto the newer Hajj base if that is current, alongside the earlier graft set. Deploy dependency: this build and the consolidated EmailOctopus automations ship together; deploying the theme without the merged welcome automation leaves guide signups undelivered, and building the old separate via-ebook delivery automation against this theme double-sends nothing but is redundant; the v3.32.51 e-book deploy gate now reads, hold the upload until the merged welcome automation carries the three guide URLs in its first email in the faith-aligned voice with double opt-in on.
v3.32.56 is a two-part gate-integrity fix arising from the full gate audit of every free and paid tool signup path, on operator instruction (fix issues). Part one, the disposable-email uniformity pass: the documented six-layer anti-spam stack was not uniform, with the disposable-email blocklist layer absent from ten handlers accumulated across earlier graft passes; the existing mhe_email_is_disposable() check is added to mhe_handle_toxic_audit, mhe_handle_symptom_checker, mhe_handle_add1, mhe_handle_add2_decoder, mhe_handle_parents_guide, mhe_handle_f4, mhe_handle_f5, mhe_handle_f25, mhe_handle_fatigue_pattern_finder and mhe_handle_gut_brain_cable, inserted immediately before each handler's EmailOctopus subscribe call. Each new reject path uses that handler's own silent-success mechanism (the $silent_ok closure in nine handlers, and in mhe_handle_gut_brain_cable, which defines no closure, an inline wp_send_json_success OK byte-identical to that handler's six existing silent paths and to its genuine success), so the silent-success invariant is preserved and no bot-distinguishable response is introduced; each path logs with the handler's own existing error_log prefix. Part two, the customer-f20 trigger integrity fix in inc/functions-f20-additions.php: the customer-f20 tag, which is the trigger for the Fatigue Report buyer-onboarding automation, was previously attached to every successful PDF delivery even though the delivery endpoint performs no server-side payment verification, so the buyer automation audience could be polluted by anyone exercising the client-side unlock; the tag is now attached only when mhe_stripe_is_paid_by_email( email, f20 ) finds a verified purchase row in wp_mhe_purchases, with unverified deliveries still receiving their PDF unchanged and still subscribing, but only as subscribed plus via-personal-fatigue-report, and the withheld-tag case logged. Documented trade-off: a genuine buyer requesting delivery to a different email than they paid with will not carry customer-f20 and falls back to the welcome flow; the full fix for that, webhook-token verified delivery, remains a separate larger build. The PDF generation, delivery email, anti-spam stack and rate limit in the delivery path are unchanged. QA, verified from the files: functions.php and inc/functions-f20-additions.php balance on braces, parentheses and brackets; functions.php keeps its single php opener and no closing tag; MHE_DEBUG remains false; the em-dash and en-dash sweep is zero; ten new disposable blocks exist and every one routes rejects through its handler's silent path. Files changed in v3.32.56 are functions.php, inc/functions-f20-additions.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.56 in place of v3.32.55; built on the v3.32.2 base, graft functions.php, inc/functions-f20-additions.php, page-work-with-omar.php and style.css onto the newer Hajj base if that is current, alongside the earlier graft set. The v3.32.55 deploy dependency carries forward unchanged: this build and the consolidated EmailOctopus automations ship together, with the merged welcome automation carrying the three guide URLs before upload.
v3.32.57 closes the one real free-access bypass found in the paid-tool gate audit: the Personal Fatigue Report (F20, 19 GBP) served its premium content, the module and playbook JSON, as public static files fetched directly by the browser, so anyone could read the entire paid library without paying by requesting those two URLs. The hard payment gate only ever gated the tool interface, not the content. This build moves the library behind a server-side paid-verified endpoint and blocks direct access to the files, so the content can no longer be obtained for free, while a paying customer's experience is unchanged. Server side, inc/functions-f20-additions.php gains a library endpoint (admin-ajax action mhe_f20_library plus a REST mirror f20/v1/library) that returns the JSON only after the same purchase check the rest of the hard gate uses: mhe_f20_request_is_paid() requires the shared mhe_form_nonce and then verifies a real f20 row in wp_mhe_purchases by Stripe Checkout Session id (mhe_stripe_is_paid_by_session) or by the email the buyer paid with (mhe_stripe_is_paid_by_email), the email path rate limited to 20 attempts per IP per hour so it cannot be used to enumerate who has paid; the JSON is read from disk server-side by mhe_f20_read_library(), so no second copy is created; when the hard gate is off (legacy or soft mode) the endpoint serves the library unrestricted so behaviour is identical to before, and it fails closed if the verification helpers are unavailable. A new assets/f20/.htaccess denies direct HTTP access to the .json files under both Apache 2.4 (Require all denied) and 2.2 (Deny from all), leaving server-side reads unaffected. Client side, page-personal-fatigue-report.php stops localising the public library URLs (the libraryUrls array and the client fallback that copied it are removed) and instead localises a single libraryAjax endpoint; the payment proof established at unlock is captured into state.paidProof at both verify-success points (the auto-verify-on-return path stores the Stripe session id; the I have already paid email path stores the paid email), persists with the rest of the session state, and is sent with the gated fetch. loadF20Library() now calls the new fetchF20LibraryGated() which posts action, nonce, tool and the proof to the endpoint, retries transient network errors three times, and stops immediately on a 402 payment_required; the old fetchWithRetry() and the F20_LIB_URLS and F20_LIB_FALLBACK constants are removed. The other two paid tools were checked for the same bug class and are clear: the Toxic Load Audit and 14-Day Gut Reset Companion generate their report content client-side from the visitor's own answers and fetch nothing but jsPDF (from a CDN) and their own email-capture endpoint, so they expose no separate paid-content file. QA, verified from the files: inc/functions-f20-additions.php and page-personal-fatigue-report.php balance on braces, parentheses and brackets; the page's single large inline script passes node --check; no reference to the removed identifiers remains; the em-dash and en-dash sweep is zero; MHE_DEBUG remains false and functions.php is untouched. Files changed in v3.32.57 are inc/functions-f20-additions.php, page-personal-fatigue-report.php, the new assets/f20/.htaccess and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.57 in place of v3.32.56; built on the v3.32.2 base, graft inc/functions-f20-additions.php, page-personal-fatigue-report.php, assets/f20/.htaccess, functions.php, page-work-with-omar.php and style.css onto the newer Hajj base if that is current, alongside the earlier graft set. Test note for go-live: after the real F20 test purchase, confirm the report still assembles (the library now loads through the gated endpoint), then in a private window request the two assets/f20 JSON URLs directly and confirm they are now forbidden. The v3.32.55 deploy dependency carries forward unchanged: this build and the consolidated EmailOctopus automations ship together, with the merged welcome automation carrying the three guide URLs before upload.
v3.32.63 gives the Toxic Load Audit and the 14-Day Gut Reset Companion the same purchase-verified buyer treatment the Personal Fatigue Report (F20) already has, so each paid tool can drive its own buyer-onboarding sequence to payment-verified buyers only, on operator instruction (both: verified buyers keep the generic welcome and also receive the dedicated buyer sequence). Two handlers in functions.php change and nothing else. In mhe_handle_toxic_audit, after the existing subscribed, tool-onboarding and via-toxic-audit tags are set and before the subscribe call, a new customer-toxic-audit tag is appended only when mhe_stripe_is_paid_by_email( email, tla ) confirms a paid row for that email and the tla tool in wp_mhe_purchases; the unverified case is logged and the tag withheld. In mhe_handle_g14_signup, the same pattern adds customer-gut-reset only when mhe_stripe_is_paid_by_email( email, g14 ) confirms a paid g14 row, placed inside the existing function_exists branch so the legacy mhe_add_subscriber fallback is untouched. Both gates are guarded by function_exists, so a missing webhook helper fails closed (no buyer tag) rather than fatally. The slugs tla and g14 are live keys returned by mhe_stripe_tool_keys(), confirmed from inc/functions-stripe-webhook.php, so the verification resolves; the new buyer tags flow through the unchanged mhe_subscribe_to_emailoctopus shim to mhe_sender_subscribe as source groups, exactly as customer-f20 does, so each fires its automation on the Sender group join while the buyer stays in the double opt-in flow and still carries subscribed. Documented trade-off, identical to F20: a buyer who requests delivery to a different email than they paid with will not carry the buyer tag and falls back to the welcome flow only. No anti-spam, silent-success, payment, gate, PDF, report-email or template logic changed; every bot-reject path in both handlers still returns a payload byte-identical to a genuine success. QA, verified from the files: functions.php balances on braces, parentheses and brackets, keeps its single php opener and no closing tag; MHE_DEBUG remains false; the em-dash and en-dash sweep is zero across the changed file; no console statements were added; customer-toxic-audit and customer-gut-reset each appear exactly once. Files changed in v3.32.63 are functions.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.63 in place of v3.32.62. Deploy prerequisite: create the two groups customer-toxic-audit and customer-gut-reset in the Sender account before upload, and build a buyer automation on each that triggers on joining that group with no filter (mirroring the Fatigue Report owner automation on customer-f20); Sender silently skips any tag whose group does not yet exist, so without the groups the buyer treatment no-ops. The changelog jump from v3.32.57 to v3.32.63 here is expected: the intervening v3.32.58 to v3.32.62 Sender.net migration is documented in the migration bundle docs, not in this style block.
v3.32.64 makes payment-verified buyers of all three paid tools receive the Welcome plus three guides sequence immediately, instead of only after they click a double opt-in confirmation link, on operator instruction (guarantee the welcome for buyers across the Toxic Load Audit, the 14-Day Gut Reset and the Personal Fatigue Report). The cause it fixes: the Welcome automation triggers on joining the Sender group confirmed, but a buyer was only ever added to pending, so the welcome waited on a confirmation click that many buyers never make. The require_confirmation false path in mhe_sender_subscribe was documented to add buyers to confirmed but in fact only skipped pending, so it would have left buyers with neither the gate nor the welcome. Three files change. In inc/functions-sender.php, mhe_sender_subscribe gains an else branch: when require_confirmation is false the contact joins confirmed directly in the same atomic create call instead of pending, so both the welcome (which keys off confirmed plus the subscribed filter) and the buyer sequence (which keys off the customer tag) fire at once, and no confirmation email is sent. In functions.php, the mhe_subscribe_to_emailoctopus shim gains an optional fourth argument opts that is forwarded to mhe_sender_subscribe, leaving every existing three-argument caller unchanged; and the toxic audit and gut reset handlers now compute is_verified_buyer once and pass require_confirmation false on the verified path only, so unverified signups keep the normal double opt-in. In inc/functions-f20-additions.php, the F20 delivery subscribe does the same on its verified path. Net effect: a buyer who pays and enters the email they paid with now gets the welcome and the guides and the tool buyer sequence, all timed from the purchase, which also re-syncs the welcome and tool day spacing the email pack designed (welcome Day 0, 2, 6, 9, 13 against tool Day 1, 5, 8). Unverified signups, and buyers who enter a different email than they paid with, are unchanged and still go through double opt-in. Consent basis recorded: this relies on the UK PECR soft opt-in for existing customers (details obtained in the course of a sale, marketing of the operator's own similar service, an unsubscribe link in every email), and it applies only to payment-verified buyers, never to free signups. No anti-spam, silent-success, payment-verification, gate, PDF, report-email or template logic changed; every bot-reject path in both tool handlers still returns a payload byte-identical to a genuine success. QA, verified from the files: functions.php, inc/functions-sender.php and inc/functions-f20-additions.php each balance on braces, parentheses and brackets; functions.php keeps its single php opener and no closing tag; MHE_DEBUG remains false; the em-dash and en-dash sweep is zero across all changed files; no console statements were added; the shim stays the single subscribe entry point and the fourth argument is backward compatible. Files changed in v3.32.64 are functions.php, inc/functions-sender.php, inc/functions-f20-additions.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.64 in place of v3.32.63. No Sender dashboard change is required: the Welcome automation already triggers on confirmed plus the subscribed filter and the buyer automations already trigger on the customer groups, so the code simply puts buyers into confirmed. Two Sender preconditions to confirm before relying on this: the group must be named exactly confirmed, and the Welcome automation must have Repeat workflow off, so an existing confirmed subscriber who later buys is not welcomed twice.
v3.32.65 corrects the email platform name in user-facing copy and records the buyer soft opt-in in the privacy policy, on operator instruction, with no payment, gate, tool or anti-spam code changed. The site migrated from EmailOctopus to Sender.net in the v3.32.58 to v3.32.62 work, but four user-facing references on the Terms and Privacy page (page-terms.php) and one in the Parents Guide data note (partials/parents-guide-body.php) still named EmailOctopus; all five are now Sender. The privacy policy also stated that every email signup is double opt-in, which stopped being true for buyers in v3.32.64, so two short paragraphs are added: one in section 7 (Email subscriptions and communication) and one in the Marketing emails section of the Privacy Policy, recording that payment-verified buyers are added to the list as existing customers under the UK PECR soft opt-in, without the separate confirmation step, scoped to purchasers, for the operators own similar services, with an unsubscribe link in every email. Code comments and the historical changelog that mention EmailOctopus are deliberately left unchanged (the internal plumbing and function names are kept by standing convention), and the on-hold HHF1 preview surface is left for its own separate build. QA, verified from the files: zero EmailOctopus remains in page-terms.php, the Parents Guide note now reads Sender, the privacy paragraph tags balance (fifty open and fifty close), the em-dash and en-dash sweep is zero across both changed files and this style.css, and no debug flags are set. Files changed in v3.32.65 are page-terms.php, partials/parents-guide-body.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.65 in place of v3.32.64. This is a copy change only and is safe to ship at any time. Review the two new privacy paragraphs against your own judgement before deploy, since this is your privacy policy; the wording leans on the PECR soft opt-in for existing customers.
v3.32.66 stops the Holistic Health Assessment emailing the user their report, on operator instruction, so it now only emails the operator a copy and subscribes the person, with no payment, gate or anti-spam logic changed. The assessment is a free tool whose full report already renders on screen (the pillars, radar, deep dive, heatmap and protocol sections all reveal on the page), and the page JavaScript shows that report on both success and error and never displays the server message, so the only thing the user lost is the emailed PDF copy, and the only thing they keep getting by email is the Sender double opt-in and welcome series after they confirm. In mhe_handle_assessment the user email block (subject, body, headers and the wp_mail to the visitor, with the PDF attached) is removed; the operator copy, still carrying the PDF, and the via-assessment subscribe are unchanged. Because the report is no longer emailed, the wording that promised it is corrected: the genuine success message and all six silent-success bot-reject messages are reworded to one byte-identical line that points at the on-screen results instead of an inbox, which also closes a small pre-existing gap where the bot messages and the genuine success message differed slightly; the missing-email validation error no longer says to receive your report; and the admin-send-failure error no longer promises to send a report manually. The PDF is still generated client-side and attached to the operator copy, so the operator keeps a full PDF of every submission. Note recorded: there is no on-screen download button, so the user now keeps the full on-screen report but not a PDF file; adding a download button is a separate job if wanted. QA, verified from the file: functions.php balances on braces, parentheses and brackets, keeps its single php opener and no closing tag, MHE_DEBUG remains false, the em-dash and en-dash sweep is zero, no console statements were added, the new success line appears exactly seven times (six bot paths plus the genuine success) and no report-on-its-way wording remains, and the wp_send_json_success and wp_send_json_error counts are unchanged because only message text changed, not the number of responses. Files changed in v3.32.66 are functions.php and this style.css version line and entry, nothing else. UK English, zero em-dashes. Deploy v3.32.66 in place of v3.32.65.
*/

