{"title":"Shopping Centre","description":null,"products":[{"product_id":"site-viability-audit-resilience-12","title":"Connect Resilience 12","description":"\u003cdiv class=\"res\"\u003e\n  \u003cstyle\u003e\n    .res {\n      --res-ink: #14143C;\n      --res-body: #243049;\n      --res-muted: #5A6478;\n      --res-accent: #00C8C8;\n      --res-line: #E4E8F2;\n      --res-panel: #F8F9FF;\n      --res-badge-ink: #0B1437;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      color: var(--res-body);\n      line-height: 1.6;\n      max-width: 860px;\n      margin: 0 auto;\n    }\n    .res * { box-sizing: border-box; }\n    .res__eyebrow {\n      display: inline-block;\n      background: var(--res-accent);\n      color: var(--res-badge-ink);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-size: 11px;\n      padding: 6px 14px;\n      border-radius: 6px;\n      margin-bottom: 18px;\n    }\n    .res__lede {\n      font-size: 18px;\n      line-height: 1.55;\n      color: var(--res-ink);\n      font-weight: 500;\n      margin: 0 0 28px;\n    }\n    .res__lede strong { font-weight: 700; }\n    .res__hook {\n      border-left: 3px solid var(--res-accent);\n      background: var(--res-panel);\n      border-radius: 0 12px 12px 0;\n      padding: 20px 24px;\n      font-size: 16px;\n      line-height: 1.55;\n      color: var(--res-ink);\n      margin: 0 0 40px;\n    }\n    .res__hook strong { font-weight: 700; }\n    .res__section-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .1em;\n      color: var(--res-accent);\n      margin: 48px 0 20px;\n      padding-bottom: 10px;\n      border-bottom: 1px solid var(--res-line);\n    }\n    .res__section-label:first-of-type { margin-top: 0; }\n    .res__intro {\n      font-size: 15px;\n      color: var(--res-body);\n      margin: 0 0 20px;\n      line-height: 1.55;\n    }\n    .res__intro strong { color: var(--res-ink); font-weight: 700; }\n\n    .res__value {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--res-line);\n      border: 1px solid var(--res-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .res__value-cell { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .res__value-cell h4 {\n      font-size: 11px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .07em;\n      color: var(--res-muted);\n      margin: 0 0 10px;\n    }\n    .res__value-cell p { font-size: 15px; color: var(--res-body); margin: 0; line-height: 1.5; }\n    .res__value-cell p strong { color: var(--res-ink); font-weight: 700; }\n\n    .res__verdict {\n      background: var(--res-ink);\n      border-radius: 14px;\n      padding: 28px 30px;\n      margin: 0 0 8px;\n    }\n    .res__verdict h3 {\n      color: #FFFFFF; font-size: 20px; font-weight: 700; margin: 0 0 10px; line-height: 1.3;\n    }\n    .res__verdict p { color: #C7D0E4; font-size: 15px; line-height: 1.55; margin: 0 0 16px; }\n    .res__verdict p:last-child { margin-bottom: 0; }\n    .res__verdict-tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; }\n    .res__verdict-tag {\n      background: rgba(0,200,200,.16); color: var(--res-accent);\n      font-size: 13px; font-weight: 700; padding: 6px 14px; border-radius: 6px;\n    }\n\n    .res__kpi {\n      display: grid;\n      grid-template-columns: 44px 1fr;\n      gap: 0 18px;\n      align-items: start;\n      margin-bottom: 26px;\n    }\n    .res__kpi:last-child { margin-bottom: 0; }\n    .res__kpi-num {\n      font-size: 28px; font-weight: 700; color: var(--res-accent);\n      line-height: 1; letter-spacing: -.02em;\n    }\n    .res__kpi-name {\n      font-size: 17px; font-weight: 700; color: var(--res-ink);\n      margin: 0 0 6px; line-height: 1.3;\n    }\n    .res__kpi-levels { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 8px; }\n    .res__kpi-level {\n      background: var(--res-panel); border: 1px solid var(--res-line);\n      color: var(--res-body); font-size: 12px; font-weight: 700;\n      padding: 3px 10px; border-radius: 5px;\n    }\n    .res__kpi-text { font-size: 15px; color: var(--res-body); line-height: 1.5; margin: 0; }\n    .res__kpi-text strong { color: var(--res-ink); font-weight: 700; }\n\n    .res__pages {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 1px;\n      background: var(--res-line);\n      border: 1px solid var(--res-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .res__page { background: #FFFFFF; padding: 20px 22px; min-width: 0; }\n    .res__page h5 { font-size: 14px; font-weight: 700; color: var(--res-ink); margin: 0 0 6px; }\n    .res__page p { font-size: 14px; color: var(--res-muted); margin: 0; line-height: 1.45; }\n\n    .res__mod {\n      border-left: 3px solid var(--res-accent);\n      padding: 4px 0 4px 22px;\n      margin-bottom: 26px;\n    }\n    .res__mod:last-child { margin-bottom: 0; }\n    .res__mod-name {\n      font-size: 17px; font-weight: 700; color: var(--res-ink);\n      margin: 0 0 6px; line-height: 1.25;\n    }\n    .res__mod-val { font-size: 15px; color: var(--res-body); line-height: 1.5; margin: 0; }\n    .res__mod-val strong { color: var(--res-ink); font-weight: 700; }\n\n    .res__steps { list-style: none; counter-reset: resstep; padding: 0; margin: 0; }\n    .res__steps li {\n      counter-increment: resstep;\n      position: relative;\n      padding: 0 0 22px 52px;\n      margin: 0;\n    }\n    .res__steps li:last-child { padding-bottom: 0; }\n    .res__steps li::before {\n      content: counter(resstep);\n      position: absolute; left: 0; top: 0;\n      width: 34px; height: 34px;\n      background: var(--res-ink); color: #FFFFFF;\n      font-size: 14px; font-weight: 700; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .res__steps li::after {\n      content: \"\"; position: absolute; left: 16px; top: 40px; bottom: 4px;\n      width: 2px; background: var(--res-line);\n    }\n    .res__steps li:last-child::after { display: none; }\n    .res__step-name {\n      font-size: 15px; font-weight: 700; color: var(--res-ink);\n      display: block; margin: 6px 0 4px;\n    }\n    .res__step-text { font-size: 15px; margin: 0; line-height: 1.5; }\n\n    .res__note {\n      background: var(--res-panel);\n      border: 1px solid var(--res-line);\n      border-radius: 12px;\n      padding: 18px 20px;\n      font-size: 14px;\n      color: var(--res-muted);\n      margin-top: 24px;\n    }\n    .res__note strong { color: var(--res-ink); font-weight: 700; }\n\n    .res__close {\n      background: var(--res-ink);\n      border-radius: 14px;\n      padding: 32px 30px;\n      margin-top: 48px;\n      text-align: center;\n    }\n    .res__close p {\n      color: #FFFFFF; font-size: 17px; line-height: 1.5;\n      margin: 0 0 6px; font-weight: 600;\n    }\n    .res__close span {\n      display: block; color: #A9B4CC; font-size: 14px; line-height: 1.5;\n    }\n  \u003c\/style\u003e\n\n  \u003cspan class=\"res__eyebrow\"\u003eResilience 12 — Two-Year Site Viability Audit\u003c\/span\u003e\n\n  \u003cp class=\"res__lede\"\u003e\n    \u003cstrong\u003eResilience 12 reads twelve months of measured visitors across two calendar years\u003c\/strong\u003e,\n    to establish whether a site's traffic is holding, strengthening or weakening — and whether it is\n    winning ground on its own territory. Built for expansion directors, real estate teams and anyone\n    signing or renewing a lease.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"res__hook\"\u003e\n    A site that looks solid in one year can be quietly losing its territory in the next — and a single\n    year never shows it. Footfall counts give you a snapshot; a one-year study gives you a structure.\n    \u003cstrong\u003eResilience 12 gives you a trajectory\u003c\/strong\u003e — two years, four seasons, read side by side.\n  \u003c\/div\u003e\n\n  \u003cp class=\"res__section-label\"\u003eValue proposition\u003c\/p\u003e\n  \u003cdiv class=\"res__value\"\u003e\n    \u003cdiv class=\"res__value-cell\"\u003e\n      \u003ch4\u003eStrategic decision\u003c\/h4\u003e\n      \u003cp\u003eLease, renewal or relocation — decided on \u003cstrong\u003ea two-year trajectory of measured flow\u003c\/strong\u003e, not on the impression of a single visit or a single season.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__value-cell\"\u003e\n      \u003ch4\u003eAnalysis horizon\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eTwo closed calendar years.\u003c\/strong\u003e A fixed, auditable window that lets the second year be read against the first — a trajectory, not a snapshot.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__value-cell\"\u003e\n      \u003ch4\u003eWhat it establishes\u003c\/h4\u003e\n      \u003cp\u003eWhether the site is \u003cstrong\u003egaining or losing ground\u003c\/strong\u003e on its territory, season after season — and how fragile or robust its base really is.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"res__section-label\"\u003eThe verdict — Resilience\u003c\/p\u003e\n  \u003cdiv class=\"res__verdict\"\u003e\n    \u003ch3\u003eIs this site holding, strengthening or weakening?\u003c\/h3\u003e\n    \u003cdiv class=\"res__verdict-tags\"\u003e\n      \u003cspan class=\"res__verdict-tag\"\u003eStable\u003c\/span\u003e\n      \u003cspan class=\"res__verdict-tag\"\u003eStrengthening\u003c\/span\u003e\n      \u003cspan class=\"res__verdict-tag\"\u003eWeakening\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cp\u003eResilience is the single verdict at the top of the report — readable in one word by anyone who will never open the detail pages. It is not a sixth indicator: it is the \u003cstrong style=\"color:#FFFFFF;\"\u003esynthesis of the four KPIs below\u003c\/strong\u003e, weighted by how much each one predicts a site's ability to hold its ground over two years.\u003c\/p\u003e\n    \u003cp\u003eA site gaining residents on its own territory while holding its volume is \u003cstrong style=\"color:#FFFFFF;\"\u003eStrengthening\u003c\/strong\u003e. One losing penetration while its footfall merely tracks a growing market is \u003cstrong style=\"color:#FFFFFF;\"\u003eWeakening\u003c\/strong\u003e — even if the raw numbers look up.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"res__section-label\"\u003eThe four KPIs that build the verdict\u003c\/p\u003e\n  \u003cp class=\"res__intro\"\u003e\n    Ordered by how much each one drives territorial resilience — from the most predictive\n    (the site's grip on its territory) to the most contextual (the fragility of its base).\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"res__kpi\"\u003e\n    \u003cdiv class=\"res__kpi-num\"\u003e1\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"res__kpi-name\"\u003ePenetration — the deciding factor\u003c\/p\u003e\n      \u003cdiv class=\"res__kpi-levels\"\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eUnder-penetrated\u003c\/span\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eModerately penetrated\u003c\/span\u003e\n        \u003cspan class=\"res__kpi-level\"\u003ePenetrated\u003c\/span\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eSaturated\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"res__kpi-text\"\u003eThe share of each neighbourhood's residents who actually come. Read year on year, it places the site on four tiers and says whether it is \u003cstrong\u003egaining or losing ground\u003c\/strong\u003e. This is what settles the verdict: a site can grow its footfall and still slip a tier if its territory grows faster than it does.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"res__kpi\"\u003e\n    \u003cdiv class=\"res__kpi-num\"\u003e2\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"res__kpi-name\"\u003eFootfall\u003c\/p\u003e\n      \u003cdiv class=\"res__kpi-levels\"\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eRising\u003c\/span\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eStable\u003c\/span\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eFalling\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"res__kpi-text\"\u003eThe raw volume, year on year. It comes after penetration because a rising count can \u003cstrong\u003emask lost ground\u003c\/strong\u003e when the surrounding market expands faster than the site — footfall is read in the light of penetration, never on its own.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"res__kpi\"\u003e\n    \u003cdiv class=\"res__kpi-num\"\u003e3\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"res__kpi-name\"\u003eEngagement — dwell time\u003c\/p\u003e\n      \u003cdiv class=\"res__kpi-levels\"\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eStrengthening\u003c\/span\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eStable\u003c\/span\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eDeclining\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"res__kpi-text\"\u003eHow long visitors stay on site. Quality after quantity: visitors who stay longer signal a site that \u003cstrong\u003eholds people, not just attracts them\u003c\/strong\u003e. It qualifies what the first two KPIs have established.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"res__kpi\"\u003e\n    \u003cdiv class=\"res__kpi-num\"\u003e4\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"res__kpi-name\"\u003eCatchment structure — the risk factor\u003c\/p\u003e\n      \u003cdiv class=\"res__kpi-levels\"\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eBalanced\u003c\/span\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eConcentrated\u003c\/span\u003e\n        \u003cspan class=\"res__kpi-level\"\u003eDiffuse\u003c\/span\u003e\n      \u003c\/div\u003e\n      \u003cp class=\"res__kpi-text\"\u003eWhat the base rests on. It does not say whether the site is doing well — it says how \u003cstrong\u003efragile\u003c\/strong\u003e it is. A base concentrated on two or three neighbourhoods is exposed; a balanced base is robust. It modulates the verdict rather than carrying it.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"res__section-label\"\u003eInside the report\u003c\/p\u003e\n  \u003cdiv class=\"res__pages\"\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003eResilience verdict\u003c\/h5\u003e\n      \u003cp\u003eIs this site holding, strengthening or weakening? The four KPIs synthesised into one verdict, plus an asset profile: neighbourhood anchor, regional destination or seasonal destination.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003ePenetration trajectory\u003c\/h5\u003e\n      \u003cp\u003eIs the site gaining ground? Year-on-year movement across the four tiers, neighbourhood by neighbourhood — where it advances and where it retreats.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003eFootfall trend\u003c\/h5\u003e\n      \u003cp\u003eIs the volume rising or falling? Two years of measured visitors, read season against matching season.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003eEngagement trend\u003c\/h5\u003e\n      \u003cp\u003eAre visitors staying? Dwell time year on year — whether the site is deepening its hold or loosening it.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003eCatchment structure\u003c\/h5\u003e\n      \u003cp\u003eHow exposed is the base? Whether the traffic is balanced across many neighbourhoods, concentrated on a few, or diffuse with no anchor — with the ranked table of every core neighbourhood and its cumulative weight.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"res__section-label\"\u003eWhat you will receive\u003c\/p\u003e\n\n  \u003cdiv class=\"res__mod\"\u003e\n    \u003cp class=\"res__mod-name\"\u003eA written diagnosis, not a dashboard to interpret\u003c\/p\u003e\n    \u003cp class=\"res__mod-val\"\u003eEvery page carries a narrative in plain language explaining what each figure means, what it does not mean, and how far it can be trusted. \u003cstrong\u003eNo prior training in geomarketing required.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"res__mod\"\u003e\n    \u003cp class=\"res__mod-name\"\u003eA verdict you can put in front of a landlord\u003c\/p\u003e\n    \u003cp class=\"res__mod-val\"\u003eThe two reference years are fixed before the outcome is known and appear on every page. Two sites analysed on the same two years \u003cstrong\u003ecompare directly\u003c\/strong\u003e — two rolling windows extracted on different dates do not.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"res__mod\"\u003e\n    \u003cp class=\"res__mod-name\"\u003eA fixed perimeter\u003c\/p\u003e\n    \u003cp class=\"res__mod-val\"\u003eThe core is set on the first reference year and never recalculated. Otherwise the second year would measure \u003cstrong\u003ea shift in perimeter, not a real change in traffic\u003c\/strong\u003e.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"res__mod\"\u003e\n    \u003cp class=\"res__mod-name\"\u003eA trajectory, honestly bounded\u003c\/p\u003e\n    \u003cp class=\"res__mod-val\"\u003eResilience 12 compares two closed years and reads the movement between them. It states the limits of that comparison: \u003cstrong\u003etwo years describe a direction, not a guarantee\u003c\/strong\u003e of what the third will do.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"res__mod\"\u003e\n    \u003cp class=\"res__mod-name\"\u003eData accuracy\u003c\/p\u003e\n    \u003cp class=\"res__mod-val\"\u003eAggregated, privacy-by-design mobility data. \u003cstrong\u003eDeduplicated unique visitors at neighbourhood granularity\u003c\/strong\u003e — audience captured, not footsteps counted.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"res__section-label\"\u003eOptional modules\u003c\/p\u003e\n  \u003cp class=\"res__intro\"\u003e\n    Two questions that do not always arise. Each is added in the configurator, and only where it has an object.\n  \u003c\/p\u003e\n  \u003cdiv class=\"res__pages\"\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003eCompetitive benchmark\u003c\/h5\u003e\n      \u003cp\u003eThe same two reference years read on a directly comparable operator already trading in the target area, with its own catchment and its own penetration. The only factual way out of a business plan built on declared intentions.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003eCannibalisation risk\u003c\/h5\u003e\n      \u003cp\u003eHow far the visitor origins of the studied site overlap with those of your nearest existing location, across the two years. Worth ordering only where the two catchment areas genuinely meet.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"res__section-label\"\u003eCoverage\u003c\/p\u003e\n  \u003cdiv class=\"res__value\"\u003e\n    \u003cdiv class=\"res__value-cell\"\u003e\n      \u003ch4\u003eAvailable in the configurator\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eShopping centres and retail parks\u003c\/strong\u003e, across every market we cover. Select yours by name and the two reference years, and the scope is built for you — no eligibility check required.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__value-cell\"\u003e\n      \u003ch4\u003eAvailable on request\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eStandalone stores and high streets.\u003c\/strong\u003e Eligibility depends on surface area and geographic separation — contact us and we confirm it before you commit.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"res__section-label\"\u003eDelivery \u0026amp; secure access\u003c\/p\u003e\n\n  \u003cdiv class=\"res__mod\"\u003e\n    \u003cp class=\"res__mod-name\"\u003eDelivered within 72 business hours\u003c\/p\u003e\n    \u003cp class=\"res__mod-val\"\u003eYour report is built, published and handed over to your team \u003cstrong\u003ewithin 72 business hours of payment being received\u003c\/strong\u003e. No quote, no scoping calls, no back-and-forth.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"res__mod\"\u003e\n    \u003cp class=\"res__mod-name\"\u003eEnterprise environment\u003c\/p\u003e\n    \u003cp class=\"res__mod-val\"\u003eDeveloped and hosted securely within the \u003cstrong\u003eMicrosoft Power BI\u003c\/strong\u003e ecosystem.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"res__mod\"\u003e\n    \u003cp class=\"res__mod-name\"\u003eDedicated workspace, unlimited duration\u003c\/p\u003e\n    \u003cp class=\"res__mod-val\"\u003eYour data is isolated in a private, encrypted workspace restricted to your authorised staff. No expiry and no recurring access fee — \u003cstrong\u003ethe deliverable is yours\u003c\/strong\u003e.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"res__mod\"\u003e\n    \u003cp class=\"res__mod-name\"\u003eLicensing requirement\u003c\/p\u003e\n    \u003cp class=\"res__mod-val\"\u003eOne active \u003cstrong\u003eMicrosoft Power BI Pro\u003c\/strong\u003e license per end user, at the client's expense. Continuous access is guaranteed as long as this license is maintained.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"res__section-label\"\u003eHow to order\u003c\/p\u003e\n  \u003cp class=\"res__intro\"\u003e\n    Resilience 12 is ordered directly online. \u003cstrong\u003eThe configurator builds your scope step by step and the\n    price adjusts as you go\u003c\/strong\u003e — no quote, no purchase order, no waiting.\n  \u003c\/p\u003e\n  \u003col class=\"res__steps\"\u003e\n    \u003cli\u003e\n      \u003cspan class=\"res__step-name\"\u003eConfigure your audit\u003c\/span\u003e\n      \u003cp class=\"res__step-text\"\u003eSelect the site to study and the two calendar years of reference. Add optional modules — a named competitor, a site from your own network to test for overlap — if the question applies to you. The price updates at every step.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"res__step-name\"\u003eCheck out\u003c\/span\u003e\n      \u003cp class=\"res__step-text\"\u003ePay online by card or SEPA transfer. Your invoice is issued immediately, and the data queries are triggered the moment your payment clears.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"res__step-name\"\u003eReceive your workspace\u003c\/span\u003e\n      \u003cp class=\"res__step-text\"\u003eWithin 72 business hours, your Power BI workspace is published and transferred to your team — with the written diagnosis already inside it.\u003c\/p\u003e\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\n  \u003cp class=\"res__section-label\"\u003eOnce the site is secured\u003c\/p\u003e\n  \u003cp class=\"res__intro\"\u003e\n    Resilience 12 tells you whether the territory is worth the lease. \u003cstrong\u003eThe same territory then has to be told\n    you are opening.\u003c\/strong\u003e The neighbourhoods reading as under-penetrated are exactly the ones an opening\n    campaign should reach first — and they are already qualified in your report.\n  \u003c\/p\u003e\n  \u003cdiv class=\"res__pages\"\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003eDrive Digital\u003c\/h5\u003e\n      \u003cp\u003eTactical budget allocation on qualified territories — your opening budget spent only where the catchment area actually is.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003eDrive pDOOH\u003c\/h5\u003e\n      \u003cp\u003eTactical panel selection on qualified territories — outdoor placed on real mobility flows rather than on panel reach.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"res__page\"\u003e\n      \u003ch5\u003eDrive Print\u003c\/h5\u003e\n      \u003cp\u003eTactical leaflet distribution on qualified territories — door-drops targeted neighbourhood by neighbourhood.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"res__note\"\u003e\n    \u003cstrong\u003eScope:\u003c\/strong\u003e Resilience 12 reads twelve months of measured visitors across two closed calendar\n    years and hands over a structural trajectory of a site. It runs no campaigns and produces no\n    ready-to-load targeting file: budget allocation and channel execution belong to \u003cstrong\u003eFlow Drive\u003c\/strong\u003e.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"res__close\"\u003e\n    \u003cp\u003eA lease is signed for years. The decision deserves more than one year of data.\u003c\/p\u003e\n    \u003cspan\u003eConfigure your audit and receive it within 72 business hours.\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e","brand":"Ilan Experience","offers":[{"title":"Default Title","offer_id":62878233133386,"sku":null,"price":1595.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0918\/2851\/9242\/files\/Resilience12Logo.png?v=1786725053"},{"product_id":"seasonal-retail-audit-momentum-season","title":"Connect Momentum Season SC","description":"\u003cdiv class=\"sea\"\u003e\n  \u003cstyle\u003e\n    .sea {\n      --sea-ink: #14143C;\n      --sea-body: #243049;\n      --sea-muted: #5A6478;\n      --sea-accent: #00C8C8;\n      --sea-line: #E4E8F2;\n      --sea-panel: #F8F9FF;\n      --sea-badge-ink: #0B1437;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      color: var(--sea-body);\n      line-height: 1.6;\n      max-width: 860px;\n      margin: 0 auto;\n    }\n    .sea * { box-sizing: border-box; }\n    .sea__eyebrow {\n      display: inline-block;\n      background: var(--sea-accent);\n      color: var(--sea-badge-ink);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-size: 11px;\n      padding: 6px 14px;\n      border-radius: 6px;\n      margin-bottom: 18px;\n    }\n    .sea__lede {\n      font-size: 18px;\n      line-height: 1.55;\n      color: var(--sea-ink);\n      font-weight: 500;\n      margin: 0 0 28px;\n    }\n    .sea__lede strong { font-weight: 700; }\n    .sea__hook {\n      border-left: 3px solid var(--sea-accent);\n      background: var(--sea-panel);\n      border-radius: 0 12px 12px 0;\n      padding: 20px 24px;\n      font-size: 16px;\n      line-height: 1.55;\n      color: var(--sea-ink);\n      margin: 0 0 40px;\n    }\n    .sea__hook strong { font-weight: 700; }\n    .sea__section-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .1em;\n      color: var(--sea-accent);\n      margin: 48px 0 20px;\n      padding-bottom: 10px;\n      border-bottom: 1px solid var(--sea-line);\n    }\n    .sea__section-label:first-of-type { margin-top: 0; }\n    .sea__intro {\n      font-size: 15px;\n      color: var(--sea-body);\n      margin: 0 0 20px;\n      line-height: 1.55;\n    }\n    .sea__intro strong { color: var(--sea-ink); font-weight: 700; }\n\n    \/* --- seasons --- *\/\n    .sea__formats {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n      gap: 1px;\n      background: var(--sea-line);\n      border: 1px solid var(--sea-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .sea__format {\n      background: #FFFFFF;\n      padding: 26px 24px;\n      min-width: 0;\n    }\n    .sea__format h4 {\n      font-size: 19px;\n      font-weight: 700;\n      color: var(--sea-ink);\n      margin: 0 0 4px;\n      line-height: 1.2;\n    }\n    .sea__format-kicker {\n      font-size: 11px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .07em;\n      color: var(--sea-muted);\n      margin: 0 0 14px;\n    }\n    .sea__format-eg {\n      font-size: 14px;\n      color: var(--sea-body);\n      margin: 0 0 14px;\n      line-height: 1.5;\n    }\n    .sea__format-q {\n      font-size: 15px;\n      color: var(--sea-ink);\n      font-weight: 600;\n      margin: 0;\n      line-height: 1.45;\n      padding-top: 14px;\n      border-top: 1px solid var(--sea-line);\n    }\n\n    \/* --- value grid --- *\/\n    .sea__value {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--sea-line);\n      border: 1px solid var(--sea-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .sea__value-cell { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .sea__value-cell h4 {\n      font-size: 11px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .07em;\n      color: var(--sea-muted);\n      margin: 0 0 10px;\n    }\n    .sea__value-cell p { font-size: 15px; color: var(--sea-body); margin: 0; line-height: 1.5; }\n    .sea__value-cell p strong { color: var(--sea-ink); font-weight: 700; }\n\n    \/* --- numbered questions --- *\/\n    .sea__q {\n      display: grid;\n      grid-template-columns: 44px 1fr;\n      gap: 0 18px;\n      align-items: start;\n      margin-bottom: 26px;\n    }\n    .sea__q:last-child { margin-bottom: 0; }\n    .sea__q-num {\n      font-size: 28px; font-weight: 700; color: var(--sea-accent);\n      line-height: 1; letter-spacing: -.02em;\n    }\n    .sea__q-name {\n      font-size: 17px; font-weight: 700; color: var(--sea-ink);\n      margin: 0 0 6px; line-height: 1.3;\n    }\n    .sea__q-text { font-size: 15px; color: var(--sea-body); line-height: 1.5; margin: 0; }\n    .sea__q-text strong { color: var(--sea-ink); font-weight: 700; }\n\n    \/* --- report pages --- *\/\n    .sea__pages {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 1px;\n      background: var(--sea-line);\n      border: 1px solid var(--sea-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .sea__page { background: #FFFFFF; padding: 20px 22px; min-width: 0; }\n    .sea__page h5 { font-size: 14px; font-weight: 700; color: var(--sea-ink); margin: 0 0 6px; }\n    .sea__page p { font-size: 14px; color: var(--sea-muted); margin: 0; line-height: 1.45; }\n\n    \/* --- modules \/ blocks --- *\/\n    .sea__mod {\n      border-left: 3px solid var(--sea-accent);\n      padding: 4px 0 4px 22px;\n      margin-bottom: 26px;\n    }\n    .sea__mod:last-child { margin-bottom: 0; }\n    .sea__mod-name {\n      font-size: 17px; font-weight: 700; color: var(--sea-ink);\n      margin: 0 0 6px; line-height: 1.25;\n    }\n    .sea__mod-val { font-size: 15px; color: var(--sea-body); line-height: 1.5; margin: 0; }\n    .sea__mod-val strong { color: var(--sea-ink); font-weight: 700; }\n\n    \/* --- steps --- *\/\n    .sea__steps { list-style: none; counter-reset: seastep; padding: 0; margin: 0; }\n    .sea__steps li {\n      counter-increment: seastep;\n      position: relative;\n      padding: 0 0 22px 52px;\n      margin: 0;\n    }\n    .sea__steps li:last-child { padding-bottom: 0; }\n    .sea__steps li::before {\n      content: counter(seastep);\n      position: absolute; left: 0; top: 0;\n      width: 34px; height: 34px;\n      background: var(--sea-ink); color: #FFFFFF;\n      font-size: 14px; font-weight: 700; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .sea__steps li::after {\n      content: \"\"; position: absolute; left: 16px; top: 40px; bottom: 4px;\n      width: 2px; background: var(--sea-line);\n    }\n    .sea__steps li:last-child::after { display: none; }\n    .sea__step-name {\n      font-size: 15px; font-weight: 700; color: var(--sea-ink);\n      display: block; margin: 6px 0 4px;\n    }\n    .sea__step-text { font-size: 15px; margin: 0; line-height: 1.5; }\n\n    \/* --- note --- *\/\n    .sea__note {\n      background: var(--sea-panel);\n      border: 1px solid var(--sea-line);\n      border-radius: 12px;\n      padding: 18px 20px;\n      font-size: 14px;\n      color: var(--sea-muted);\n      margin-top: 24px;\n    }\n    .sea__note strong { color: var(--sea-ink); font-weight: 700; }\n\n    \/* --- closing --- *\/\n    .sea__close {\n      background: var(--sea-ink);\n      border-radius: 14px;\n      padding: 32px 30px;\n      margin-top: 48px;\n      text-align: center;\n    }\n    .sea__close p {\n      color: #FFFFFF;\n      font-size: 17px;\n      line-height: 1.5;\n      margin: 0 0 6px;\n      font-weight: 600;\n    }\n    .sea__close span {\n      display: block;\n      color: #A9B4CC;\n      font-size: 14px;\n      line-height: 1.5;\n    }\n  \u003c\/style\u003e\n\n  \u003cspan class=\"sea__eyebrow\"\u003eMomentum Season — Seasonal Territorial Audit\u003c\/span\u003e\n\n  \u003cp class=\"sea__lede\"\u003e\n    \u003cstrong\u003eMomentum Season measures what your catchment area did across one season of the retail cycle.\u003c\/strong\u003e\n    Read week by week, framed by the period that precedes it and by the same season one year earlier,\n    it separates the movement of the territory from the performance of your point of sale — and shows\n    which neighbourhoods carried the result.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"sea__hook\"\u003e\n    A store closing the season at \u003cstrong\u003e+12%\u003c\/strong\u003e believes it performed well — until it learns that its\n    catchment area grew \u003cstrong\u003e+16%\u003c\/strong\u003e. Momentum Season supplies the one figure that neither in-store\n    counters nor media platforms can produce: \u003cstrong\u003ethe trajectory of the territory itself\u003c\/strong\u003e.\n  \u003c\/div\u003e\n\n  \u003cp class=\"sea__section-label\"\u003eThe seasons of the retail cycle\u003c\/p\u003e\n  \u003cp class=\"sea__intro\"\u003e\n    A retail year is not a flat line — it is a sequence of commercial seasons, each with its own\n    mechanics, its own catchment behaviour and its own competitive intensity. \u003cstrong\u003eMomentum Season reads\n    one of them, in full\u003c\/strong\u003e, and you choose which in the configurator.\n  \u003c\/p\u003e\n  \u003cdiv class=\"sea__formats\"\u003e\n    \u003cdiv class=\"sea__format\"\u003e\n      \u003ch4\u003eTrading seasons\u003c\/h4\u003e\n      \u003cp class=\"sea__format-kicker\"\u003eCovered by the configurator\u003c\/p\u003e\n      \u003cp class=\"sea__format-eg\"\u003eWinter sales, summer sales, spring, back-to-school, year-end holidays — and any consecutive multi-week period that constitutes a season for your category.\u003c\/p\u003e\n      \u003cp class=\"sea__format-q\"\u003eOne season, read week by week.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__format\"\u003e\n      \u003ch4\u003eTwo references, not one\u003c\/h4\u003e\n      \u003cp class=\"sea__format-kicker\"\u003eHow the season is framed\u003c\/p\u003e\n      \u003cp class=\"sea__format-eg\"\u003eEvery season is set against the weeks that precede it — the level your territory was running at — and against the same season one year earlier.\u003c\/p\u003e\n      \u003cp class=\"sea__format-q\"\u003eA season that grows is not the same as a season that recovers.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sea__section-label\"\u003eValue proposition\u003c\/p\u003e\n  \u003cdiv class=\"sea__value\"\u003e\n    \u003cdiv class=\"sea__value-cell\"\u003e\n      \u003ch4\u003eOperational objective\u003c\/h4\u003e\n      \u003cp\u003eSeparate what your point of sale achieved from \u003cstrong\u003ewhat the territory delivered anyway\u003c\/strong\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__value-cell\"\u003e\n      \u003ch4\u003eMethod\u003c\/h4\u003e\n      \u003cp\u003eThe rules of \u003cstrong\u003edynamic geomarketing\u003c\/strong\u003e: classic geomarketing photographs a territory, dynamic geomarketing measures its movement.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__value-cell\"\u003e\n      \u003ch4\u003eStrategic angle\u003c\/h4\u003e\n      \u003cp\u003eDeduplicated unique visitors at \u003cstrong\u003eneighbourhood level\u003c\/strong\u003e — audience captured, not footsteps counted.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sea__section-label\"\u003eThe three questions answered\u003c\/p\u003e\n\n  \u003cdiv class=\"sea__q\"\u003e\n    \u003cdiv class=\"sea__q-num\"\u003e1\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"sea__q-name\"\u003eDid the season work?\u003c\/p\u003e\n      \u003cp class=\"sea__q-text\"\u003eThe movement generated across the season, measured against a clean reference level, then set against the same season one year earlier. \u003cstrong\u003eA verdict expressed in points, not impressions.\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"sea__q\"\u003e\n    \u003cdiv class=\"sea__q-num\"\u003e2\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"sea__q-name\"\u003eWhere did the result come from?\u003c\/p\u003e\n      \u003cp class=\"sea__q-text\"\u003eYour catchment area is ranked by contribution, not by distance. Momentum Season splits it into a concentrated base and a dispersed one, and shows \u003cstrong\u003ewhich of the two carried the growth\u003c\/strong\u003e — and which merely followed the calendar.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"sea__q\"\u003e\n    \u003cdiv class=\"sea__q-num\"\u003e3\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"sea__q-name\"\u003eWho drove the result?\u003c\/p\u003e\n      \u003cp class=\"sea__q-text\"\u003eThree levels of observation on a single scale: \u003cstrong\u003eterritory, store, media activation\u003c\/strong\u003e. Each measured against its own reference, so the three become comparable. The report composes them without declaring a winner.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sea__section-label\"\u003eInside the report\u003c\/p\u003e\n  \u003cdiv class=\"sea__pages\"\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eExecutive\u003c\/h5\u003e\n      \u003cp\u003eThe verdict: reference level, season, and where the territory stands once it closes.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eCatchment\u003c\/h5\u003e\n      \u003cp\u003eWhich part of the territory moved, which one grew, which one came back.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eCore\u003c\/h5\u003e\n      \u003cp\u003eThe concentrated base — mobilisation, contribution, and how solid the result is.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eExpansion\u003c\/h5\u003e\n      \u003cp\u003eThe dispersed base — the growth reserve that responds to the season rather than to the year.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eBalance\u003c\/h5\u003e\n      \u003cp\u003eTerritory, store and media side by side, on one common scale.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eActivation\u003c\/h5\u003e\n      \u003cp\u003eA recommended position for every zone, ready for your next campaign brief.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eMap\u003c\/h5\u003e\n      \u003cp\u003eThe full catchment area, coloured by position, synchronised with the zone table.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sea__section-label\"\u003eWhat you will receive\u003c\/p\u003e\n\n  \u003cdiv class=\"sea__mod\"\u003e\n    \u003cp class=\"sea__mod-name\"\u003eA written diagnosis, not a dashboard to interpret\u003c\/p\u003e\n    \u003cp class=\"sea__mod-val\"\u003eEvery page carries a narrative in plain language explaining what each figure means, what it does not mean, and how far it can be trusted. \u003cstrong\u003eNo prior training in geomarketing required.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"sea__mod\"\u003e\n    \u003cp class=\"sea__mod-name\"\u003eZone-level recommendations\u003c\/p\u003e\n    \u003cp class=\"sea__mod-val\"\u003eEach neighbourhood receives a position for your next season — \u003cstrong\u003eLoyalty, Exclusion, Conquest or Dormant\u003c\/strong\u003e — derived from its contribution and its trajectory, with the weight it represents. Ready to hand over to your agency as it stands.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"sea__mod\"\u003e\n    \u003cp class=\"sea__mod-name\"\u003eAn honest reading\u003c\/p\u003e\n    \u003cp class=\"sea__mod-val\"\u003eThe report states the limits of what it measures. A gap between two levels is a position, never a proof of causality. \u003cstrong\u003eMomentum describes; it does not attribute.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"sea__mod\"\u003e\n    \u003cp class=\"sea__mod-name\"\u003eData accuracy\u003c\/p\u003e\n    \u003cp class=\"sea__mod-val\"\u003eAggregated, privacy-by-design mobility data. Deduplicated unique visitors at neighbourhood granularity, benchmarked against published retail footfall thresholds.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sea__section-label\"\u003eOptional modules\u003c\/p\u003e\n  \u003cp class=\"sea__intro\"\u003e\n    Three questions that do not always arise. Each is added in the configurator, reads in the same grammar\n    as the rest of the report, and leaves its structure untouched.\n  \u003c\/p\u003e\n  \u003cdiv class=\"sea__pages\"\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eCompetitive benchmark\u003c\/h5\u003e\n      \u003cp\u003eThe same season measured on a comparable neighbouring venue: same territory, same calendar, same weather. The closest available reference point.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eSeasonal cannibalisation\u003c\/h5\u003e\n      \u003cp\u003eAcross the season, did your growth come from neighbourhoods that also feed your other locations? Up to three sites compared.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__page\"\u003e\n      \u003ch5\u003eEngagement\u003c\/h5\u003e\n      \u003cp\u003eThe time that builds the basket. Visit duration is read across bands and compared with the reference level.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sea__section-label\"\u003eCoverage\u003c\/p\u003e\n  \u003cdiv class=\"sea__value\"\u003e\n    \u003cdiv class=\"sea__value-cell\"\u003e\n      \u003ch4\u003eAvailable in the configurator\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eShopping centres and retail parks\u003c\/strong\u003e, across every market we cover. Select yours by name and a comparable venue is identified automatically.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"sea__value-cell\"\u003e\n      \u003ch4\u003eAvailable on request\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eStandalone stores and high streets.\u003c\/strong\u003e Eligibility depends on surface area and geographic separation — contact us and we confirm it before you commit.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sea__section-label\"\u003eDelivery \u0026amp; secure access\u003c\/p\u003e\n\n  \u003cdiv class=\"sea__mod\"\u003e\n    \u003cp class=\"sea__mod-name\"\u003eDelivered within 72 business hours\u003c\/p\u003e\n    \u003cp class=\"sea__mod-val\"\u003eYour report is built, published and handed over to your team \u003cstrong\u003ewithin 72 business hours of payment being received\u003c\/strong\u003e. No back-and-forth, no scoping calls, no waiting on a quote.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"sea__mod\"\u003e\n    \u003cp class=\"sea__mod-name\"\u003eEnterprise environment\u003c\/p\u003e\n    \u003cp class=\"sea__mod-val\"\u003eThe report is published and hosted exclusively within the \u003cstrong\u003eMicrosoft Power BI\u003c\/strong\u003e ecosystem.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"sea__mod\"\u003e\n    \u003cp class=\"sea__mod-name\"\u003eSecure workspace, unlimited duration\u003c\/p\u003e\n    \u003cp class=\"sea__mod-val\"\u003eYour data is isolated in a dedicated, encrypted online workspace accessible only to authorised stakeholders. \u003cstrong\u003eNo expiration date on your deliverable.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"sea__mod\"\u003e\n    \u003cp class=\"sea__mod-name\"\u003eLicensing requirement\u003c\/p\u003e\n    \u003cp class=\"sea__mod-val\"\u003eEach designated user must hold an active \u003cstrong\u003eMicrosoft Power BI Pro\u003c\/strong\u003e license, at the client's expense. Continuous access is guaranteed as long as this license is maintained.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"sea__section-label\"\u003eHow to order\u003c\/p\u003e\n  \u003cp class=\"sea__intro\"\u003e\n    Momentum Season is ordered directly online. \u003cstrong\u003eThe configurator builds your scope step by step and the\n    price adjusts as you go\u003c\/strong\u003e — no quote, no purchase order, no waiting.\n  \u003c\/p\u003e\n  \u003col class=\"sea__steps\"\u003e\n    \u003cli\u003e\n      \u003cspan class=\"sea__step-name\"\u003eConfigure your audit\u003c\/span\u003e\n      \u003cp class=\"sea__step-text\"\u003eSelect your venue, the season to audit and your audience profile. Add optional modules if the question applies to you. The price updates at every step.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"sea__step-name\"\u003eCheck out\u003c\/span\u003e\n      \u003cp class=\"sea__step-text\"\u003ePay online by card or SEPA transfer. Your invoice is issued immediately, and the data queries are triggered the moment your payment clears.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"sea__step-name\"\u003eReceive your workspace\u003c\/span\u003e\n      \u003cp class=\"sea__step-text\"\u003eWithin 72 business hours, your Power BI workspace is published and transferred to your team — with the written diagnosis already inside it.\u003c\/p\u003e\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\n  \u003cdiv class=\"sea__note\"\u003e\n    \u003cstrong\u003eScope:\u003c\/strong\u003e Momentum Season reads one season of the retail cycle, week by week, and hands\n    over a territorial diagnosis. A short trading event — Black Friday, a promotional weekend, a single day —\n    is read by \u003cstrong\u003eMomentum Event\u003c\/strong\u003e. Neither product runs campaigns or produces a ready-to-load\n    targeting file: budget allocation and channel execution belong to \u003cstrong\u003eFlow Drive\u003c\/strong\u003e.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"sea__close\"\u003e\n    \u003cp\u003eYour next season is already being planned. The last one is still unmeasured.\u003c\/p\u003e\n    \u003cspan\u003eConfigure your audit and receive it within 72 business hours.\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e","brand":"Ilan Experience","offers":[{"title":"Default Title","offer_id":62878250926410,"sku":null,"price":495.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0918\/2851\/9242\/files\/MomentumLogo.png?v=1786725096"},{"product_id":"digital-local-targeting-drive-digital","title":"Drive Digital SC","description":"\u003cdiv class=\"dig\"\u003e\n  \u003cstyle\u003e\n    .dig {\n      --dig-ink: #14143C;\n      --dig-body: #243049;\n      --dig-muted: #5A6478;\n      --dig-accent: #00C8C8;\n      --dig-line: #E4E8F2;\n      --dig-panel: #F8F9FF;\n      --dig-badge-ink: #0B1437;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      color: var(--dig-body);\n      line-height: 1.6;\n      max-width: 860px;\n      margin: 0 auto;\n    }\n    .dig * { box-sizing: border-box; }\n    .dig__eyebrow {\n      display: inline-block;\n      background: var(--dig-accent);\n      color: var(--dig-badge-ink);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-size: 11px;\n      padding: 6px 14px;\n      border-radius: 6px;\n      margin-bottom: 18px;\n    }\n    .dig__lede {\n      font-size: 18px;\n      line-height: 1.55;\n      color: var(--dig-ink);\n      font-weight: 500;\n      margin: 0 0 28px;\n    }\n    .dig__lede strong { font-weight: 700; }\n    .dig__hook {\n      border-left: 3px solid var(--dig-accent);\n      background: var(--dig-panel);\n      border-radius: 0 12px 12px 0;\n      padding: 20px 24px;\n      font-size: 16px;\n      line-height: 1.55;\n      color: var(--dig-ink);\n      margin: 0 0 40px;\n    }\n    .dig__hook strong { font-weight: 700; }\n    .dig__section-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .1em;\n      color: var(--dig-accent);\n      margin: 48px 0 20px;\n      padding-bottom: 10px;\n      border-bottom: 1px solid var(--dig-line);\n    }\n    .dig__section-label:first-of-type { margin-top: 0; }\n    .dig__intro {\n      font-size: 15px;\n      color: var(--dig-body);\n      margin: 0 0 20px;\n      line-height: 1.55;\n    }\n    .dig__intro strong { color: var(--dig-ink); font-weight: 700; }\n\n    \/* --- postures --- *\/\n    .dig__postures {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n      gap: 1px;\n      background: var(--dig-line);\n      border: 1px solid var(--dig-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .dig__posture { background: #FFFFFF; padding: 26px 24px; min-width: 0; }\n    .dig__posture h4 {\n      font-size: 19px; font-weight: 700; color: var(--dig-ink);\n      margin: 0 0 4px; line-height: 1.2;\n    }\n    .dig__posture-kicker {\n      font-size: 11px; font-weight: 700; text-transform: uppercase;\n      letter-spacing: .07em; color: var(--dig-muted); margin: 0 0 14px;\n    }\n    .dig__posture-eg { font-size: 14px; color: var(--dig-body); margin: 0 0 14px; line-height: 1.5; }\n    .dig__posture-q {\n      font-size: 15px; color: var(--dig-ink); font-weight: 600; margin: 0;\n      line-height: 1.45; padding-top: 14px; border-top: 1px solid var(--dig-line);\n    }\n\n    \/* --- value grid --- *\/\n    .dig__value {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--dig-line);\n      border: 1px solid var(--dig-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .dig__value-cell { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .dig__value-cell h4 {\n      font-size: 11px; font-weight: 700; text-transform: uppercase;\n      letter-spacing: .07em; color: var(--dig-muted); margin: 0 0 10px;\n    }\n    .dig__value-cell p { font-size: 15px; color: var(--dig-body); margin: 0; line-height: 1.5; }\n    .dig__value-cell p strong { color: var(--dig-ink); font-weight: 700; }\n\n    \/* --- numbered questions --- *\/\n    .dig__q {\n      display: grid; grid-template-columns: 44px 1fr; gap: 0 18px;\n      align-items: start; margin-bottom: 26px;\n    }\n    .dig__q:last-child { margin-bottom: 0; }\n    .dig__q-num {\n      font-size: 28px; font-weight: 700; color: var(--dig-accent);\n      line-height: 1; letter-spacing: -.02em;\n    }\n    .dig__q-name {\n      font-size: 17px; font-weight: 700; color: var(--dig-ink);\n      margin: 0 0 6px; line-height: 1.3;\n    }\n    .dig__q-text { font-size: 15px; color: var(--dig-body); line-height: 1.5; margin: 0; }\n    .dig__q-text strong { color: var(--dig-ink); font-weight: 700; }\n\n    \/* --- pages \/ tiles --- *\/\n    .dig__pages {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 1px;\n      background: var(--dig-line);\n      border: 1px solid var(--dig-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .dig__page { background: #FFFFFF; padding: 20px 22px; min-width: 0; }\n    .dig__page h5 { font-size: 14px; font-weight: 700; color: var(--dig-ink); margin: 0 0 6px; }\n    .dig__page p { font-size: 14px; color: var(--dig-muted); margin: 0; line-height: 1.45; }\n\n    \/* --- modules --- *\/\n    .dig__mod {\n      border-left: 3px solid var(--dig-accent);\n      padding: 4px 0 4px 22px;\n      margin-bottom: 26px;\n    }\n    .dig__mod:last-child { margin-bottom: 0; }\n    .dig__mod-name {\n      font-size: 17px; font-weight: 700; color: var(--dig-ink);\n      margin: 0 0 6px; line-height: 1.25;\n    }\n    .dig__mod-val { font-size: 15px; color: var(--dig-body); line-height: 1.5; margin: 0; }\n    .dig__mod-val strong { color: var(--dig-ink); font-weight: 700; }\n\n    \/* --- steps --- *\/\n    .dig__steps { list-style: none; counter-reset: digstep; padding: 0; margin: 0; }\n    .dig__steps li {\n      counter-increment: digstep; position: relative;\n      padding: 0 0 22px 52px; margin: 0;\n    }\n    .dig__steps li:last-child { padding-bottom: 0; }\n    .dig__steps li::before {\n      content: counter(digstep);\n      position: absolute; left: 0; top: 0;\n      width: 34px; height: 34px;\n      background: var(--dig-ink); color: #FFFFFF;\n      font-size: 14px; font-weight: 700; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .dig__steps li::after {\n      content: \"\"; position: absolute; left: 16px; top: 40px; bottom: 4px;\n      width: 2px; background: var(--dig-line);\n    }\n    .dig__steps li:last-child::after { display: none; }\n    .dig__step-name {\n      font-size: 15px; font-weight: 700; color: var(--dig-ink);\n      display: block; margin: 6px 0 4px;\n    }\n    .dig__step-text { font-size: 15px; margin: 0; line-height: 1.5; }\n\n    \/* --- note --- *\/\n    .dig__note {\n      background: var(--dig-panel);\n      border: 1px solid var(--dig-line);\n      border-radius: 12px;\n      padding: 18px 20px;\n      font-size: 14px;\n      color: var(--dig-muted);\n      margin-top: 24px;\n    }\n    .dig__note strong { color: var(--dig-ink); font-weight: 700; }\n\n    \/* --- closing --- *\/\n    .dig__close {\n      background: var(--dig-ink);\n      border-radius: 14px;\n      padding: 32px 30px;\n      margin-top: 48px;\n      text-align: center;\n    }\n    .dig__close p {\n      color: #FFFFFF; font-size: 17px; line-height: 1.5;\n      margin: 0 0 6px; font-weight: 600;\n    }\n    .dig__close span {\n      display: block; color: #A9B4CC; font-size: 14px; line-height: 1.5;\n    }\n  \u003c\/style\u003e\n\n  \u003cspan class=\"dig__eyebrow\"\u003eDrive Digital — Programmatic \u0026amp; Social Targeting\u003c\/span\u003e\n\n  \u003cp class=\"dig__lede\"\u003e\n    \u003cstrong\u003eDrive Digital turns measured territorial data into a targeting file your DSP can load.\u003c\/strong\u003e\n    It ranks every neighbourhood of your catchment area, assigns it a media posture, checks that your\n    budget can actually fund the plan, and exports the selection in the format your platform expects.\n    Built for media planners, agencies and CMOs running local activation online.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"dig__hook\"\u003e\n    A local media plan is normally drawn as a radius around the store. But your customers do not live in a\n    circle — they live along roads, behind barriers, on one side of a river. Drive Digital replaces the radius\n    with \u003cstrong\u003ethe neighbourhoods that measurably feed your location\u003c\/strong\u003e, ranked by what they actually\n    contribute.\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eThree postures, one budget\u003c\/p\u003e\n  \u003cp class=\"dig__intro\"\u003e\n    Every neighbourhood in your catchment area receives one posture, derived from its contribution to your\n    traffic and from how that contribution is moving. \u003cstrong\u003eThe postures are not alternatives to choose\n    between — they are three different jobs your budget can be asked to do\u003c\/strong\u003e, and the report quantifies\n    each one so the split becomes an executive decision rather than a guess.\n  \u003c\/p\u003e\n  \u003cdiv class=\"dig__postures\"\u003e\n    \u003cdiv class=\"dig__posture\"\u003e\n      \u003ch4\u003eConquest\u003c\/h4\u003e\n      \u003cp class=\"dig__posture-kicker\"\u003eGrowth capture\u003c\/p\u003e\n      \u003cp class=\"dig__posture-eg\"\u003eNeighbourhoods outside your core that are measurably gaining ground, filtered on a volume floor so a big percentage on a thin zone never attracts budget.\u003c\/p\u003e\n      \u003cp class=\"dig__posture-q\"\u003eThe only source of genuinely additional traffic.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__posture\"\u003e\n      \u003ch4\u003eLoyalty\u003c\/h4\u003e\n      \u003cp class=\"dig__posture-kicker\"\u003eMaintenance\u003c\/p\u003e\n      \u003cp class=\"dig__posture-eg\"\u003eThe core that holds. Already captured and already loyal — pressure here defends visit frequency and share against competing destinations. Ranked by weight, because what you protect is mass.\u003c\/p\u003e\n      \u003cp class=\"dig__posture-q\"\u003eProtection of an existing relationship, not a conquest.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__posture\"\u003e\n      \u003ch4\u003eDefence\u003c\/h4\u003e\n      \u003cp class=\"dig__posture-kicker\"\u003eRecovering your own ground\u003c\/p\u003e\n      \u003cp class=\"dig__posture-eg\"\u003eCore neighbourhoods slipping away. They come to you and no one else — the loss is yours, which is precisely why the lever is yours too. Ranked by what the erosion actually costs you.\u003c\/p\u003e\n      \u003cp class=\"dig__posture-q\"\u003eA decline you can still reverse.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__note\"\u003e\n    \u003cstrong\u003eOne exception, by design:\u003c\/strong\u003e if your store is a unit inside a shopping centre, the centre —\n    not the store — is the destination. A neighbourhood that stops coming to the centre cannot be brought back\n    by the tenant alone, whatever the message. In that configuration the third posture becomes\n    \u003cstrong\u003eExclusion\u003c\/strong\u003e: those perimeters are named, quantified, and taken out of the budget rather than\n    defended. The report applies the right posture automatically, based on the venue you select.\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eValue proposition\u003c\/p\u003e\n  \u003cdiv class=\"dig__value\"\u003e\n    \u003cdiv class=\"dig__value-cell\"\u003e\n      \u003ch4\u003eOperational objective\u003c\/h4\u003e\n      \u003cp\u003eStop paying for impressions delivered \u003cstrong\u003eoutside the territory that feeds your store\u003c\/strong\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__value-cell\"\u003e\n      \u003ch4\u003eObservation window\u003c\/h4\u003e\n      \u003cp\u003eA \u003cstrong\u003erecent window you choose\u003c\/strong\u003e. Close enough to reflect the territory as it is now, wide enough to separate a trend from a spike.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__value-cell\"\u003e\n      \u003ch4\u003ePlatform neutrality\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eDSP-agnostic by design.\u003c\/strong\u003e Flow defines the optimal territory; your platform defines the execution — audiences, bids, creative.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eThe three questions answered\u003c\/p\u003e\n\n  \u003cdiv class=\"dig__q\"\u003e\n    \u003cdiv class=\"dig__q-num\"\u003e1\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"dig__q-name\"\u003eWhere should the budget go?\u003c\/p\u003e\n      \u003cp class=\"dig__q-text\"\u003eEach posture reports its qualified zone count and its share of capturable traffic. The recommended posture for the period is stated explicitly, with the reasoning behind it. \u003cstrong\u003eFlow qualifies the territory; the split between postures remains your arbitration.\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__q\"\u003e\n    \u003cdiv class=\"dig__q-num\"\u003e2\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"dig__q-name\"\u003eHow far should it reach?\u003c\/p\u003e\n      \u003cp class=\"dig__q-text\"\u003eEach posture is delivered on coverage tiers — \u003cstrong\u003ePerformance, Efficiency, Reach\u003c\/strong\u003e — and each tier contains the one before it. Widening coverage never means abandoning the core. Three ways to buy the same territory, so the plan is sized to the budget rather than the reverse.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__q\"\u003e\n    \u003cdiv class=\"dig__q-num\"\u003e3\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"dig__q-name\"\u003eCan the budget actually fund it?\u003c\/p\u003e\n      \u003cp class=\"dig__q-text\"\u003eA plan spread across too many zones under-funds every one of them and delivers nothing anywhere. Set your minimum daily spend per zone and the report returns \u003cstrong\u003ehow many zones your budget can genuinely finance\u003c\/strong\u003e over your flight dates — before the campaign is booked, not after it under-delivers.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eInside the report\u003c\/p\u003e\n  \u003cdiv class=\"dig__pages\"\u003e\n    \u003cdiv class=\"dig__page\"\u003e\n      \u003ch5\u003ePostures\u003c\/h5\u003e\n      \u003cp\u003eThe postures, their qualified zone counts and their coverage tiers, with the allocation guidance in plain language.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__page\"\u003e\n      \u003ch5\u003eGeo-planning\u003c\/h5\u003e\n      \u003cp\u003eFlight dates, budget, minimum daily spend per zone — and the map of what the plan actually covers, updating as you move the cursors.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__page\"\u003e\n      \u003ch5\u003eExport\u003c\/h5\u003e\n      \u003cp\u003eThe targeting file itself: selected zones, ranking and flight window, in the format your platform ingests.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eFour export formats\u003c\/p\u003e\n  \u003cp class=\"dig__intro\"\u003e\n    The same selection, expressed in whichever geometry your platform accepts. \u003cstrong\u003eChoose the most precise\n    format your DSP supports\u003c\/strong\u003e — each step down from polygon widens the perimeter and re-admits territory\n    the postures deliberately left out.\n  \u003c\/p\u003e\n  \u003cdiv class=\"dig__pages\"\u003e\n    \u003cdiv class=\"dig__page\"\u003e\n      \u003ch5\u003ePolygon\u003c\/h5\u003e\n      \u003cp\u003eThe exact boundary of every selected neighbourhood. The only format that carries the selection without loss.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__page\"\u003e\n      \u003ch5\u003ePostal code\u003c\/h5\u003e\n      \u003cp\u003eSelected zones mapped to postal geography. Widely supported, moderately coarser.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__page\"\u003e\n      \u003ch5\u003eRadius\u003c\/h5\u003e\n      \u003cp\u003eCentre point and distance per zone. Convenient, but a circle necessarily re-includes ground the postures excluded.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__page\"\u003e\n      \u003ch5\u003eCity\u003c\/h5\u003e\n      \u003cp\u003eMunicipality-level targeting. The fallback for platforms with no sub-city granularity.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eWhat you will receive\u003c\/p\u003e\n\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eA file, not a recommendation to re-key\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eThe export is built to be loaded, not retyped. Zones, ranking and flight window travel together, so \u003cstrong\u003ethe plan that reaches the platform is the plan that was analysed\u003c\/strong\u003e.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eA written brief your agency can act on\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eEvery page carries a narrative in plain language: which posture is recommended, what each one would buy you, and what falls outside the budget. \u003cstrong\u003eNo prior training in geomarketing required.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eA measured territory, not a declared one\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003ePostures derive from observed visitor origins at neighbourhood granularity — not from declared catchment, not from a drawn radius, not from panel projection.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eAn honest reading\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eDrive Digital defines where to buy. It does not claim what the buying will produce. \u003cstrong\u003eAny statement of media effect requires control zones — and that is a separate, explicit decision.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eData accuracy\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eAggregated, privacy-by-design mobility data. \u003cstrong\u003eDeduplicated unique visitors at neighbourhood granularity\u003c\/strong\u003e — audience captured, not footsteps counted.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eTwo options\u003c\/p\u003e\n  \u003cp class=\"dig__intro\"\u003e\n    Two questions that do not always arise. Each is added in the configurator and leaves the structure of the\n    report untouched.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eAlways-on — a fourth posture\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eNeighbourhoods that already send you traffic while a large share of their households have never come. Weakly captured ground, whatever its rank. \u003cstrong\u003eAlways-on adds a reach-and-awareness posture with coverage left to the planner\u003c\/strong\u003e, alongside the households, income brackets and age profile of every zone it names. The three core postures and their tiers are unaffected if you skip it.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eUplift — incremental measurement\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eHolds a matched set of neighbourhoods out of the plan and compares the two groups after the flight, returning incremental visits, uplift percentage and real cost per visit. \u003cstrong\u003eIt must be armed before launch\u003c\/strong\u003e — control zones are withheld at planning time, so Uplift cannot be added to a campaign already running or already finished. It costs coverage: the withheld neighbourhoods receive no media, and you trade a share of reach for the ability to know what the rest produced. Measurement continues for one month past the last day of activation, long enough to tell genuine remanence from a closing spike.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"dig__note\"\u003e\n    \u003cstrong\u003eWhat Uplift is, and is not:\u003c\/strong\u003e a comparison between exposed and withheld neighbourhoods\n    establishes a measured difference under the assumption that both groups were moving in parallel before the\n    campaign — an assumption the report displays rather than asserts. It is incrementality, not attribution.\n    Flow does not claim to know which impression caused which visit.\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eCoverage\u003c\/p\u003e\n  \u003cdiv class=\"dig__value\"\u003e\n    \u003cdiv class=\"dig__value-cell\"\u003e\n      \u003ch4\u003eAvailable in the configurator\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eShopping centres and retail parks\u003c\/strong\u003e, across every market we cover. Select yours by name and the catchment area is built for you — no eligibility check required.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"dig__value-cell\"\u003e\n      \u003ch4\u003eAvailable on request\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eStandalone stores and high streets.\u003c\/strong\u003e Eligibility depends on surface area and geographic separation — contact us and we confirm it before you commit.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eDelivery \u0026amp; secure access\u003c\/p\u003e\n\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eDelivered within 72 business hours\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eYour report is built, published and handed over to your team \u003cstrong\u003ewithin 72 business hours of payment being received\u003c\/strong\u003e. No quote, no scoping calls, no back-and-forth.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eEnterprise environment\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eDeveloped and hosted securely within the \u003cstrong\u003eMicrosoft Power BI\u003c\/strong\u003e ecosystem.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eDedicated workspace, unlimited duration\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eYour data is isolated in a private, encrypted workspace restricted to your authorised staff. No expiry and no recurring access fee — \u003cstrong\u003ethe deliverable is yours\u003c\/strong\u003e.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"dig__mod\"\u003e\n    \u003cp class=\"dig__mod-name\"\u003eLicensing requirement\u003c\/p\u003e\n    \u003cp class=\"dig__mod-val\"\u003eOne active \u003cstrong\u003eMicrosoft Power BI Pro\u003c\/strong\u003e license per end user, at the client's expense. Continuous access is guaranteed as long as this license is maintained.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"dig__section-label\"\u003eHow to order\u003c\/p\u003e\n  \u003cp class=\"dig__intro\"\u003e\n    Drive Digital is ordered directly online. \u003cstrong\u003eThe configurator builds your scope step by step and the\n    price adjusts as you go\u003c\/strong\u003e — no quote, no purchase order, no waiting.\n  \u003c\/p\u003e\n  \u003col class=\"dig__steps\"\u003e\n    \u003cli\u003e\n      \u003cspan class=\"dig__step-name\"\u003eConfigure your activation\u003c\/span\u003e\n      \u003cp class=\"dig__step-text\"\u003eSelect your location, the period to read, your flight dates and your export format. Add Uplift here if you intend to measure the campaign — it cannot be added later. The price updates at every step.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"dig__step-name\"\u003eCheck out\u003c\/span\u003e\n      \u003cp class=\"dig__step-text\"\u003ePay online by card or SEPA transfer. Your invoice is issued immediately, and the data queries are triggered the moment your payment clears.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"dig__step-name\"\u003eReceive your workspace and your file\u003c\/span\u003e\n      \u003cp class=\"dig__step-text\"\u003eWithin 72 business hours, your Power BI workspace is published and transferred to your team — postures qualified, budget feasibility set, export ready to load.\u003c\/p\u003e\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\n  \u003cdiv class=\"dig__note\"\u003e\n    \u003cstrong\u003eScope:\u003c\/strong\u003e Drive Digital covers programmatic, social and mobile buying. It defines the optimal\n    territory and produces the targeting file — it does not buy media, does not run campaigns and holds no\n    platform account. Outdoor and door-drop activation are served by the same territorial method under\n    \u003cstrong\u003eDrive pDOOH\u003c\/strong\u003e and \u003cstrong\u003eDrive Print\u003c\/strong\u003e.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"dig__close\"\u003e\n    \u003cp\u003eEvery euro spent outside your catchment area is a euro spent on someone else's customer.\u003c\/p\u003e\n    \u003cspan\u003eConfigure your activation and receive it within 72 business hours.\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e","brand":"Ilan Experience","offers":[{"title":"Default Title","offer_id":62878336647498,"sku":null,"price":295.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0918\/2851\/9242\/files\/Flow_Digital.png?v=1786999558"},{"product_id":"pdooh-local-billboard-targeting-drive-pdooh","title":"Drive pDOOH SC","description":"\u003cdiv class=\"pdo\"\u003e\n  \u003cstyle\u003e\n    .pdo {\n      --pdo-ink: #14143C;\n      --pdo-body: #243049;\n      --pdo-muted: #5A6478;\n      --pdo-accent: #00C8C8;\n      --pdo-line: #E4E8F2;\n      --pdo-panel: #F8F9FF;\n      --pdo-badge-ink: #0B1437;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      color: var(--pdo-body);\n      line-height: 1.6;\n      max-width: 860px;\n      margin: 0 auto;\n    }\n    .pdo * { box-sizing: border-box; }\n    .pdo__eyebrow {\n      display: inline-block;\n      background: var(--pdo-accent);\n      color: var(--pdo-badge-ink);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-size: 11px;\n      padding: 6px 14px;\n      border-radius: 6px;\n      margin-bottom: 18px;\n    }\n    .pdo__lede {\n      font-size: 18px;\n      line-height: 1.55;\n      color: var(--pdo-ink);\n      font-weight: 500;\n      margin: 0 0 28px;\n    }\n    .pdo__lede strong { font-weight: 700; }\n    .pdo__hook {\n      border-left: 3px solid var(--pdo-accent);\n      background: var(--pdo-panel);\n      border-radius: 0 12px 12px 0;\n      padding: 20px 24px;\n      font-size: 16px;\n      line-height: 1.55;\n      color: var(--pdo-ink);\n      margin: 0 0 40px;\n    }\n    .pdo__hook strong { font-weight: 700; }\n    .pdo__section-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .1em;\n      color: var(--pdo-accent);\n      margin: 48px 0 20px;\n      padding-bottom: 10px;\n      border-bottom: 1px solid var(--pdo-line);\n    }\n    .pdo__section-label:first-of-type { margin-top: 0; }\n    .pdo__intro {\n      font-size: 15px;\n      color: var(--pdo-body);\n      margin: 0 0 20px;\n      line-height: 1.55;\n    }\n    .pdo__intro strong { color: var(--pdo-ink); font-weight: 700; }\n\n    \/* --- postures --- *\/\n    .pdo__postures {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n      gap: 1px;\n      background: var(--pdo-line);\n      border: 1px solid var(--pdo-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .pdo__posture { background: #FFFFFF; padding: 26px 24px; min-width: 0; }\n    .pdo__posture h4 {\n      font-size: 19px; font-weight: 700; color: var(--pdo-ink);\n      margin: 0 0 4px; line-height: 1.2;\n    }\n    .pdo__posture-kicker {\n      font-size: 11px; font-weight: 700; text-transform: uppercase;\n      letter-spacing: .07em; color: var(--pdo-muted); margin: 0 0 14px;\n    }\n    .pdo__posture-eg { font-size: 14px; color: var(--pdo-body); margin: 0 0 14px; line-height: 1.5; }\n    .pdo__posture-q {\n      font-size: 15px; color: var(--pdo-ink); font-weight: 600; margin: 0;\n      line-height: 1.45; padding-top: 14px; border-top: 1px solid var(--pdo-line);\n    }\n\n    \/* --- value grid --- *\/\n    .pdo__value {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--pdo-line);\n      border: 1px solid var(--pdo-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .pdo__value-cell { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .pdo__value-cell h4 {\n      font-size: 11px; font-weight: 700; text-transform: uppercase;\n      letter-spacing: .07em; color: var(--pdo-muted); margin: 0 0 10px;\n    }\n    .pdo__value-cell p { font-size: 15px; color: var(--pdo-body); margin: 0; line-height: 1.5; }\n    .pdo__value-cell p strong { color: var(--pdo-ink); font-weight: 700; }\n\n    \/* --- numbered questions --- *\/\n    .pdo__q {\n      display: grid; grid-template-columns: 44px 1fr; gap: 0 18px;\n      align-items: start; margin-bottom: 26px;\n    }\n    .pdo__q:last-child { margin-bottom: 0; }\n    .pdo__q-num {\n      font-size: 28px; font-weight: 700; color: var(--pdo-accent);\n      line-height: 1; letter-spacing: -.02em;\n    }\n    .pdo__q-name {\n      font-size: 17px; font-weight: 700; color: var(--pdo-ink);\n      margin: 0 0 6px; line-height: 1.3;\n    }\n    .pdo__q-text { font-size: 15px; color: var(--pdo-body); line-height: 1.5; margin: 0; }\n    .pdo__q-text strong { color: var(--pdo-ink); font-weight: 700; }\n\n    \/* --- pages \/ tiles --- *\/\n    .pdo__pages {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 1px;\n      background: var(--pdo-line);\n      border: 1px solid var(--pdo-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .pdo__page { background: #FFFFFF; padding: 20px 22px; min-width: 0; }\n    .pdo__page h5 { font-size: 14px; font-weight: 700; color: var(--pdo-ink); margin: 0 0 6px; }\n    .pdo__page p { font-size: 14px; color: var(--pdo-muted); margin: 0; line-height: 1.45; }\n\n    \/* --- modules --- *\/\n    .pdo__mod {\n      border-left: 3px solid var(--pdo-accent);\n      padding: 4px 0 4px 22px;\n      margin-bottom: 26px;\n    }\n    .pdo__mod:last-child { margin-bottom: 0; }\n    .pdo__mod-name {\n      font-size: 17px; font-weight: 700; color: var(--pdo-ink);\n      margin: 0 0 6px; line-height: 1.25;\n    }\n    .pdo__mod-val { font-size: 15px; color: var(--pdo-body); line-height: 1.5; margin: 0; }\n    .pdo__mod-val strong { color: var(--pdo-ink); font-weight: 700; }\n\n    \/* --- steps --- *\/\n    .pdo__steps { list-style: none; counter-reset: pdostep; padding: 0; margin: 0; }\n    .pdo__steps li {\n      counter-increment: pdostep; position: relative;\n      padding: 0 0 22px 52px; margin: 0;\n    }\n    .pdo__steps li:last-child { padding-bottom: 0; }\n    .pdo__steps li::before {\n      content: counter(pdostep);\n      position: absolute; left: 0; top: 0;\n      width: 34px; height: 34px;\n      background: var(--pdo-ink); color: #FFFFFF;\n      font-size: 14px; font-weight: 700; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .pdo__steps li::after {\n      content: \"\"; position: absolute; left: 16px; top: 40px; bottom: 4px;\n      width: 2px; background: var(--pdo-line);\n    }\n    .pdo__steps li:last-child::after { display: none; }\n    .pdo__step-name {\n      font-size: 15px; font-weight: 700; color: var(--pdo-ink);\n      display: block; margin: 6px 0 4px;\n    }\n    .pdo__step-text { font-size: 15px; margin: 0; line-height: 1.5; }\n\n    \/* --- note --- *\/\n    .pdo__note {\n      background: var(--pdo-panel);\n      border: 1px solid var(--pdo-line);\n      border-radius: 12px;\n      padding: 18px 20px;\n      font-size: 14px;\n      color: var(--pdo-muted);\n      margin-top: 24px;\n    }\n    .pdo__note strong { color: var(--pdo-ink); font-weight: 700; }\n\n    \/* --- closing --- *\/\n    .pdo__close {\n      background: var(--pdo-ink);\n      border-radius: 14px;\n      padding: 32px 30px;\n      margin-top: 48px;\n      text-align: center;\n    }\n    .pdo__close p {\n      color: #FFFFFF; font-size: 17px; line-height: 1.5;\n      margin: 0 0 6px; font-weight: 600;\n    }\n    .pdo__close span {\n      display: block; color: #A9B4CC; font-size: 14px; line-height: 1.5;\n    }\n  \u003c\/style\u003e\n\n  \u003cspan class=\"pdo__eyebrow\"\u003eDrive pDOOH — Programmatic Out-of-Home\u003c\/span\u003e\n\n  \u003cp class=\"pdo__lede\"\u003e\n    \u003cstrong\u003eDrive pDOOH qualifies the territory before you select a single panel.\u003c\/strong\u003e\n    It ranks every neighbourhood of your catchment area, assigns it a media posture, profiles the households\n    living there, and exports the perimeters your DOOH platform or your media owner can apply directly to\n    their inventory. Built for media planners, agencies and CMOs buying outdoor locally.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"pdo__hook\"\u003e\n    Outdoor is sold by traffic past the panel. But the busiest axis in your city is busy with people driving\n    somewhere else — \u003cstrong\u003ea panel can deliver a million impressions and reach almost nobody who would ever\n    come to your store\u003c\/strong\u003e. Drive pDOOH replaces audience-past-the-panel with the neighbourhoods that\n    measurably feed your location.\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eThree postures, one budget\u003c\/p\u003e\n  \u003cp class=\"pdo__intro\"\u003e\n    Every neighbourhood in your catchment area receives one posture, derived from its contribution to your\n    traffic and from how that contribution is moving. \u003cstrong\u003eThe postures are not alternatives to choose\n    between — they are three different jobs your budget can be asked to do\u003c\/strong\u003e, and the report quantifies\n    each one so the split becomes an executive decision rather than a guess.\n  \u003c\/p\u003e\n  \u003cdiv class=\"pdo__postures\"\u003e\n    \u003cdiv class=\"pdo__posture\"\u003e\n      \u003ch4\u003eConquest\u003c\/h4\u003e\n      \u003cp class=\"pdo__posture-kicker\"\u003eGrowth capture\u003c\/p\u003e\n      \u003cp class=\"pdo__posture-eg\"\u003eNeighbourhoods outside your core that are measurably gaining ground, filtered on a volume floor so a big percentage on a thin zone never attracts panels.\u003c\/p\u003e\n      \u003cp class=\"pdo__posture-q\"\u003eThe only source of genuinely additional traffic.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__posture\"\u003e\n      \u003ch4\u003eLoyalty\u003c\/h4\u003e\n      \u003cp class=\"pdo__posture-kicker\"\u003eMaintenance\u003c\/p\u003e\n      \u003cp class=\"pdo__posture-eg\"\u003eThe core that holds. Already captured and already loyal — presence here defends visit frequency and share against competing destinations. Ranked by weight, because what you protect is mass.\u003c\/p\u003e\n      \u003cp class=\"pdo__posture-q\"\u003eProtection of an existing relationship, not a conquest.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__posture\"\u003e\n      \u003ch4\u003eDefence\u003c\/h4\u003e\n      \u003cp class=\"pdo__posture-kicker\"\u003eRecovering your own ground\u003c\/p\u003e\n      \u003cp class=\"pdo__posture-eg\"\u003eCore neighbourhoods slipping away. They come to you and no one else — the loss is yours, which is precisely why the lever is yours too. Ranked by what the erosion actually costs you.\u003c\/p\u003e\n      \u003cp class=\"pdo__posture-q\"\u003eA decline you can still reverse.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__note\"\u003e\n    \u003cstrong\u003eOne exception, by design:\u003c\/strong\u003e if your store is a unit inside a shopping centre, the centre —\n    not the store — is the destination. A neighbourhood that stops coming to the centre cannot be brought back\n    by the tenant alone, whatever the message. In that configuration the third posture becomes\n    \u003cstrong\u003eExclusion\u003c\/strong\u003e: those perimeters are named, quantified, and taken out of the budget rather than\n    defended. The report applies the right posture automatically, based on the venue you select.\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eValue proposition\u003c\/p\u003e\n  \u003cdiv class=\"pdo__value\"\u003e\n    \u003cdiv class=\"pdo__value-cell\"\u003e\n      \u003ch4\u003eOperational objective\u003c\/h4\u003e\n      \u003cp\u003eStop buying panels on the busiest axis and start buying them \u003cstrong\u003ewhere your customers actually live\u003c\/strong\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__value-cell\"\u003e\n      \u003ch4\u003eIncluded in every report\u003c\/h4\u003e\n      \u003cp\u003eThe \u003cstrong\u003ehousehold profile of every qualified neighbourhood\u003c\/strong\u003e — how many homes, which income brackets, which age groups. Outdoor is planned on residents, so they are part of the base product.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__value-cell\"\u003e\n      \u003ch4\u003ePlatform neutrality\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eInventory-agnostic by design.\u003c\/strong\u003e Flow defines the optimal territory; your platform or your media owner selects the faces inside it.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eThe three questions answered\u003c\/p\u003e\n\n  \u003cdiv class=\"pdo__q\"\u003e\n    \u003cdiv class=\"pdo__q-num\"\u003e1\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"pdo__q-name\"\u003eWhich neighbourhoods deserve a panel?\u003c\/p\u003e\n      \u003cp class=\"pdo__q-text\"\u003eEach posture reports its qualified zone count and its share of capturable traffic, alongside the households living in each zone. The recommended posture for the period is stated explicitly, with the reasoning behind it. \u003cstrong\u003eFlow qualifies the territory; the split between postures remains your arbitration.\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__q\"\u003e\n    \u003cdiv class=\"pdo__q-num\"\u003e2\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"pdo__q-name\"\u003eHow far should the campaign spread?\u003c\/p\u003e\n      \u003cp class=\"pdo__q-text\"\u003eEach posture is delivered on coverage tiers — \u003cstrong\u003ePerformance, Efficiency, Reach\u003c\/strong\u003e — and each tier contains the one before it. Widening coverage never means abandoning the core. Outdoor rewards concentration: a handful of faces held for a long period beats a thin scatter across a whole conurbation, and the tiers let you make that call with numbers.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__q\"\u003e\n    \u003cdiv class=\"pdo__q-num\"\u003e3\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"pdo__q-name\"\u003eCan the budget hold the presence?\u003c\/p\u003e\n      \u003cp class=\"pdo__q-text\"\u003eOutdoor works on repetition, and a panel bought for three days is a panel wasted. Set your minimum spend per zone and the report returns \u003cstrong\u003ehow many neighbourhoods your budget can genuinely sustain\u003c\/strong\u003e across your flight dates — before the inventory is reserved, not after the campaign under-delivers.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eInside the report\u003c\/p\u003e\n  \u003cdiv class=\"pdo__pages\"\u003e\n    \u003cdiv class=\"pdo__page\"\u003e\n      \u003ch5\u003ePostures\u003c\/h5\u003e\n      \u003cp\u003eThe postures, their qualified zone counts and their coverage tiers, with the allocation guidance in plain language.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__page\"\u003e\n      \u003ch5\u003eGeo-planning\u003c\/h5\u003e\n      \u003cp\u003eFlight dates, budget, minimum spend per zone — and the map of what the campaign actually covers, updating as you move the cursors.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__page\"\u003e\n      \u003ch5\u003eExport\u003c\/h5\u003e\n      \u003cp\u003eThe perimeters themselves: selected zones, ranking and flight window, in the format your platform or your media owner ingests.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eFour export formats\u003c\/p\u003e\n  \u003cp class=\"pdo__intro\"\u003e\n    The same selection, expressed in whichever geometry your buying route accepts — a programmatic DOOH\n    platform, or the planning desk of your media owner. \u003cstrong\u003eChoose the most precise format available to\n    you\u003c\/strong\u003e — each step down from polygon widens the perimeter and re-admits territory the postures\n    deliberately left out.\n  \u003c\/p\u003e\n  \u003cdiv class=\"pdo__pages\"\u003e\n    \u003cdiv class=\"pdo__page\"\u003e\n      \u003ch5\u003ePolygon\u003c\/h5\u003e\n      \u003cp\u003eThe exact boundary of every selected neighbourhood. The only format that carries the selection without loss.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__page\"\u003e\n      \u003ch5\u003ePostal code\u003c\/h5\u003e\n      \u003cp\u003eSelected zones mapped to postal geography. The format most inventory databases are indexed on.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__page\"\u003e\n      \u003ch5\u003eRadius\u003c\/h5\u003e\n      \u003cp\u003eCentre point and distance per zone. Convenient, but a circle necessarily re-includes ground the postures excluded.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__page\"\u003e\n      \u003ch5\u003eCity\u003c\/h5\u003e\n      \u003cp\u003eMunicipality-level targeting. The fallback where no sub-city inventory breakdown exists.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eWhat you will receive\u003c\/p\u003e\n\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eA brief your media owner can act on directly\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eThe export is built to be handed over, not retyped. Zones, ranking, household counts and flight window travel together, so \u003cstrong\u003ethe perimeter that reaches the planning desk is the perimeter that was analysed\u003c\/strong\u003e.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eA face is qualified by the ground it stands on\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eFlow does not rate individual panels — it qualifies the neighbourhoods, and any face inside a qualified neighbourhood inherits that qualification. \u003cstrong\u003eYour inventory stays your choice\u003c\/strong\u003e, and the method costs the same whether you buy four faces or four hundred.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eThe only targeting layer outdoor actually has\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eThere are no cookies on a billboard and no user-level signal to retarget. \u003cstrong\u003eGeography is not one option among several in outdoor — it is the whole of the targeting.\u003c\/strong\u003e Which makes getting it right the entire game.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eA measured territory, not a declared one\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003ePostures derive from observed visitor origins at neighbourhood granularity — not from declared catchment, not from a drawn radius, not from panel projection.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eAn honest reading\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eDrive pDOOH defines where to buy. It does not claim what the buying will produce. \u003cstrong\u003eAny statement of media effect requires control zones — and that is a separate, explicit decision.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eData accuracy\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eAggregated, privacy-by-design mobility data. \u003cstrong\u003eDeduplicated unique visitors at neighbourhood granularity\u003c\/strong\u003e — audience captured, not footsteps counted.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eTwo options\u003c\/p\u003e\n  \u003cp class=\"pdo__intro\"\u003e\n    Two questions that do not always arise. Each is added in the configurator and leaves the structure of the\n    report untouched.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eAlways-on — the posture outdoor was built for\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eNeighbourhoods that already send you traffic while a large share of their households have never come. Weakly captured ground, whatever its rank. \u003cstrong\u003eOutdoor is an awareness medium bought over long periods, so this is the posture most planners arm first on this channel\u003c\/strong\u003e — it adds a reach-and-awareness layer with coverage left to you. The three core postures and their tiers are unaffected if you skip it.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eUplift — incremental measurement\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eHolds a matched set of neighbourhoods out of the campaign and compares the two groups after the flight, returning incremental visits, uplift percentage and real cost per visit. \u003cstrong\u003eIt must be armed before launch\u003c\/strong\u003e — control zones are withheld at planning time, so Uplift cannot be added to a campaign already running or already finished. It costs coverage: the withheld neighbourhoods receive no panels, and you trade a share of presence for the ability to know what the rest produced. Measurement continues for one month past the last day of activation, long enough to tell genuine remanence from a closing spike.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"pdo__note\"\u003e\n    \u003cstrong\u003eWhat Uplift is, and is not:\u003c\/strong\u003e a comparison between exposed and withheld neighbourhoods\n    establishes a measured difference under the assumption that both groups were moving in parallel before the\n    campaign — an assumption the report displays rather than asserts. It is incrementality, not attribution.\n    Flow does not claim to know which panel caused which visit.\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eCoverage\u003c\/p\u003e\n  \u003cdiv class=\"pdo__value\"\u003e\n    \u003cdiv class=\"pdo__value-cell\"\u003e\n      \u003ch4\u003eAvailable in the configurator\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eShopping centres and retail parks\u003c\/strong\u003e, across every market we cover. Select yours by name and the catchment area is built for you — no eligibility check required.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"pdo__value-cell\"\u003e\n      \u003ch4\u003eAvailable on request\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eStandalone stores and high streets.\u003c\/strong\u003e Eligibility depends on surface area and geographic separation — contact us and we confirm it before you commit.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eDelivery \u0026amp; secure access\u003c\/p\u003e\n\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eDelivered within 72 business hours\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eYour report is built, published and handed over to your team \u003cstrong\u003ewithin 72 business hours of payment being received\u003c\/strong\u003e. No quote, no scoping calls, no back-and-forth.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eEnterprise environment\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eDeveloped and hosted securely within the \u003cstrong\u003eMicrosoft Power BI\u003c\/strong\u003e ecosystem.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eDedicated workspace, unlimited duration\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eYour data is isolated in a private, encrypted workspace restricted to your authorised staff. No expiry and no recurring access fee — \u003cstrong\u003ethe deliverable is yours\u003c\/strong\u003e.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"pdo__mod\"\u003e\n    \u003cp class=\"pdo__mod-name\"\u003eLicensing requirement\u003c\/p\u003e\n    \u003cp class=\"pdo__mod-val\"\u003eOne active \u003cstrong\u003eMicrosoft Power BI Pro\u003c\/strong\u003e license per end user, at the client's expense. Continuous access is guaranteed as long as this license is maintained.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"pdo__section-label\"\u003eHow to order\u003c\/p\u003e\n  \u003cp class=\"pdo__intro\"\u003e\n    Drive pDOOH is ordered directly online. \u003cstrong\u003eThe configurator builds your scope step by step and the\n    price adjusts as you go\u003c\/strong\u003e — no quote, no purchase order, no waiting.\n  \u003c\/p\u003e\n  \u003col class=\"pdo__steps\"\u003e\n    \u003cli\u003e\n      \u003cspan class=\"pdo__step-name\"\u003eConfigure your activation\u003c\/span\u003e\n      \u003cp class=\"pdo__step-text\"\u003eSelect your location, the period to read, your flight dates and your export format. Add Uplift here if you intend to measure the campaign — it cannot be added later. The price updates at every step.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"pdo__step-name\"\u003eCheck out\u003c\/span\u003e\n      \u003cp class=\"pdo__step-text\"\u003ePay online by card or SEPA transfer. Your invoice is issued immediately, and the data queries are triggered the moment your payment clears.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"pdo__step-name\"\u003eReceive your workspace and your perimeters\u003c\/span\u003e\n      \u003cp class=\"pdo__step-text\"\u003eWithin 72 business hours, your Power BI workspace is published and transferred to your team — postures qualified, budget feasibility set, perimeters ready to hand to your buying route.\u003c\/p\u003e\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\n  \u003cdiv class=\"pdo__note\"\u003e\n    \u003cstrong\u003eScope:\u003c\/strong\u003e Drive pDOOH covers programmatic and traditional out-of-home. It defines the optimal\n    territory and produces the perimeters — it does not buy inventory, does not negotiate with media owners and\n    holds no platform account. Panel selection inside a qualified neighbourhood remains yours. Online and\n    door-drop activation are served by the same territorial method under \u003cstrong\u003eDrive Digital\u003c\/strong\u003e and\n    \u003cstrong\u003eDrive Print\u003c\/strong\u003e.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"pdo__close\"\u003e\n    \u003cp\u003eThe busiest street in your city is full of people driving somewhere else.\u003c\/p\u003e\n    \u003cspan\u003eConfigure your activation and receive it within 72 business hours.\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e","brand":"Ilan Experience","offers":[{"title":"Default Title","offer_id":62878339563850,"sku":null,"price":295.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0918\/2851\/9242\/files\/pDOOHLogo.png?v=1786727126"},{"product_id":"footfall-attribution-incremental-measurement-drive-uplift","title":"Drive Geo Lift SC","description":"\u003cstyle\u003e\n    .upl {\n      --upl-ink: #14143C;\n      --upl-body: #243049;\n      --upl-muted: #5A6478;\n      --upl-accent: #00C8C8;\n      --upl-line: #E4E8F2;\n      --upl-panel: #F8F9FF;\n      --upl-badge-ink: #0B1437;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      color: var(--upl-body);\n      line-height: 1.6;\n      max-width: 860px;\n      margin: 0 auto;\n    }\n    .upl * { box-sizing: border-box; }\n    .upl__eyebrow {\n      display: inline-block;\n      background: var(--upl-accent);\n      color: var(--upl-badge-ink);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-size: 11px;\n      padding: 6px 14px;\n      border-radius: 6px;\n      margin-bottom: 18px;\n    }\n    .upl__lede {\n      font-size: 18px;\n      line-height: 1.55;\n      color: var(--upl-ink);\n      font-weight: 500;\n      margin: 0 0 28px;\n    }\n    .upl__lede strong { font-weight: 700; }\n    .upl__hook {\n      border-left: 3px solid var(--upl-accent);\n      background: var(--upl-panel);\n      border-radius: 0 12px 12px 0;\n      padding: 20px 24px;\n      font-size: 16px;\n      line-height: 1.55;\n      color: var(--upl-ink);\n      margin: 0 0 40px;\n    }\n    .upl__hook strong { font-weight: 700; }\n    .upl__section-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .1em;\n      color: var(--upl-accent);\n      margin: 48px 0 20px;\n      padding-bottom: 10px;\n      border-bottom: 1px solid var(--upl-line);\n    }\n    .upl__section-label:first-of-type { margin-top: 0; }\n    .upl__intro {\n      font-size: 15px;\n      color: var(--upl-body);\n      margin: 0 0 20px;\n      line-height: 1.55;\n    }\n    .upl__intro strong { color: var(--upl-ink); font-weight: 700; }\n\n    \/* --- value grid --- *\/\n    .upl__value {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--upl-line);\n      border: 1px solid var(--upl-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .upl__value-cell { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .upl__value-cell h4 {\n      font-size: 11px; font-weight: 700; text-transform: uppercase;\n      letter-spacing: .07em; color: var(--upl-muted); margin: 0 0 10px;\n    }\n    .upl__value-cell p { font-size: 15px; color: var(--upl-body); margin: 0; line-height: 1.5; }\n    .upl__value-cell p strong { color: var(--upl-ink); font-weight: 700; }\n\n    \/* --- numbered questions --- *\/\n    .upl__q {\n      display: grid; grid-template-columns: 44px 1fr; gap: 0 18px;\n      align-items: start; margin-bottom: 26px;\n    }\n    .upl__q:last-child { margin-bottom: 0; }\n    .upl__q-num {\n      font-size: 28px; font-weight: 700; color: var(--upl-accent);\n      line-height: 1; letter-spacing: -.02em;\n    }\n    .upl__q-name {\n      font-size: 17px; font-weight: 700; color: var(--upl-ink);\n      margin: 0 0 6px; line-height: 1.3;\n    }\n    .upl__q-text { font-size: 15px; color: var(--upl-body); line-height: 1.5; margin: 0; }\n    .upl__q-text strong { color: var(--upl-ink); font-weight: 700; }\n\n    \/* --- pages \/ tiles --- *\/\n    .upl__pages {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 1px;\n      background: var(--upl-line);\n      border: 1px solid var(--upl-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .upl__page { background: #FFFFFF; padding: 20px 22px; min-width: 0; }\n    .upl__page h5 { font-size: 14px; font-weight: 700; color: var(--upl-ink); margin: 0 0 6px; }\n    .upl__page p { font-size: 14px; color: var(--upl-muted); margin: 0; line-height: 1.45; }\n\n    \/* --- modules --- *\/\n    .upl__mod {\n      border-left: 3px solid var(--upl-accent);\n      padding: 4px 0 4px 22px;\n      margin-bottom: 26px;\n    }\n    .upl__mod:last-child { margin-bottom: 0; }\n    .upl__mod-name {\n      font-size: 17px; font-weight: 700; color: var(--upl-ink);\n      margin: 0 0 6px; line-height: 1.25;\n    }\n    .upl__mod-val { font-size: 15px; color: var(--upl-body); line-height: 1.5; margin: 0; }\n    .upl__mod-val strong { color: var(--upl-ink); font-weight: 700; }\n\n    \/* --- steps --- *\/\n    .upl__steps { list-style: none; counter-reset: uplstep; padding: 0; margin: 0; }\n    .upl__steps li {\n      counter-increment: uplstep; position: relative;\n      padding: 0 0 22px 52px; margin: 0;\n    }\n    .upl__steps li:last-child { padding-bottom: 0; }\n    .upl__steps li::before {\n      content: counter(uplstep);\n      position: absolute; left: 0; top: 0;\n      width: 34px; height: 34px;\n      background: var(--upl-ink); color: #FFFFFF;\n      font-size: 14px; font-weight: 700; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .upl__steps li::after {\n      content: \"\"; position: absolute; left: 16px; top: 40px; bottom: 4px;\n      width: 2px; background: var(--upl-line);\n    }\n    .upl__steps li:last-child::after { display: none; }\n    .upl__step-name {\n      font-size: 15px; font-weight: 700; color: var(--upl-ink);\n      display: block; margin: 6px 0 4px;\n    }\n    .upl__step-text { font-size: 15px; margin: 0; line-height: 1.5; }\n\n    \/* --- note --- *\/\n    .upl__note {\n      background: var(--upl-panel);\n      border: 1px solid var(--upl-line);\n      border-radius: 12px;\n      padding: 18px 20px;\n      font-size: 14px;\n      color: var(--upl-muted);\n      margin-top: 24px;\n    }\n    .upl__note strong { color: var(--upl-ink); font-weight: 700; }\n\n    \/* --- closing --- *\/\n    .upl__close {\n      background: var(--upl-ink);\n      border-radius: 14px;\n      padding: 32px 30px;\n      margin-top: 48px;\n      text-align: center;\n    }\n    .upl__close p {\n      color: #FFFFFF; font-size: 17px; line-height: 1.5;\n      margin: 0 0 6px; font-weight: 600;\n    }\n    .upl__close span {\n      display: block; color: #A9B4CC; font-size: 14px; line-height: 1.5;\n    }\n\u003c\/style\u003e\n\u003cdiv class=\"upl\"\u003e\n\u003cspan class=\"upl__eyebrow\"\u003eGeo Lift — Incremental Territorial Attribution\u003c\/span\u003e\n\u003cp class=\"upl__lede\"\u003e\u003cstrong\u003eGeo Lift measures incremental visits generated by your local campaigns from each origin neighbourhood to your destination\u003c\/strong\u003e (store, shopping centre, or retail park). By holding a matched set of control neighbourhoods out of your plan, it measures the factual increment of travel, proves your real Cost Per Visit (CPV), and quantifies genuine campaign yield across all your online and offline activations. Built for CMOs, media planners, and agencies needing rigorous territorial footfall measurement.\u003c\/p\u003e\n\u003cdiv class=\"upl__hook\"\u003eMost footfall measurement counts total visits during a campaign and calls it performance. But your store receives traffic even when you spend nothing. Geo Lift replaces total footfall with \u003cstrong\u003ethe net incremental visits created exclusively by your campaign\u003c\/strong\u003e, calculated against a statistically matched control group.\u003c\/div\u003e\n\u003cp class=\"upl__section-label\"\u003eValue proposition\u003c\/p\u003e\n\u003cdiv class=\"upl__value\"\u003e\n\u003cdiv class=\"upl__value-cell\"\u003e\n\u003ch4\u003eOperational objective\u003c\/h4\u003e\n\u003cp\u003eSeparate organic baseline traffic from \u003cstrong\u003etrue campaign-driven store visits\u003c\/strong\u003e to calculate real CPV.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__value-cell\"\u003e\n\u003ch4\u003eObservation \u0026amp; Remanence\u003c\/h4\u003e\n\u003cp\u003eContinuous measurement during flight and for \u003cstrong\u003eone full month post-campaign\u003c\/strong\u003e to isolate genuine lasting uplift from closing spikes.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__value-cell\"\u003e\n\u003ch4\u003eOmnichannel neutrality\u003c\/h4\u003e\n\u003cp\u003e\u003cstrong\u003eChannel and platform-agnostic.\u003c\/strong\u003e Evaluates Digital (DSP\/Social), pDOOH, and Print (Door-drop) campaigns with equal territorial rigor.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"upl__section-label\"\u003eThe three questions answered\u003c\/p\u003e\n\u003cdiv class=\"upl__q\"\u003e\n\u003cdiv class=\"upl__q-num\"\u003e1\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cp class=\"upl__q-name\"\u003eHow many visits were truly incremental?\u003c\/p\u003e\n\u003cp class=\"upl__q-text\"\u003eBy comparing exposed neighbourhoods against unexposed control zones moving in parallel prior to launch, the report calculates the net additional store visits generated by media exposure. \u003cstrong\u003eNo credit given to organic traffic.\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__q\"\u003e\n\u003cdiv class=\"upl__q-num\"\u003e2\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cp class=\"upl__q-name\"\u003eWhat was the true Cost Per Visit (CPV)?\u003c\/p\u003e\n\u003cp class=\"upl__q-text\"\u003eTotal media spend divided by total footfall produces an artificially low, misleading CPV. Geo Lift divides total spend strictly by \u003cstrong\u003enet incremental visits\u003c\/strong\u003e, revealing the true economic yield of your local activation, regardless of the media channel used.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__q\"\u003e\n\u003cdiv class=\"upl__q-num\"\u003e3\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cp class=\"upl__q-name\"\u003eDid the effect outlast the campaign flight?\u003c\/p\u003e\n\u003cp class=\"upl__q-text\"\u003eTracking extends 15 days past the last day of media delivery. The report quantifies \u003cstrong\u003epost-campaign remanence\u003c\/strong\u003e versus immediate reaction, proving whether your campaign altered long-term consumer behavior.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"upl__section-label\"\u003eInside the report\u003c\/p\u003e\n\u003cdiv class=\"upl__pages\"\u003e\n\u003cdiv class=\"upl__page\"\u003e\n\u003ch5\u003eAttribution Dashboard\u003c\/h5\u003e\n\u003cp\u003eInteractive reporting suite evaluating net uplift percentage, total incremental visits, and overall network efficiency.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__page\"\u003e\n\u003ch5\u003eControl vs Exposed\u003c\/h5\u003e\n\u003cp\u003eParallel trend comparison validating pre-campaign baseline symmetry and post-launch divergence between groups.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__page\"\u003e\n\u003ch5\u003eRemanence \u0026amp; Yield\u003c\/h5\u003e\n\u003cp\u003eDetailed breakdown of immediate vs post-flight visits, returning true incremental Cost Per Visit (CPV) metrics.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"upl__section-label\"\u003eWhat you will receive\u003c\/p\u003e\n\u003cdiv class=\"upl__mod\"\u003e\n\u003cp class=\"upl__mod-name\"\u003eAttribution, not speculative correlation\u003c\/p\u003e\n\u003cp class=\"upl__mod-val\"\u003eGeo Lift compares exposed and withheld control zones. \u003cstrong\u003eIncrementality is proven by controlled contrast\u003c\/strong\u003e, eliminating seasonal shifts and macro trends from your ROI calculations.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__mod\"\u003e\n\u003cp class=\"upl__mod-name\"\u003eA brief your agency and CFO can trust\u003c\/p\u003e\n\u003cp class=\"upl__mod-val\"\u003ePresents factual performance metrics in clear executive language. \u003cstrong\u003eCalculates real campaign ROI and CPV without black-box modeling or opaque algorithms.\u003c\/strong\u003e\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__mod\"\u003e\n\u003cp class=\"upl__mod-name\"\u003eMust be armed prior to launch\u003c\/p\u003e\n\u003cp class=\"upl__mod-val\"\u003eControl zones are withheld during planning. \u003cstrong\u003eGeo Lift cannot be added to a campaign already running or finished\u003c\/strong\u003e — it trades a small fraction of coverage for absolute measurement certainty.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__mod\"\u003e\n\u003cp class=\"upl__mod-name\"\u003eData accuracy\u003c\/p\u003e\n\u003cp class=\"upl__mod-val\"\u003eAggregated, privacy-by-design mobility data. \u003cstrong\u003eDeduplicated unique visitors at neighbourhood granularity\u003c\/strong\u003e — audience captured, not footsteps counted.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__note\"\u003e\n\u003cstrong\u003eWhat Geo Lift is, and is not:\u003c\/strong\u003e a comparison between exposed and withheld control neighbourhoods establishes a measured difference under the assumption that both groups were moving in parallel before the campaign — an assumption the report displays rather than asserts. It is a market-level territorial incrementality experiment, not individual impression tracking.\u003c\/div\u003e\n\u003cp class=\"upl__section-label\"\u003eCoverage\u003c\/p\u003e\n\u003cdiv class=\"upl__value\"\u003e\n\u003cdiv class=\"upl__value-cell\"\u003e\n\u003ch4\u003eAvailable in the configurator\u003c\/h4\u003e\n\u003cp\u003e\u003cstrong\u003eShopping centres and retail parks\u003c\/strong\u003e across all covered markets. Select yours by name and control perimeters are generated automatically.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__value-cell\"\u003e\n\u003ch4\u003eAvailable on request\u003c\/h4\u003e\n\u003cp\u003e\u003cstrong\u003eStandalone stores and high street networks.\u003c\/strong\u003e Eligibility depends on venue surface area and geographic separation — confirmed prior to booking.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp class=\"upl__section-label\"\u003eDelivery \u0026amp; secure access\u003c\/p\u003e\n\u003cdiv class=\"upl__mod\"\u003e\n\u003cp class=\"upl__mod-name\"\u003eDelivered within 72 business hours post-flight\u003c\/p\u003e\n\u003cp class=\"upl__mod-val\"\u003eYour attribution workspace is published \u003cstrong\u003ewithin 72 business hours following the end of the measurement window\u003c\/strong\u003e. No lengthy consulting scoping required.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__mod\"\u003e\n\u003cp class=\"upl__mod-name\"\u003eEnterprise environment\u003c\/p\u003e\n\u003cp class=\"upl__mod-val\"\u003eDeveloped and hosted securely within the \u003cstrong\u003eMicrosoft Power BI\u003c\/strong\u003e ecosystem.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__mod\"\u003e\n\u003cp class=\"upl__mod-name\"\u003eDedicated workspace, unlimited duration\u003c\/p\u003e\n\u003cp class=\"upl__mod-val\"\u003eYour data is isolated in a private, encrypted workspace restricted to authorized staff. No expiry and no recurring access fee — \u003cstrong\u003ethe deliverable is yours\u003c\/strong\u003e.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"upl__mod\"\u003e\n\u003cp class=\"upl__mod-name\"\u003eLicensing requirement\u003c\/p\u003e\n\u003cp class=\"upl__mod-val\"\u003eOne active \u003cstrong\u003eMicrosoft Power BI Pro\u003c\/strong\u003e license per end user, at the client's expense. Continuous access is guaranteed as long as this license is maintained.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cp class=\"upl__section-label\"\u003eHow to order\u003c\/p\u003e\n\u003cp class=\"upl__intro\"\u003eGeo Lift is ordered directly online during your campaign framing step. \u003cstrong\u003eThe configurator adjusts pricing dynamically\u003c\/strong\u003e based on your store network scope.\u003c\/p\u003e\n\u003col class=\"upl__steps\"\u003e\n\u003cli\u003e\n\u003cspan class=\"upl__step-name\"\u003eConfigure your measurement\u003c\/span\u003e\n\u003cp class=\"upl__step-text\"\u003eSelect your store network, activation channel, flight dates, and baseline observation period. Control zones are automatically earmarked and withheld from your media plan.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"upl__step-name\"\u003eCheck out\u003c\/span\u003e\n\u003cp class=\"upl__step-text\"\u003ePay online by card or SEPA transfer. Your invoice is issued immediately, and spatial attribution baseline queries are triggered upon payment validation.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cspan class=\"upl__step-name\"\u003eReceive your attribution workspace\u003c\/span\u003e\n\u003cp class=\"upl__step-text\"\u003eFollowing the 30-day post-flight observation window, your complete Power BI attribution workspace is published and transferred to your team.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003c\/ol\u003e\n\u003cdiv class=\"upl__note\"\u003e\n\u003cstrong\u003eOmnichannel Scope:\u003c\/strong\u003e Geo Lift measures local campaign performance universally across \u003cstrong\u003eDigital, pDOOH, and Print\u003c\/strong\u003e channels. It quantifies incremental visits and real CPV based on geography — it does not manage ad buying or campaign execution.\u003c\/div\u003e\n\u003cdiv class=\"upl__close\"\u003e\n\u003cp\u003eMeasuring total footfall gives credit to traffic you already had.\u003c\/p\u003e\n\u003cspan\u003eConfigure your measurement and prove the real incremental yield of your campaign.\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e","brand":"Ilan Experience","offers":[{"title":"Default Title","offer_id":62878357848394,"sku":null,"price":95.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0918\/2851\/9242\/files\/GeoLiftLogo.png?v=1787582524"},{"product_id":"door-drop-print-targeting-drive-print","title":"Drive Print SC","description":"\u003cdiv class=\"prt\"\u003e\n  \u003cstyle\u003e\n    .prt {\n      --prt-ink: #14143C;\n      --prt-body: #243049;\n      --prt-muted: #5A6478;\n      --prt-accent: #00C8C8;\n      --prt-line: #E4E8F2;\n      --prt-panel: #F8F9FF;\n      --prt-badge-ink: #0B1437;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      color: var(--prt-body);\n      line-height: 1.6;\n      max-width: 860px;\n      margin: 0 auto;\n    }\n    .prt * { box-sizing: border-box; }\n    .prt__eyebrow {\n      display: inline-block;\n      background: var(--prt-accent);\n      color: var(--prt-badge-ink);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-size: 11px;\n      padding: 6px 14px;\n      border-radius: 6px;\n      margin-bottom: 18px;\n    }\n    .prt__lede {\n      font-size: 18px;\n      line-height: 1.55;\n      color: var(--prt-ink);\n      font-weight: 500;\n      margin: 0 0 28px;\n    }\n    .prt__lede strong { font-weight: 700; }\n    .prt__hook {\n      border-left: 3px solid var(--prt-accent);\n      background: var(--prt-panel);\n      border-radius: 0 12px 12px 0;\n      padding: 20px 24px;\n      font-size: 16px;\n      line-height: 1.55;\n      color: var(--prt-ink);\n      margin: 0 0 40px;\n    }\n    .prt__hook strong { font-weight: 700; }\n    .prt__section-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .1em;\n      color: var(--prt-accent);\n      margin: 48px 0 20px;\n      padding-bottom: 10px;\n      border-bottom: 1px solid var(--prt-line);\n    }\n    .prt__section-label:first-of-type { margin-top: 0; }\n    .prt__intro {\n      font-size: 15px;\n      color: var(--prt-body);\n      margin: 0 0 20px;\n      line-height: 1.55;\n    }\n    .prt__intro strong { color: var(--prt-ink); font-weight: 700; }\n\n    \/* --- objectives \/ postures --- *\/\n    .prt__postures {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n      gap: 1px;\n      background: var(--prt-line);\n      border: 1px solid var(--prt-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .prt__posture { background: #FFFFFF; padding: 26px 24px; min-width: 0; }\n    .prt__posture h4 {\n      font-size: 19px; font-weight: 700; color: var(--prt-ink);\n      margin: 0 0 4px; line-height: 1.2;\n    }\n    .prt__posture-kicker {\n      font-size: 11px; font-weight: 700; text-transform: uppercase;\n      letter-spacing: .07em; color: var(--prt-muted); margin: 0 0 14px;\n    }\n    .prt__posture-eg { font-size: 14px; color: var(--prt-body); margin: 0 0 14px; line-height: 1.5; }\n    .prt__posture-q {\n      font-size: 15px; color: var(--prt-ink); font-weight: 600; margin: 0;\n      line-height: 1.45; padding-top: 14px; border-top: 1px solid var(--prt-line);\n    }\n\n    \/* --- value grid --- *\/\n    .prt__value {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--prt-line);\n      border: 1px solid var(--prt-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .prt__value-cell { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .prt__value-cell h4 {\n      font-size: 11px; font-weight: 700; text-transform: uppercase;\n      letter-spacing: .07em; color: var(--prt-muted); margin: 0 0 10px;\n    }\n    .prt__value-cell p { font-size: 15px; color: var(--prt-body); margin: 0; line-height: 1.5; }\n    .prt__value-cell p strong { color: var(--prt-ink); font-weight: 700; }\n\n    \/* --- numbered questions --- *\/\n    .prt__q {\n      display: grid; grid-template-columns: 44px 1fr; gap: 0 18px;\n      align-items: start; margin-bottom: 26px;\n    }\n    .prt__q:last-child { margin-bottom: 0; }\n    .prt__q-num {\n      font-size: 28px; font-weight: 700; color: var(--prt-accent);\n      line-height: 1; letter-spacing: -.02em;\n    }\n    .prt__q-name {\n      font-size: 17px; font-weight: 700; color: var(--prt-ink);\n      margin: 0 0 6px; line-height: 1.3;\n    }\n    .prt__q-text { font-size: 15px; color: var(--prt-body); line-height: 1.5; margin: 0; }\n    .prt__q-text strong { color: var(--prt-ink); font-weight: 700; }\n\n    \/* --- pages \/ tiles --- *\/\n    .prt__pages {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 1px;\n      background: var(--prt-line);\n      border: 1px solid var(--prt-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .prt__page { background: #FFFFFF; padding: 20px 22px; min-width: 0; }\n    .prt__page h5 { font-size: 14px; font-weight: 700; color: var(--prt-ink); margin: 0 0 6px; }\n    .prt__page p { font-size: 14px; color: var(--prt-muted); margin: 0; line-height: 1.45; }\n\n    \/* --- modules --- *\/\n    .prt__mod {\n      border-left: 3px solid var(--prt-accent);\n      padding: 4px 0 4px 22px;\n      margin-bottom: 26px;\n    }\n    .prt__mod:last-child { margin-bottom: 0; }\n    .prt__mod-name {\n      font-size: 17px; font-weight: 700; color: var(--prt-ink);\n      margin: 0 0 6px; line-height: 1.25;\n    }\n    .prt__mod-val { font-size: 15px; color: var(--prt-body); line-height: 1.5; margin: 0; }\n    .prt__mod-val strong { color: var(--prt-ink); font-weight: 700; }\n\n    \/* --- steps --- *\/\n    .prt__steps { list-style: none; counter-reset: prtstep; padding: 0; margin: 0; }\n    .prt__steps li {\n      counter-increment: prtstep; position: relative;\n      padding: 0 0 22px 52px; margin: 0;\n    }\n    .prt__steps li:last-child { padding-bottom: 0; }\n    .prt__steps li::before {\n      content: counter(prtstep);\n      position: absolute; left: 0; top: 0;\n      width: 34px; height: 34px;\n      background: var(--prt-ink); color: #FFFFFF;\n      font-size: 14px; font-weight: 700; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .prt__steps li::after {\n      content: \"\"; position: absolute; left: 16px; top: 40px; bottom: 4px;\n      width: 2px; background: var(--prt-line);\n    }\n    .prt__steps li:last-child::after { display: none; }\n    .prt__step-name {\n      font-size: 15px; font-weight: 700; color: var(--prt-ink);\n      display: block; margin: 6px 0 4px;\n    }\n    .prt__step-text { font-size: 15px; margin: 0; line-height: 1.5; }\n\n    \/* --- note --- *\/\n    .prt__note {\n      background: var(--prt-panel);\n      border: 1px solid var(--prt-line);\n      border-radius: 12px;\n      padding: 18px 20px;\n      font-size: 14px;\n      color: var(--prt-muted);\n      margin-top: 24px;\n    }\n    .prt__note strong { color: var(--prt-ink); font-weight: 700; }\n\n    \/* --- closing --- *\/\n    .prt__close {\n      background: var(--prt-ink);\n      border-radius: 14px;\n      padding: 32px 30px;\n      margin-top: 48px;\n      text-align: center;\n    }\n    .prt__close p {\n      color: #FFFFFF; font-size: 17px; line-height: 1.5;\n      margin: 0 0 6px; font-weight: 600;\n    }\n    .prt__close span {\n      display: block; color: #A9B4CC; font-size: 14px; line-height: 1.5;\n    }\n  \u003c\/style\u003e\n\n  \u003cspan class=\"prt__eyebrow\"\u003eDrive Print — Targeted Door-Drop Distribution\u003c\/span\u003e\n\n  \u003cp class=\"prt__lede\"\u003e\n    \u003cstrong\u003eDrive Print qualifies your territory so the distribution serves the objective you actually have.\u003c\/strong\u003e\n    It ranks every neighbourhood of your catchment area, assigns it a media posture, counts the households\n    living there, and hands your distributor a perimeter built on measured customer origins rather than on a\n    circle drawn around the store.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"prt__hook\"\u003e\n    A door-drop is priced per thousand, so the reflex is to print more and spread wider. But the perimeter is\n    the entire targeting: once the leaflets leave the depot, \u003cstrong\u003eevery euro is already committed to a\n    geography chosen weeks earlier\u003c\/strong\u003e. Drive Print makes that choice on measured data instead of a radius\n    and a habit.\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eThe objective decides the perimeter\u003c\/p\u003e\n  \u003cp class=\"prt__intro\"\u003e\n    A catalogue announcing a sale, a leaflet opening a new store and a flyer defending a losing neighbourhood\n    are three different operations that happen to use the same paper. \u003cstrong\u003eEach neighbourhood receives one\n    posture, and the posture tells you which objective that neighbourhood can serve\u003c\/strong\u003e — so the same\n    budget produces a distribution built for one purpose rather than an average of three.\n  \u003c\/p\u003e\n  \u003cdiv class=\"prt__postures\"\u003e\n    \u003cdiv class=\"prt__posture\"\u003e\n      \u003ch4\u003eConquest\u003c\/h4\u003e\n      \u003cp class=\"prt__posture-kicker\"\u003eWin new ground\u003c\/p\u003e\n      \u003cp class=\"prt__posture-eg\"\u003eNeighbourhoods outside your core that are measurably gaining ground, filtered on a volume floor so a big percentage on a thin zone never earns a print run.\u003c\/p\u003e\n      \u003cp class=\"prt__posture-q\"\u003eThe only source of genuinely additional traffic.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__posture\"\u003e\n      \u003ch4\u003eLoyalty\u003c\/h4\u003e\n      \u003cp class=\"prt__posture-kicker\"\u003eSustain the base\u003c\/p\u003e\n      \u003cp class=\"prt__posture-eg\"\u003eThe core that holds. Already captured and already loyal — a catalogue here drives frequency and basket rather than acquisition. Ranked by weight, because what you sustain is mass.\u003c\/p\u003e\n      \u003cp class=\"prt__posture-q\"\u003eFrequency, not conquest.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__posture\"\u003e\n      \u003ch4\u003eDefence\u003c\/h4\u003e\n      \u003cp class=\"prt__posture-kicker\"\u003eRecover your own ground\u003c\/p\u003e\n      \u003cp class=\"prt__posture-eg\"\u003eCore neighbourhoods slipping away. They come to you and no one else — the loss is yours, which is precisely why the lever is yours too. Ranked by what the erosion actually costs you.\u003c\/p\u003e\n      \u003cp class=\"prt__posture-q\"\u003eA decline you can still reverse.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__note\"\u003e\n    \u003cstrong\u003eOne exception, by design:\u003c\/strong\u003e if your store is a unit inside a shopping centre, the centre —\n    not the store — is the destination. A neighbourhood that stops coming to the centre cannot be brought back\n    by the tenant alone, whatever the leaflet says. In that configuration the third posture becomes\n    \u003cstrong\u003eExclusion\u003c\/strong\u003e: those perimeters are named, quantified, and taken out of the print run rather\n    than defended. The report applies the right posture automatically, based on the venue you select.\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eValue proposition\u003c\/p\u003e\n  \u003cdiv class=\"prt__value\"\u003e\n    \u003cdiv class=\"prt__value-cell\"\u003e\n      \u003ch4\u003eOperational objective\u003c\/h4\u003e\n      \u003cp\u003eStop printing for households that \u003cstrong\u003ewill never walk through your door\u003c\/strong\u003e, and print more for those that already do.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__value-cell\"\u003e\n      \u003ch4\u003eIncluded in every report\u003c\/h4\u003e\n      \u003cp\u003eThe \u003cstrong\u003ehousehold count of every qualified neighbourhood\u003c\/strong\u003e, with income brackets and age groups. A door-drop is quoted per thousand homes, so the homes are part of the base product.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__value-cell\"\u003e\n      \u003ch4\u003eDistributor-agnostic\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eWorks with the distributor you already use.\u003c\/strong\u003e Flow defines the optimal perimeter; your operator handles rounds, timing and delivery.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eThe three questions answered\u003c\/p\u003e\n\n  \u003cdiv class=\"prt__q\"\u003e\n    \u003cdiv class=\"prt__q-num\"\u003e1\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"prt__q-name\"\u003eWhich neighbourhoods should receive it?\u003c\/p\u003e\n      \u003cp class=\"prt__q-text\"\u003eEach posture reports its qualified zone count, its share of capturable traffic and the households it contains. The recommended posture for the period is stated explicitly, with the reasoning behind it. \u003cstrong\u003eFlow qualifies the territory; the split between objectives remains your arbitration.\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__q\"\u003e\n    \u003cdiv class=\"prt__q-num\"\u003e2\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"prt__q-name\"\u003eHow wide should the distribution go?\u003c\/p\u003e\n      \u003cp class=\"prt__q-text\"\u003eEach posture is delivered on coverage tiers — \u003cstrong\u003ePerformance, Efficiency, Reach\u003c\/strong\u003e — and each tier contains the one before it. Widening the perimeter never means abandoning the core. Print is the least reversible channel there is: once the volume is quoted and the paper is printed, the perimeter is fixed. The tiers let you choose it with numbers rather than with a compass.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__q\"\u003e\n    \u003cdiv class=\"prt__q-num\"\u003e3\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"prt__q-name\"\u003eHow many copies does that actually mean?\u003c\/p\u003e\n      \u003cp class=\"prt__q-text\"\u003eEvery tier of every posture carries its household total, so the perimeter converts directly into a print volume. \u003cstrong\u003eYou go to your distributor with a number, not an estimate\u003c\/strong\u003e — and you know, before quoting, what widening the perimeter by one tier would cost you.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eInside the report\u003c\/p\u003e\n  \u003cdiv class=\"prt__pages\"\u003e\n    \u003cdiv class=\"prt__page\"\u003e\n      \u003ch5\u003ePostures\u003c\/h5\u003e\n      \u003cp\u003eThe postures, their qualified zone counts, their household totals and their coverage tiers, with the allocation guidance in plain language.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__page\"\u003e\n      \u003ch5\u003eGeo-planning\u003c\/h5\u003e\n      \u003cp\u003eDistribution dates, budget, cost per thousand — and the map of what the perimeter actually covers, updating as you move the cursors.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__page\"\u003e\n      \u003ch5\u003eExport\u003c\/h5\u003e\n      \u003cp\u003eThe perimeter itself: selected zones, ranking, household counts and distribution window, in the format your distributor works with.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eFour export formats\u003c\/p\u003e\n  \u003cp class=\"prt__intro\"\u003e\n    The same selection, expressed in whichever geography your distributor plans on. \u003cstrong\u003eChoose the most\n    precise format your operator supports\u003c\/strong\u003e — each step down from polygon widens the perimeter and\n    re-admits households the postures deliberately left out, which on this channel is paper you pay for.\n  \u003c\/p\u003e\n  \u003cdiv class=\"prt__pages\"\u003e\n    \u003cdiv class=\"prt__page\"\u003e\n      \u003ch5\u003ePolygon\u003c\/h5\u003e\n      \u003cp\u003eThe exact boundary of every selected neighbourhood. The only format that carries the selection without loss.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__page\"\u003e\n      \u003ch5\u003ePostal code\u003c\/h5\u003e\n      \u003cp\u003eSelected zones mapped to postal geography — the geography most distribution networks are organised on.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__page\"\u003e\n      \u003ch5\u003eRadius\u003c\/h5\u003e\n      \u003cp\u003eCentre point and distance per zone. Convenient, but a circle necessarily re-includes ground the postures excluded.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__page\"\u003e\n      \u003ch5\u003eCity\u003c\/h5\u003e\n      \u003cp\u003eMunicipality-level distribution. The fallback where no sub-city rounds exist.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eWhat you will receive\u003c\/p\u003e\n\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eA perimeter your distributor can quote from\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eThe export is built to be handed over, not retyped. Zones, ranking, household counts and distribution window travel together, so \u003cstrong\u003ethe perimeter that reaches the depot is the perimeter that was analysed\u003c\/strong\u003e.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eA volume, not a guess\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003ePrint is quoted per thousand homes. Because every qualified neighbourhood carries its household total, \u003cstrong\u003ethe perimeter and the print run are the same decision\u003c\/strong\u003e — and you see the cost of every extra tier before committing to it.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eThe channel where geography is everything\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eThere is no bid adjustment on a leaflet and no mid-flight optimisation. \u003cstrong\u003eThe perimeter is decided once, and it is the whole of the targeting.\u003c\/strong\u003e Which makes getting it right worth more here than anywhere else.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eA measured territory, not a declared one\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003ePostures derive from observed visitor origins at neighbourhood granularity — not from declared catchment, not from a drawn radius, not from panel projection.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eAn honest reading\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eDrive Print defines where to distribute. It does not claim what the distribution will produce. \u003cstrong\u003eAny statement of media effect requires control zones — and that is a separate, explicit decision.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eData accuracy\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eAggregated, privacy-by-design mobility data. \u003cstrong\u003eDeduplicated unique visitors at neighbourhood granularity\u003c\/strong\u003e — audience captured, not footsteps counted.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eTwo options\u003c\/p\u003e\n  \u003cp class=\"prt__intro\"\u003e\n    Two questions that do not always arise. Each is added in the configurator and leaves the structure of the\n    report untouched.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eAlways-on — prospection, properly aimed\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eNeighbourhoods that already send you traffic while a large share of their households have never come. Weakly captured ground, whatever its rank. \u003cstrong\u003eA leaflet dropped at a home that has never visited you is prospection by definition, so this is the posture most planners arm first on this channel\u003c\/strong\u003e — it names those households and tells you how many there are. The three core postures and their tiers are unaffected if you skip it.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eUplift — incremental measurement\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eHolds a matched set of neighbourhoods out of the distribution and compares the two groups afterwards, returning incremental visits, uplift percentage and real cost per visit. \u003cstrong\u003eIt must be armed before the run\u003c\/strong\u003e — control zones are withheld at planning time, so Uplift cannot be added once the leaflets are out. It costs coverage: the withheld neighbourhoods receive nothing, and you trade a share of the perimeter for the ability to know what the rest produced. Measurement continues for one month past the last day of distribution.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"prt__note\"\u003e\n    \u003cstrong\u003eWhy this works particularly well on print:\u003c\/strong\u003e in programmatic buying, delivery drifts — the\n    platform arbitrates, and the perimeter actually exposed is never exactly the one planned. A door-drop is\n    deterministic: you know which neighbourhoods received the leaflet and which did not, to the date. The\n    comparison still rests on the assumption that both groups were moving in parallel beforehand — an\n    assumption the report displays rather than asserts. It is incrementality, not attribution.\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eCoverage\u003c\/p\u003e\n  \u003cdiv class=\"prt__value\"\u003e\n    \u003cdiv class=\"prt__value-cell\"\u003e\n      \u003ch4\u003eAvailable in the configurator\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eShopping centres and retail parks\u003c\/strong\u003e, across every market we cover. Select yours by name and the catchment area is built for you — no eligibility check required.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"prt__value-cell\"\u003e\n      \u003ch4\u003eAvailable on request\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eStandalone stores and high streets.\u003c\/strong\u003e Eligibility depends on surface area and geographic separation — contact us and we confirm it before you commit.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eDelivery \u0026amp; secure access\u003c\/p\u003e\n\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eDelivered within 72 business hours\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eYour report is built, published and handed over to your team \u003cstrong\u003ewithin 72 business hours of payment being received\u003c\/strong\u003e. No quote, no scoping calls, no back-and-forth.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eEnterprise environment\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eDeveloped and hosted securely within the \u003cstrong\u003eMicrosoft Power BI\u003c\/strong\u003e ecosystem.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eDedicated workspace, unlimited duration\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eYour data is isolated in a private, encrypted workspace restricted to your authorised staff. No expiry and no recurring access fee — \u003cstrong\u003ethe deliverable is yours\u003c\/strong\u003e.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"prt__mod\"\u003e\n    \u003cp class=\"prt__mod-name\"\u003eLicensing requirement\u003c\/p\u003e\n    \u003cp class=\"prt__mod-val\"\u003eOne active \u003cstrong\u003eMicrosoft Power BI Pro\u003c\/strong\u003e license per end user, at the client's expense. Continuous access is guaranteed as long as this license is maintained.\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"prt__section-label\"\u003eHow to order\u003c\/p\u003e\n  \u003cp class=\"prt__intro\"\u003e\n    Drive Print is ordered directly online. \u003cstrong\u003eThe configurator builds your scope step by step and the\n    price adjusts as you go\u003c\/strong\u003e — no quote, no purchase order, no waiting.\n  \u003c\/p\u003e\n  \u003col class=\"prt__steps\"\u003e\n    \u003cli\u003e\n      \u003cspan class=\"prt__step-name\"\u003eConfigure your distribution\u003c\/span\u003e\n      \u003cp class=\"prt__step-text\"\u003eSelect your location, the period to read, your distribution dates and your export format. Add Uplift here if you intend to measure the operation — it cannot be added later. The price updates at every step.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"prt__step-name\"\u003eCheck out\u003c\/span\u003e\n      \u003cp class=\"prt__step-text\"\u003ePay online by card or SEPA transfer. Your invoice is issued immediately, and the data queries are triggered the moment your payment clears.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"prt__step-name\"\u003eReceive your workspace and your perimeter\u003c\/span\u003e\n      \u003cp class=\"prt__step-text\"\u003eWithin 72 business hours, your Power BI workspace is published and transferred to your team — postures qualified, household volumes set, perimeter ready to hand to your distributor.\u003c\/p\u003e\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\n  \u003cdiv class=\"prt__note\"\u003e\n    \u003cstrong\u003eScope:\u003c\/strong\u003e Drive Print covers door-drop and catalogue distribution. It defines the optimal\n    perimeter and the volume that follows from it — it does not print, does not distribute and holds no\n    contract with an operator. Online and outdoor activation are served by the same territorial method under\n    \u003cstrong\u003eDrive Digital\u003c\/strong\u003e and \u003cstrong\u003eDrive pDOOH\u003c\/strong\u003e.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"prt__close\"\u003e\n    \u003cp\u003eEvery thousand leaflets dropped outside your catchment area is a thousand you paid to throw away.\u003c\/p\u003e\n    \u003cspan\u003eConfigure your distribution and receive it within 72 business hours.\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e","brand":"Ilan Experience","offers":[{"title":"Default Title","offer_id":62980132700490,"sku":null,"price":295.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0918\/2851\/9242\/files\/PrintLogo.png?v=1786976028"},{"product_id":"competitive-benchmark","title":"Benchmark","description":"\u003cstyle\u003e\n    .bmk {\n      --bmk-ink: #14143C;\n      --bmk-body: #243049;\n      --bmk-muted: #5A6478;\n      --bmk-accent: #00C8C8;\n      --bmk-line: #E4E8F2;\n      --bmk-panel: #F8F9FF;\n      --bmk-badge-ink: #0B1437;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      color: var(--bmk-body);\n      line-height: 1.6;\n      max-width: 860px;\n      margin: 0 auto;\n    }\n    .bmk * { box-sizing: border-box; }\n    .bmk__eyebrow {\n      display: inline-block;\n      background: var(--bmk-accent);\n      color: var(--bmk-badge-ink);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-size: 11px;\n      padding: 6px 14px;\n      border-radius: 6px;\n      margin-bottom: 18px;\n    }\n    .bmk__lede {\n      font-size: 18px;\n      line-height: 1.55;\n      color: var(--bmk-ink);\n      font-weight: 500;\n      margin: 0 0 28px;\n    }\n    .bmk__lede strong { font-weight: 700; }\n    .bmk__hook {\n      border-left: 3px solid var(--bmk-accent);\n      background: var(--bmk-panel);\n      border-radius: 0 12px 12px 0;\n      padding: 20px 24px;\n      font-size: 16px;\n      line-height: 1.55;\n      color: var(--bmk-ink);\n      margin: 0 0 40px;\n    }\n    .bmk__hook strong { font-weight: 700; }\n    .bmk__section-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .1em;\n      color: var(--bmk-accent);\n      margin: 48px 0 20px;\n      padding-bottom: 10px;\n      border-bottom: 1px solid var(--bmk-line);\n    }\n    .bmk__intro {\n      font-size: 15px;\n      color: var(--bmk-body);\n      margin: 0 0 20px;\n      line-height: 1.55;\n    }\n    .bmk__intro strong { color: var(--bmk-ink); font-weight: 700; }\n\n    .bmk__cta {\n      display: inline-block;\n      background: var(--bmk-accent);\n      color: var(--bmk-badge-ink) !important;\n      font-family: inherit;\n      font-size: 15px;\n      font-weight: 700;\n      line-height: 1.2;\n      letter-spacing: .02em;\n      padding: 15px 30px;\n      border-radius: 8px;\n      border: 0;\n      text-decoration: none !important;\n      cursor: pointer;\n      transition: transform .15s ease, box-shadow .15s ease;\n    }\n    .bmk__cta:hover, .bmk__cta:focus {\n      transform: translateY(-1px);\n      box-shadow: 0 6px 18px rgba(0, 200, 200, .35);\n      text-decoration: none !important;\n    }\n    .bmk__cta-bar {\n      display: flex;\n      flex-wrap: wrap;\n      align-items: center;\n      justify-content: space-between;\n      gap: 16px;\n      background: var(--bmk-panel);\n      border: 1px solid var(--bmk-line);\n      border-radius: 12px;\n      padding: 20px 24px;\n      margin: 0 0 40px;\n    }\n    .bmk__cta-bar p {\n      font-size: 15px;\n      color: var(--bmk-ink);\n      font-weight: 600;\n      margin: 0;\n      line-height: 1.4;\n      flex: 1 1 240px;\n      min-width: 0;\n    }\n    .bmk__close .bmk__cta { margin-top: 22px; }\n\n    .bmk__value {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--bmk-line);\n      border: 1px solid var(--bmk-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .bmk__value-cell { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .bmk__value-cell h4 {\n      font-size: 11px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .07em;\n      color: var(--bmk-muted);\n      margin: 0 0 10px;\n    }\n    .bmk__value-cell p { font-size: 15px; color: var(--bmk-body); margin: 0; line-height: 1.5; }\n    .bmk__value-cell p strong { color: var(--bmk-ink); font-weight: 700; }\n\n    .bmk__q {\n      display: grid;\n      grid-template-columns: 44px 1fr;\n      gap: 0 18px;\n      align-items: start;\n      margin-bottom: 26px;\n    }\n    .bmk__q:last-child { margin-bottom: 0; }\n    .bmk__q-num {\n      font-size: 28px; font-weight: 700; color: var(--bmk-accent);\n      line-height: 1; letter-spacing: -.02em;\n    }\n    .bmk__q-name {\n      font-size: 17px; font-weight: 700; color: var(--bmk-ink);\n      margin: 0 0 6px; line-height: 1.3;\n    }\n    .bmk__q-text { font-size: 15px; color: var(--bmk-body); line-height: 1.5; margin: 0; }\n    .bmk__q-text strong { color: var(--bmk-ink); font-weight: 700; }\n\n    .bmk__pages {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 1px;\n      background: var(--bmk-line);\n      border: 1px solid var(--bmk-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .bmk__page { background: #FFFFFF; padding: 20px 22px; min-width: 0; }\n    .bmk__page h5 { font-size: 14px; font-weight: 700; color: var(--bmk-ink); margin: 0 0 6px; }\n    .bmk__page p { font-size: 14px; color: var(--bmk-muted); margin: 0; line-height: 1.45; }\n\n    .bmk__mod {\n      border-left: 3px solid var(--bmk-accent);\n      padding: 4px 0 4px 22px;\n      margin-bottom: 26px;\n    }\n    .bmk__mod:last-child { margin-bottom: 0; }\n    .bmk__mod-name {\n      font-size: 17px; font-weight: 700; color: var(--bmk-ink);\n      margin: 0 0 6px; line-height: 1.25;\n    }\n    .bmk__mod-val { font-size: 15px; color: var(--bmk-body); line-height: 1.5; margin: 0; }\n    .bmk__mod-val strong { color: var(--bmk-ink); font-weight: 700; }\n\n    .bmk__steps { list-style: none; counter-reset: bmkstep; padding: 0; margin: 0; }\n    .bmk__steps li {\n      counter-increment: bmkstep;\n      position: relative;\n      padding: 0 0 22px 52px;\n      margin: 0;\n    }\n    .bmk__steps li:last-child { padding-bottom: 0; }\n    .bmk__steps li::before {\n      content: counter(bmkstep);\n      position: absolute; left: 0; top: 0;\n      width: 34px; height: 34px;\n      background: var(--bmk-ink); color: #FFFFFF;\n      font-size: 14px; font-weight: 700; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .bmk__steps li::after {\n      content: \"\"; position: absolute; left: 16px; top: 40px; bottom: 4px;\n      width: 2px; background: var(--bmk-line);\n    }\n    .bmk__steps li:last-child::after { display: none; }\n    .bmk__step-name {\n      font-size: 15px; font-weight: 700; color: var(--bmk-ink);\n      display: block; margin: 6px 0 4px;\n    }\n    .bmk__step-text { font-size: 15px; margin: 0; line-height: 1.5; }\n\n    .bmk__note {\n      background: var(--bmk-panel);\n      border: 1px solid var(--bmk-line);\n      border-radius: 12px;\n      padding: 18px 20px;\n      font-size: 14px;\n      color: var(--bmk-muted);\n      margin-top: 24px;\n    }\n    .bmk__note strong { color: var(--bmk-ink); font-weight: 700; }\n\n    .bmk__close {\n      background: var(--bmk-ink);\n      border-radius: 14px;\n      padding: 32px 30px;\n      margin-top: 48px;\n      text-align: center;\n    }\n    .bmk__close p {\n      color: #FFFFFF;\n      font-size: 17px;\n      line-height: 1.5;\n      margin: 0 0 6px;\n      font-weight: 600;\n    }\n    .bmk__close span {\n      display: block;\n      color: #A9B4CC;\n      font-size: 14px;\n      line-height: 1.5;\n    }\n  \u003c\/style\u003e\n\u003cdiv class=\"bmk\"\u003e\n\u003cspan class=\"bmk__eyebrow\"\u003eCompetitive Benchmark — Optional module\u003c\/span\u003e\n\u003cp class=\"bmk__lede\"\u003e\u003cstrong\u003eCompetitive Benchmark reads a comparable site on the same territory, over the same period, with the same method.\u003c\/strong\u003e It turns your result into a relative one: not just what your catchment area did, but what it did.\u003c\/p\u003e\n\u003c\/div\u003e","brand":"Ilan Experience","offers":[{"title":"Default Title","offer_id":63335116308810,"sku":null,"price":95.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0918\/2851\/9242\/files\/BenchmarkLogo.png?v=1787664346"},{"product_id":"engagement-module","title":"Engagement","description":"\u003cdiv class=\"eng\"\u003e\n  \u003cstyle\u003e\n    .eng {\n      --eng-ink: #14143C;\n      --eng-body: #243049;\n      --eng-muted: #5A6478;\n      --eng-accent: #00C8C8;\n      --eng-line: #E4E8F2;\n      --eng-panel: #F8F9FF;\n      --eng-badge-ink: #0B1437;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      color: var(--eng-body);\n      line-height: 1.6;\n      max-width: 860px;\n      margin: 0 auto;\n    }\n    .eng * { box-sizing: border-box; }\n    .eng__eyebrow {\n      display: inline-block;\n      background: var(--eng-accent);\n      color: var(--eng-badge-ink);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-size: 11px;\n      padding: 6px 14px;\n      border-radius: 6px;\n      margin-bottom: 18px;\n    }\n    .eng__lede {\n      font-size: 18px;\n      line-height: 1.55;\n      color: var(--eng-ink);\n      font-weight: 500;\n      margin: 0 0 28px;\n    }\n    .eng__lede strong { font-weight: 700; }\n    .eng__hook {\n      border-left: 3px solid var(--eng-accent);\n      background: var(--eng-panel);\n      border-radius: 0 12px 12px 0;\n      padding: 20px 24px;\n      font-size: 16px;\n      line-height: 1.55;\n      color: var(--eng-ink);\n      margin: 0 0 40px;\n    }\n    .eng__hook strong { font-weight: 700; }\n    .eng__section-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .1em;\n      color: var(--eng-accent);\n      margin: 48px 0 20px;\n      padding-bottom: 10px;\n      border-bottom: 1px solid var(--eng-line);\n    }\n    .eng__intro {\n      font-size: 15px;\n      color: var(--eng-body);\n      margin: 0 0 20px;\n      line-height: 1.55;\n    }\n    .eng__intro strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__bands {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--eng-line);\n      border: 1px solid var(--eng-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .eng__band { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .eng__band h4 {\n      font-size: 19px;\n      font-weight: 700;\n      color: var(--eng-ink);\n      margin: 0 0 4px;\n      line-height: 1.2;\n    }\n    .eng__band-kicker {\n      font-size: 11px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .07em;\n      color: var(--eng-muted);\n      margin: 0 0 12px;\n    }\n    .eng__band p { font-size: 14px; color: var(--eng-body); margin: 0; line-height: 1.5; }\n\n    .eng__value {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--eng-line);\n      border: 1px solid var(--eng-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .eng__value-cell { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .eng__value-cell h4 {\n      font-size: 11px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .07em;\n      color: var(--eng-muted);\n      margin: 0 0 10px;\n    }\n    .eng__value-cell p { font-size: 15px; color: var(--eng-body); margin: 0; line-height: 1.5; }\n    .eng__value-cell p strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__q {\n      display: grid;\n      grid-template-columns: 44px 1fr;\n      gap: 0 18px;\n      align-items: start;\n      margin-bottom: 26px;\n    }\n    .eng__q:last-child { margin-bottom: 0; }\n    .eng__q-num {\n      font-size: 28px; font-weight: 700; color: var(--eng-accent);\n      line-height: 1; letter-spacing: -.02em;\n    }\n    .eng__q-name {\n      font-size: 17px; font-weight: 700; color: var(--eng-ink);\n      margin: 0 0 6px; line-height: 1.3;\n    }\n    .eng__q-text { font-size: 15px; color: var(--eng-body); line-height: 1.5; margin: 0; }\n    .eng__q-text strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__pages {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 1px;\n      background: var(--eng-line);\n      border: 1px solid var(--eng-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .eng__page { background: #FFFFFF; padding: 20px 22px; min-width: 0; }\n    .eng__page h5 { font-size: 14px; font-weight: 700; color: var(--eng-ink); margin: 0 0 6px; }\n    .eng__page p { font-size: 14px; color: var(--eng-muted); margin: 0; line-height: 1.45; }\n\n    .eng__mod {\n      border-left: 3px solid var(--eng-accent);\n      padding: 4px 0 4px 22px;\n      margin-bottom: 26px;\n    }\n    .eng__mod:last-child { margin-bottom: 0; }\n    .eng__mod-name {\n      font-size: 17px; font-weight: 700; color: var(--eng-ink);\n      margin: 0 0 6px; line-height: 1.25;\n    }\n    .eng__mod-val { font-size: 15px; color: var(--eng-body); line-height: 1.5; margin: 0; }\n    .eng__mod-val strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__steps { list-style: none; counter-reset: engstep; padding: 0; margin: 0; }\n    .eng__steps li {\n      counter-increment: engstep;\n      position: relative;\n      padding: 0 0 22px 52px;\n      margin: 0;\n    }\n    .eng__steps li:last-child { padding-bottom: 0; }\n    .eng__steps li::before {\n      content: counter(engstep);\n      position: absolute; left: 0; top: 0;\n      width: 34px; height: 34px;\n      background: var(--eng-ink); color: #FFFFFF;\n      font-size: 14px; font-weight: 700; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .eng__steps li::after {\n      content: \"\"; position: absolute; left: 16px; top: 40px; bottom: 4px;\n      width: 2px; background: var(--eng-line);\n    }\n    .eng__steps li:last-child::after { display: none; }\n    .eng__step-name {\n      font-size: 15px; font-weight: 700; color: var(--eng-ink);\n      display: block; margin: 6px 0 4px;\n    }\n    .eng__step-text { font-size: 15px; margin: 0; line-height: 1.5; }\n\n    .eng__note {\n      background: var(--eng-panel);\n      border: 1px solid var(--eng-line);\n      border-radius: 12px;\n      padding: 18px 20px;\n      font-size: 14px;\n      color: var(--eng-muted);\n      margin-top: 24px;\n    }\n    .eng__note strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__close {\n      background: var(--eng-ink);\n      border-radius: 14px;\n      padding: 32px 30px;\n      margin-top: 48px;\n      text-align: center;\n    }\n    .eng__close p {\n      color: #FFFFFF;\n      font-size: 17px;\n      line-height: 1.5;\n      margin: 0 0 6px;\n      font-weight: 600;\n    }\n    .eng__close span {\n      display: block;\n      color: #A9B4CC;\n      font-size: 14px;\n      line-height: 1.5;\n    }\n  \u003c\/style\u003e\n\n  \u003cspan class=\"eng__eyebrow\"\u003eEngagement — Optional module\u003c\/span\u003e\n\n  \u003cp class=\"eng__lede\"\u003e\n    \u003cstrong\u003eEngagement measures how long visits last, and where the long ones come from.\u003c\/strong\u003e\n    It adds a second dimension to your reading: not only how many visitors your catchment area sends,\n    but how much time they leave behind once they arrive.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"eng__hook\"\u003e\n    Two neighbourhoods send you the same number of visitors. One comes for twenty minutes, the other for\n    two hours. They are not the same audience, they do not build the same basket, and\n    \u003cstrong\u003ethey do not deserve the same budget\u003c\/strong\u003e. Counting visits alone cannot tell them apart.\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eHow duration is read\u003c\/p\u003e\n  \u003cp class=\"eng__intro\"\u003e\n    Visit duration is not averaged into a single figure, because an average hides the very thing you are\n    looking for. \u003cstrong\u003eVisits are distributed across bands\u003c\/strong\u003e, and it is the shape of that\n    distribution that carries the reading.\n  \u003c\/p\u003e\n  \u003cdiv class=\"eng__bands\"\u003e\n    \u003cdiv class=\"eng__band\"\u003e\n      \u003ch4\u003eShort\u003c\/h4\u003e\n      \u003cp class=\"eng__band-kicker\"\u003ePass-through\u003c\/p\u003e\n      \u003cp\u003eA targeted errand, a single purchase, a stop on the way to somewhere else. Real traffic, low value per visit.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__band\"\u003e\n      \u003ch4\u003eMedium\u003c\/h4\u003e\n      \u003cp class=\"eng__band-kicker\"\u003eIntent\u003c\/p\u003e\n      \u003cp\u003eA deliberate trip with a purpose. The band where most of the commercial value of a site is built.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__band\"\u003e\n      \u003ch4\u003eLong\u003c\/h4\u003e\n      \u003cp class=\"eng__band-kicker\"\u003eDestination\u003c\/p\u003e\n      \u003cp\u003eThe site is the outing itself. Multi-store visits, leisure, catering — the behaviour a destination is built to produce.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eThe three questions answered\u003c\/p\u003e\n\n  \u003cdiv class=\"eng__q\"\u003e\n    \u003cdiv class=\"eng__q-num\"\u003e1\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"eng__q-name\"\u003eAre you a destination or a stop?\u003c\/p\u003e\n      \u003cp class=\"eng__q-text\"\u003eThe distribution across bands tells you which one your site actually is — \u003cstrong\u003ewhich is not always the one it was designed to be\u003c\/strong\u003e. The verdict is read against the reference level of the observed period.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"eng__q\"\u003e\n    \u003cdiv class=\"eng__q-num\"\u003e2\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"eng__q-name\"\u003eWhich neighbourhoods send you time?\u003c\/p\u003e\n      \u003cp class=\"eng__q-text\"\u003eDuration is read neighbourhood by neighbourhood, not only for the site as a whole. Some zones send few visitors but long visits; \u003cstrong\u003etheir weight in your budget should not follow their weight in visits\u003c\/strong\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"eng__q\"\u003e\n    \u003cdiv class=\"eng__q-num\"\u003e3\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"eng__q-name\"\u003eDid the operation change behaviour, or only volume?\u003c\/p\u003e\n      \u003cp class=\"eng__q-text\"\u003eAn operation that lifts visits while shortening them has moved traffic without deepening it. \u003cstrong\u003eVolume and duration moving together is a different result from volume moving alone.\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eInside the module\u003c\/p\u003e\n  \u003cdiv class=\"eng__pages\"\u003e\n    \u003cdiv class=\"eng__page\"\u003e\n      \u003ch5\u003eDistribution\u003c\/h5\u003e\n      \u003cp\u003eVisits across duration bands, against the reference level of the period.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__page\"\u003e\n      \u003ch5\u003eBy neighbourhood\u003c\/h5\u003e\n      \u003cp\u003eDuration profile of each zone, alongside the volume it sends.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__page\"\u003e\n      \u003ch5\u003eTime contribution\u003c\/h5\u003e\n      \u003cp\u003eZones ranked by time delivered rather than by visits delivered.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__page\"\u003e\n      \u003ch5\u003eShift\u003c\/h5\u003e\n      \u003cp\u003eHow the distribution moved over the observed window.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eWhat the module does not claim\u003c\/p\u003e\n\n  \u003cdiv class=\"eng__mod\"\u003e\n    \u003cp class=\"eng__mod-name\"\u003eTime is not spend\u003c\/p\u003e\n    \u003cp class=\"eng__mod-val\"\u003eA long visit correlates with a larger basket in most retail formats, but the module measures time and only time. \u003cstrong\u003eIt never converts duration into revenue.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"eng__mod\"\u003e\n    \u003cp class=\"eng__mod-name\"\u003eA perimeter, not a path\u003c\/p\u003e\n    \u003cp class=\"eng__mod-val\"\u003eDuration is measured on the observed perimeter as a whole. \u003cstrong\u003eThe module does not track movement inside the site\u003c\/strong\u003e, does not identify which stores were visited, and does not reconstruct a route.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"eng__mod\"\u003e\n    \u003cp class=\"eng__mod-name\"\u003eSame privacy standard\u003c\/p\u003e\n    \u003cp class=\"eng__mod-val\"\u003eAggregated, privacy-by-design mobility data, read at neighbourhood granularity. \u003cstrong\u003eAdding duration adds no personal data of any kind.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eAvailability\u003c\/p\u003e\n  \u003cdiv class=\"eng__value\"\u003e\n    \u003cdiv class=\"eng__value-cell\"\u003e\n      \u003ch4\u003eCompatible products\u003c\/h4\u003e\n      \u003cp\u003eAvailable on \u003cstrong\u003eevery Flow Connect and Flow Drive product\u003c\/strong\u003e. Duration is read over the same window as the configuration it joins.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__value-cell\"\u003e\n      \u003ch4\u003eCoverage\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eShopping centres and retail parks\u003c\/strong\u003e across every market we cover. Standalone stores and high streets on request.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eHow to order\u003c\/p\u003e\n  \u003cp class=\"eng__intro\"\u003e\n    Engagement is a module, not a standalone report. \u003cstrong\u003eIt is added inside the configurator, to the\n    configuration it completes\u003c\/strong\u003e, and delivered with it in the same workspace.\n  \u003c\/p\u003e\n  \u003col class=\"eng__steps\"\u003e\n    \u003cli\u003e\n      \u003cspan class=\"eng__step-name\"\u003eBuild your configuration\u003c\/span\u003e\n      \u003cp class=\"eng__step-text\"\u003eSelect your product and your site, then set the period and the reference population used to build the catchment area.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"eng__step-name\"\u003eAdd the module\u003c\/span\u003e\n      \u003cp class=\"eng__step-text\"\u003eAt the modules step, select Engagement. It appears as a separate line on your invoice and the total updates immediately.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"eng__step-name\"\u003eReceive it with your report\u003c\/span\u003e\n      \u003cp class=\"eng__step-text\"\u003eThe module is published inside the same Power BI workspace as the report it completes, within the same delivery window.\u003c\/p\u003e\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\n  \u003cdiv class=\"eng__note\"\u003e\n    \u003cstrong\u003eScope:\u003c\/strong\u003e Engagement measures visit duration on your own site. Comparing that duration\n    with a competing site requires \u003cstrong\u003eCompetitive Benchmark\u003c\/strong\u003e. Measuring what a campaign\n    produced requires \u003cstrong\u003eGeo Lift\u003c\/strong\u003e, on Flow Drive products.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"eng__close\"\u003e\n    \u003cp\u003eCounting visitors tells you who came. Counting time tells you who stayed.\u003c\/p\u003e\n    \u003cspan\u003eAdd Engagement to your configuration.\u003c\/span\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e","brand":"Ilan Experience","offers":[{"title":"Default Title","offer_id":63335278412106,"sku":null,"price":95.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0918\/2851\/9242\/files\/EngagementLogo_cdadb47d-7a99-4949-b471-d8344e626390.png?v=1787814756"}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0918\/2851\/9242\/collections\/2151797634.jpg?v=1787819403","url":"https:\/\/ilanexperience.com\/collections\/shopping-centre.oembed","provider":"Ilan Experience","version":"1.0","type":"link"}