[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-secure:{\n  \"regionTheme\": *[_type == \"theme\" && language == $locale][0] {\n    ...,\n    activeAnnouncement->{...},\n    \"mainNavigation\": \nmainNav->{\n  \"topLevelMenuItems\": navigationMenu.topLevelMenuItems[] {\n    title,\n    \"submenuLists\": submenuLists[] {\n      submenuListTitle,\n      \"submenuListItems\": submenuListItems[] {\n        \n  ...\n,\n        \n_type == 'link.internal' => {\n  ...,\n  newWindow,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n}\n}\n,\n        \n  _type == 'link.ssu' => {\n  ...\n}\n,\n      }\n    },\n    \"additionalInfo\": additionalInfo[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  \"menuActions\": headerActions[] {\n    _type,\n    _key,\n    \"internalLink\": internalLink { \n_type == 'link.internal' => {\n  ...,\n  newWindow,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n}\n}\n },\n    \"externalLink\": externalLink { \n  ...\n },\n    \"ssuLink\": ssuLink { \n  _type == 'link.ssu' => {\n  ...\n}\n },\n    appstoreLink,\n    button,\n  },\n  \"mobileHeaderActionKey\": mobileHeaderActionKey,\n}\n,\n    mainFooter->{\nfootnote,\n'pageLinks': coalesce(pageLinks[] {\n  \n  ...\n,\n  \n_type == 'link.internal' => {\n  ...,\n  newWindow,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n}\n}\n,\n  \n  _type == 'link.ssu' => {\n  ...\n}\n,\n}, []),\n'socialLinks': coalesce(socialLinks[] {\n  \n  _type == 'link.social' => {\n    _type,\n    _key,\n    title,\n    url,\n    icon,\n  }\n,\n}, []),\n'legalLinks': coalesce(legalLinks[] {\n  \n  ...\n,\n  \n_type == 'link.internal' => {\n  ...,\n  newWindow,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n}\n}\n,\n  \n  _type == 'link.ssu' => {\n  ...\n}\n,\n}, []),\n},\n  },\n  \"defaultSeo\": *[_type == \"config.seo\"][0] {\n    \"siteTitle\": siteTitle[_key == $locale][0].value,\n    \"favicon\": favicon.asset,\n    titleSeparator,\n    siteUrl,\n    withSiteTitle,\n    \"metaTitle\": seoSocial.metaTitle[_key == $locale][0].value,\n    \"metaTitleFallback\": seoSocial.metaTitle[_key == \"en-gb\"][0].value,\n    \"metaDescription\": seoSocial.metaDescription[_key == $locale][0].value,\n    \"metaDescriptionFallback\": seoSocial.metaDescription[_key == \"en-gb\"][0].value,\n    \"mobileAppDescription\": seoSocial.mobileAppDescription[_key == $locale][0].value,\n    \"mobileAppDescriptionFallback\": seoSocial.mobileAppDescription[_key == \"en-gb\"][0].value,\n    \"socialImage\": seoSocial.socialImage.asset,\n  },\n  \"appStores\": *[_type == \"config.appstores\"][0] {\n    \"modalTitleAppStoreDownload\": coalesce(\n      modalTitleAppStoreDownload[_key == $locale][0].value,\n      modalTitleAppStoreDownload[_key == \"en-gb\"][0].value,\n    ),\n    \"appleAppStore\": coalesce(\n      appleAppStore[_key == $locale][0].value,\n      appleAppStore[_key == \"en-gb\"][0].value,\n    ),\n    \"googlePlayStore\": coalesce(\n      googlePlayStore[_key == $locale][0].value,\n      googlePlayStore[_key == \"en-gb\"][0].value,\n    ),\n    \"huaweiAppGallery\": coalesce(\n      huaweiAppGallery[_key == $locale][0].value,\n      huaweiAppGallery[_key == \"en-gb\"][0].value,\n    ),\n    \"appleAppStoreBadge\": coalesce(\n      appleAppStoreBadge[_key == $locale][0].value.asset->url,\n      appleAppStoreBadge[_key == \"en-gb\"][0].value.asset->url,\n    ),\n    \"googlePlayStoreBadge\": coalesce(\n      googlePlayStoreBadge[_key == $locale][0].value.asset->url,\n      googlePlayStoreBadge[_key == \"en-gb\"][0].value.asset->url,\n    ),\n    \"huaweiAppGalleryBadge\": coalesce(\n      huaweiAppGalleryBadge[_key == $locale][0].value.asset->url,\n      huaweiAppGalleryBadge[_key == \"en-gb\"][0].value.asset->url,\n    ),\n  },\n  \"social\": *[_type == \"config.social\"][0] {\n    \"Facebook\": Facebook[_key == $locale][0].value,\n    \"FacebookAPIKey\": FacebookAPIKey[_key == $locale][0].value,\n    \"Instagram\": Instagram[_key == $locale][0].value,\n    \"LinkedIn\": LinkedIn[_key == $locale][0].value,\n    \"Twitter\": Twitter[_key == $locale][0].value,\n    \"YouTube\": YouTube[_key == $locale][0].value,\n    \"TikTok\": TikTok[_key == $locale][0].value,\n  },\n  \"slugs\": {\n    \"blog\": *[_id == $blogSingletonDocId][0].slug.current,\n    \"careers\": *[_id == $careersSingletonDocId][0].slug.current,\n    \"pressReleases\": *[_id == $pressReleaseSingletonDocId][0].slug.current,\n  },\n  \"fallbackImages\": *[_type == \"config.placeholderImages\"][0] {\n    \"press\": defaultImagePress {\n      fit,\n      alt,\n      asset,\n    },\n    \"resource\": defaultImageResources {\n      fit,\n      alt,\n      asset\n    }\n  }\n}:{\"locale\":\"en-us\",\"blogSingletonDocId\":\"singleton-pages-en-us-about-food-waste-blog-home\",\"careersSingletonDocId\":\"singleton-careerPages-en-us-careers-home\",\"pressReleaseSingletonDocId\":\"singleton-pages-en-us-press-home\"}":3,"sanity-secure:{\n  \"page\": *[_type == $type && language == $locale && slug.current == $slug && (!defined($parent) || parent->slug.current == $parent) && (!defined($grandParent) || parent->parent->slug.current == $grandParent) && (!defined($greatGrandParent) || parent->parent->parent->slug.current == $greatGrandParent)][0] {\n    \n  _type,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n,\n  parent,\n  language,\n  pageVisibility,\n  seoSocial,\n  hideHeader,\n  \"_translations\": *[_type == \"translation.metadata\" && references(^._id)].translations[].value->{\n    title,\n    \"slug\": slug.current,\n    language\n  },\n  _createdAt,\n  _updatedAt,\n  publishedAt,\n  updatedAt,\n  pretitle,\n  title,\n  author->{\n    name,\n    slug,\n    \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n,\n    image,\n    \"hasBio\": count(bio[_key == $locale][0].value[children[].text match \"?*\"]) > 0,\n  },\n  slug,\n  parent,\n  image,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  migrated,\n  contentChoice,\n  pageContent,\n  categories\n,\n    defined($defaultPageBlocksDocId) => {\n      \"defaultPageBlocks\": *[_id == $defaultPageBlocksDocId][0].content[] {\n        \n  ...,\n  content[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.title\"=>{\ntitle[] {\n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n},\npreTitle[] {\n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n},\ndescription[] {\n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n}\n},_type == \"modularContentBlocks.inner.baseText\"=>{\n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n},_type == \"modularContentBlocks.inner.buttonGroup\"=>{\n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n},_type == \"modularContentBlocks.inner.salesforceForms\"=>{\n  salesforceForm->{\n  ...,\n  fieldsTexts {\n    ...,\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n    },\n  },\n  platformOptions {\n    ...,\n    platformOptionsValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n    },\n  },\n  blockerInputTexts {\n    ...,\n    blockerValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n    },\n  }\n}},_type == \"modularContentBlocks.inner.faq\"=>{\n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n},_type == \"modularContentBlocks.inner.statistics\"=>{\n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n },_type == \"modularContentBlocks.inner.people\"=>{\n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n},_type == \"modularContentBlocks.inner.ticker\"=>{\n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n},_type == \"modularContentBlocks.inner.callout\"=>{\n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n },_type == \"modularContentBlocks.inner.forms\"=>{\n  ...,\n  form->{\n    \n  ...,\n  notifications[] {\n    _type,\n    _key,\n  },\n  fields[] {\n    ...,\n    richValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    },\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  confirmation {\n    \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  contentBlocks[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.buttonGroup\" => {\n    \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.people\" => {\n    \n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n\n  },\n  _type == \"modularContentBlocks.inner.title\" => {\n    \n  ...,\n  title[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.baseText\" => {\n    \n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.faq\" => {\n    \n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n\n  },\n  _type == \"modularContentBlocks.inner.statistics\" => {\n    \n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n \n  },\n  _type == \"modularContentBlocks.inner.callout\" => {\n    \n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n \n  },\n  _type == \"modularContentBlocks.inner.ticker\" => {\n    \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.video\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.profilePicture\" => {\n    ...,\n    \"person\": person->\n  },\n  _type == \"modularContentBlocks.inner.partnerLogo\" => {\n    ...,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    }\n  },\n  _type == \"modularContentBlocks.inner.listing\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.tiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n\n  },\n  _type == \"modularContentBlocks.inner.nudge\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.solutionTiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n\n  },\n  _type == \"modularContentBlocks.inner.campaignCounter\" => {\n    \n  },\n  _type == \"modularContentBlocks.outer.privacyControls\" => {\n    \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.forms\" => {\n    \n  ...,\n  form->{\n    _id,\n    title,\n    submitButtonText,\n    fields[] {\n      ...,\n      richValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    confirmation {\n      \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.salesforceForms\" => {\n    \n  ...,\n  salesforceForm->{\n    _id,\n    title,\n    formUrl,\n    formOid,\n    productInterest,\n    submitButtonText,\n    fieldsTexts {\n      ...,\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    platformOptions {\n      ...,\n      platformOptionsValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    blockerInputTexts {\n      ...,\n      blockerValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  }\n\n  }\n\n  }\n\n  }\n\n  },\n},_type == \"modularContentBlocks.inner.profilePicture\"=>{\nperson->\n},_type == \"modularContentBlocks.inner.tiles\"=>{\n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n},_type == \"modularContentBlocks.inner.solutionTiles\"=>{\n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n}\n\n  },\n  _type == \"modularContentBlocks.outer.carouselSection\"=>{ \n  ...,\n  preCarouselContent[] {\n    ...,\n    person->,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    },\n },\n slides[] {\n  ...,\n  content[] {\n    ...,\n    person->,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    },\n  }\n }\n },_type == \"modularContentBlocks.outer.tickerSection\"=>{ \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n },_type == \"modularContentBlocks.outer.stepsSection\"=>{ \n  ...,\n  slides[] {\n    ...,\n    content[] {\n      ...,\n      _type == \"modularContentBlocks.inner.buttonGroup\" => {\n        buttons[] {\n          ...,\n          link {\n            ...,\n            \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n          },\n        },\n      },\n    },\n  },\n  buttons[] {\n    ...,\n    link {\n      ...,\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      }\n    }\n },_type == \"modularContentBlocks.outer.cta\"=>{ \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n },_type == \"modularContentBlocks.outer.careers\"=>{ \n  ...,\n  \"defaultResultsLabels\": *[_id == \"singleton-careerPages-en-gb-careers-home\" && language == \"en-gb\"]{\n  content[][_type == \"modularContentBlocks.outer.careers\"] {resultsLabels}\n  }\n },_type == \"modularContentBlocks.outer.solutionFinder\"=>{ \n  vendorTypes[]->{\n    _id,\n    _type,\n    title,\n    icon,\n  }\n },_type == \"modularContentBlocks.outer.supportSection\"=>{ \n  supportPath->{\n    ...,\n    \n    itemChoices[] {\n      ...,\n      faqsToDisplay[]->{\n        items[!($locale in coalesce(hiddenInLocales, []))] {\n          _key,\n          analyticsProperty,\n          \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n          \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n            \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      },\n      formToDisplay->{\n        \n  ...,\n  notifications[] {\n    _type,\n    _key,\n  },\n  fields[] {\n    ...,\n    richValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    },\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  confirmation {\n    \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  contentBlocks[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.buttonGroup\" => {\n    \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.people\" => {\n    \n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n\n  },\n  _type == \"modularContentBlocks.inner.title\" => {\n    \n  ...,\n  title[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.baseText\" => {\n    \n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.faq\" => {\n    \n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n\n  },\n  _type == \"modularContentBlocks.inner.statistics\" => {\n    \n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n \n  },\n  _type == \"modularContentBlocks.inner.callout\" => {\n    \n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n \n  },\n  _type == \"modularContentBlocks.inner.ticker\" => {\n    \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.video\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.profilePicture\" => {\n    ...,\n    \"person\": person->\n  },\n  _type == \"modularContentBlocks.inner.partnerLogo\" => {\n    ...,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    }\n  },\n  _type == \"modularContentBlocks.inner.listing\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.tiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n\n  },\n  _type == \"modularContentBlocks.inner.nudge\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.solutionTiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n\n  },\n  _type == \"modularContentBlocks.inner.campaignCounter\" => {\n    \n  },\n  _type == \"modularContentBlocks.outer.privacyControls\" => {\n    \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.forms\" => {\n    \n  ...,\n  form->{\n    _id,\n    title,\n    submitButtonText,\n    fields[] {\n      ...,\n      richValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    confirmation {\n      \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.salesforceForms\" => {\n    \n  ...,\n  salesforceForm->{\n    _id,\n    title,\n    formUrl,\n    formOid,\n    productInterest,\n    submitButtonText,\n    fieldsTexts {\n      ...,\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    platformOptions {\n      ...,\n      platformOptionsValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    blockerInputTexts {\n      ...,\n      blockerValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  }\n\n  }\n\n  }\n\n  }\n\n      },\n      \n    itemChoices[] {\n      ...,\n      faqsToDisplay[]->{\n        items[!($locale in coalesce(hiddenInLocales, []))] {\n          _key,\n          analyticsProperty,\n          \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n          \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n            \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      },\n      formToDisplay->{\n        \n  ...,\n  notifications[] {\n    _type,\n    _key,\n  },\n  fields[] {\n    ...,\n    richValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    },\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  confirmation {\n    \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  contentBlocks[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.buttonGroup\" => {\n    \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.people\" => {\n    \n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n\n  },\n  _type == \"modularContentBlocks.inner.title\" => {\n    \n  ...,\n  title[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.baseText\" => {\n    \n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.faq\" => {\n    \n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n\n  },\n  _type == \"modularContentBlocks.inner.statistics\" => {\n    \n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n \n  },\n  _type == \"modularContentBlocks.inner.callout\" => {\n    \n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n \n  },\n  _type == \"modularContentBlocks.inner.ticker\" => {\n    \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.video\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.profilePicture\" => {\n    ...,\n    \"person\": person->\n  },\n  _type == \"modularContentBlocks.inner.partnerLogo\" => {\n    ...,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    }\n  },\n  _type == \"modularContentBlocks.inner.listing\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.tiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n\n  },\n  _type == \"modularContentBlocks.inner.nudge\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.solutionTiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n\n  },\n  _type == \"modularContentBlocks.inner.campaignCounter\" => {\n    \n  },\n  _type == \"modularContentBlocks.outer.privacyControls\" => {\n    \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.forms\" => {\n    \n  ...,\n  form->{\n    _id,\n    title,\n    submitButtonText,\n    fields[] {\n      ...,\n      richValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    confirmation {\n      \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.salesforceForms\" => {\n    \n  ...,\n  salesforceForm->{\n    _id,\n    title,\n    formUrl,\n    formOid,\n    productInterest,\n    submitButtonText,\n    fieldsTexts {\n      ...,\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    platformOptions {\n      ...,\n      platformOptionsValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    blockerInputTexts {\n      ...,\n      blockerValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  }\n\n  }\n\n  }\n\n  }\n\n      },\n      \n    itemChoices[] {\n      ...,\n      faqsToDisplay[]->{\n        items[!($locale in coalesce(hiddenInLocales, []))] {\n          _key,\n          analyticsProperty,\n          \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n          \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n            \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      },\n      formToDisplay->{\n        \n  ...,\n  notifications[] {\n    _type,\n    _key,\n  },\n  fields[] {\n    ...,\n    richValidationMessage[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    },\n    noteText[] {\n      \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n    }\n  },\n  confirmation {\n    \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  contentBlocks[] {\n    \n  ...,\n  _type == \"modularContentBlocks.inner.buttonGroup\" => {\n    \n  ...,\n  buttons[] {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.people\" => {\n    \n    people[]->{\n      ...,\n      \n  \"jobTitle\": coalesce(\n    jobTitle[_key == $locale][0].value,\n    jobTitle[_key == \"en-gb\"][0].value,\n  )\n\n    }\n\n  },\n  _type == \"modularContentBlocks.inner.title\" => {\n    \n  ...,\n  title[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.baseText\" => {\n    \n  text[] {\n  \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n,\n  tableData {\n      ...,\n      rows[] {\n        ...,\n        cells[] {\n          ...,\n          text[] {\n            \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n          }\n        }\n      }\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.faq\" => {\n    \n  \"items\": coalesce(\n    onetime.items[!($locale in coalesce(hiddenInLocales, []))] {\n    _key,\n    analyticsProperty,\n    question,\n    answer[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    existing->items[!($locale in coalesce(hiddenInLocales, []))] {\n      _key,\n      \n  \"analyticsProperty\": coalesce(\n    analyticsProperty[_key == $locale][0].value,\n    analyticsProperty[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"question\": coalesce(\n    question[_key == $locale][0].value,\n    question[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"answer\": coalesce(\n    answer[_key == $locale][0].value,\n    answer[_key == \"en-gb\"][0].value,\n  )\n[] {\n        \n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n,\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  )\n\n  },\n  _type == \"modularContentBlocks.inner.statistics\" => {\n    \n   ...,\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n   \"items\": coalesce(items[] {\n      _type==\"onetime\" => {\n...,\n},\n      _type==\"existing\"=> @->{\n        icon,\n        \n  \"prefix\": coalesce(\n    prefix[_key == $locale][0].value,\n    prefix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"stat\": coalesce(\n    stat[_key == $locale][0].value,\n    stat[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"suffix\": coalesce(\n    suffix[_key == $locale][0].value,\n    suffix[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"context\": coalesce(\n    context[_key == $locale][0].value,\n    context[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"content\": coalesce(\n    content[_key == $locale][0].value,\n    content[_key == \"en-gb\"][0].value,\n  )\n,\n        \n  \"source\": coalesce(\n    source[_key == $locale][0].value,\n    source[_key == \"en-gb\"][0].value,\n  )\n,\n      }\n    }, [])\n \n  },\n  _type == \"modularContentBlocks.inner.callout\" => {\n    \n   ...,\n   \"content\": coalesce(content[] {\n      ...,\n      title[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      subtitle[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n   }, false),\n   \"button\": coalesce(button[][0] {\n      ...,\n      link {\n        \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n      },\n  }, false),\n \n  },\n  _type == \"modularContentBlocks.inner.ticker\" => {\n    \n  ...,\n  items[] {\n    _type == 'onetime' => {\n      name\n    },\n    _type == 'existing' => @->{\n      name\n    }\n  },\n  logos[]->{\n    ...,\n    \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n    \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.video\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.profilePicture\" => {\n    ...,\n    \"person\": person->\n  },\n  _type == \"modularContentBlocks.inner.partnerLogo\" => {\n    ...,\n    partnerLogo->{\n      ...,\n      \n  \"partnerName\": coalesce(\n    partnerName[_key == $locale][0].value,\n    partnerName[_key == \"en-gb\"][0].value,\n  )\n,\n      \n  \"partnerLogo\": coalesce(\n    partnerLogo[_key == $locale][0].value,\n    partnerLogo[_key == \"en-gb\"][0].value,\n  )\n,\n    }\n  },\n  _type == \"modularContentBlocks.inner.listing\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.tiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  content[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  link {\n    ...,\n    link {\n      \n  ...,\n  linkType == 'internal' => {\n    'internalAnchor': internalAnchor.internal,\n    'reference': internal->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n,\n    }\n  }\n\n    },\n  },\n  \u002F\u002F Make sure that links are not included if containsLink is false\n  containsLink == false => {\n    \"link\": null,\n  }\n}\n\n  },\n  _type == \"modularContentBlocks.inner.nudge\" => {\n    \n  },\n  _type == \"modularContentBlocks.inner.solutionTiles\" => {\n    \n...,\ntiles[] {\n  ...,\n  link {\n    ...,\n    link->{\n      \n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n\n    },\n  },\n}\n\n  },\n  _type == \"modularContentBlocks.inner.campaignCounter\" => {\n    \n  },\n  _type == \"modularContentBlocks.outer.privacyControls\" => {\n    \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.forms\" => {\n    \n  ...,\n  form->{\n    _id,\n    title,\n    submitButtonText,\n    fields[] {\n      ...,\n      richValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      },\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    confirmation {\n      \n  \"confirmationType\": coalesce(confirmationType, type),\n  contentRedirectUrl,\n  contentMessage[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n\n    }\n  }\n\n  },\n  _type == \"modularContentBlocks.inner.salesforceForms\" => {\n    \n  ...,\n  salesforceForm->{\n    _id,\n    title,\n    formUrl,\n    formOid,\n    productInterest,\n    submitButtonText,\n    fieldsTexts {\n      ...,\n      noteText[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    platformOptions {\n      ...,\n      platformOptionsValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    },\n    blockerInputTexts {\n      ...,\n      blockerValidationMessage[] {\n        \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n      }\n    }\n  }\n\n  }\n\n  }\n\n  }\n\n      },\n      \n    }\n  \n    }\n  \n    }\n  ,\n  }\n },_type == \"modularContentBlocks.outer.signatureGenerator\"=>{ \n  signatureGeneratorFragment->{\n    ...,\n    },\n    \"defaultPronouns\": *[_type == \"fragments.signatureGenerator\" && language == \"en-gb\"]{\n      pronouns,\n    }\n },_type == \"modularContentBlocks.outer.referral\"=>{ \n  ...,\n  descriptionUnhappy[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  },\n },_type == \"modularContentBlocks.outer.cookieList\"=>{ \n  \u002F\u002F No fields needed for CookieList\n },_type == \"modularContentBlocks.outer.locationFinder\"=>{ \n  ...,\n  \"staticTranslations\": *[\n      _type == \"fragments.surpriseBag\" && language == $locale][0],\n },_type == \"modularContentBlocks.outer.privacyControls\"=>{ \n  ...,\n  description[] {\n    \n...,\nchildren[] {\n  ...,\n  \n  \"text\": select(\n    dataType == \"statistics\" => coalesce(\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == $locale][0].value,\n      *[_type == \"statistics\" && _id == coalesce(^.text._ref, ^.text)][0].stat[_key == \"en-gb\"][0].value,\n    ),\n    dataType == \"people\" => *[\n      _type == \"people\" && _id == coalesce(^.text._ref, ^.text)\n    ][0].name,\n    coalesce(^.text._ref, ^.text, text)\n  ),\n\n},\nmarkDefs[] {\n  ...,\n  reference->{\n  _type,\n  slug,\n  \"locale\": language,\n  \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n\n},\n  newWindow,\n  'internalAnchor': internalAnchor.internal\n}\n\n  }\n }\n\n      },\n    },\n  },\n}:{\"type\":\"aboutFoodWaste.blog\",\"defaultPageBlocksDocId\":\"singleton-defaultBlocks-en-us-about-food-waste-blog-single-default-blocks\",\"locale\":\"en-us\",\"greatGrandParent\":null,\"grandParent\":null,\"parent\":\"blog\",\"slug\":\"food-cost-percentage\"}":327,"sanity-secure:\n    *[ _type == $taxonomy && language == \"en-us\"] {\n      _id,\n      title,\n      \"slug\": slug.current,\n    }\n  :{\"taxonomy\":\"\"}":1560,"sanity-secure:{\n    \"totalPosts\": count(*[_type == $type && (!defined($locale) || language == $locale) && (!defined($activeFilter) || references(*[_type==$taxonomy && (slug.current in $activeFilter)]._id))]),\n    \"posts\": *[_type == $type && (!defined($locale) || language == $locale) && (!defined($activeFilter) || references(*[_type==$taxonomy && (slug.current in $activeFilter)]._id))] | order(publishedAt desc) [$sliceStart...$sliceEnd] {\n    _id,\n    _createdAt,\n    publishedAt,\n    updatedAt,\n    language,\n    title,\n    pretitle,\n    image,\n    excerpt,\n    migrated,\n    categories[]->{\n      title,\n      \"slug\": slug.current,\n    },\n    \"content\": pt::text(content),\n    \n  \"slug\": '\u002F'+slug.current,\n  defined(parent) => {\"slug\": '\u002F'+ parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent) => {\"slug\": '\u002F'+parent->parent->slug.current+'\u002F'+parent->slug.current+'\u002F'+slug.current},\n  defined(parent->parent->parent) => {\"slug\": '\u002F'+ parent->parent->parent->slug.current +'\u002F'+parent->parent->slug.current +'\u002F'+parent->slug.current+'\u002F'+slug.current}\n,\n    \"file\": file.asset->,\n    url\n    }\n  }:{\"type\":\"aboutFoodWaste.blog\",\"locale\":\"en-us\",\"page\":1,\"sliceStart\":0,\"sliceEnd\":4,\"activeFilter\":null,\"taxonomy\":\"\",\"sanityKey\":\"listing_vwglvq\"}":1561},{"appStores":4,"defaultSeo":10,"fallbackImages":21,"regionTheme":30,"slugs":320,"social":324},{"appleAppStore":5,"appleAppStoreBadge":6,"googlePlayStore":5,"googlePlayStoreBadge":7,"huaweiAppGallery":5,"huaweiAppGalleryBadge":8,"modalTitleAppStoreDownload":9},"https:\u002F\u002Ftgtg.onelink.me\u002FOGjG\u002Fafd50hls","https:\u002F\u002Fcdn.sanity.io\u002Fimages\u002Fnqimd3nr\u002Fproduction\u002Fceed6a2b4247d22d0e6f9425cad1d5c39af762fe-480x160.png","https:\u002F\u002Fcdn.sanity.io\u002Fimages\u002Fnqimd3nr\u002Fproduction\u002F68072d9f747a9e089548846cecc588ef52bb624e-540x160.png",null,"Download the app and start saving delicious food today",{"favicon":11,"metaDescription":8,"metaDescriptionFallback":14,"metaTitle":8,"metaTitleFallback":15,"mobileAppDescription":8,"mobileAppDescriptionFallback":8,"siteTitle":8,"siteUrl":16,"socialImage":17,"titleSeparator":19,"withSiteTitle":20},{"_ref":12,"_type":13},"image-eb37301e40a80bb500e31e5a939924c582ad7744-512x512-png","reference","The app that lets customers rescue unsold food from shops and restaurants to save it from going to waste. Try it today.","Join Our Food Waste Movement","https:\u002F\u002Ftoogoodtogo.com",{"_ref":18,"_type":13},"image-e45b68b658778f2849b920af8e626567ec51d94b-1440x818-jpg","–","append",{"press":22,"resource":26},{"alt":8,"asset":23,"fit":25},{"_ref":24,"_type":13},"image-b78d00b015d990a35bc429a7b3a849a300872fe5-512x340-png","cover",{"alt":27,"asset":28,"fit":25},"a collection of brochures with one that says 2022 in numbers",{"_ref":29,"_type":13},"image-21d8db28cd1bbe29c6c986dd4798ec9ec79ace1b-1024x680-png",{"_createdAt":31,"_id":32,"_rev":33,"_type":34,"_updatedAt":35,"activeAnnouncement":8,"homepage":36,"language":38,"mainFooter":39,"mainNav":141,"mainNavigation":143},"2024-02-06T12:02:28Z","singleton-theme-en-us","S2mxzCT7dq51nqm7vwud0T","theme","2024-07-02T08:23:41Z",{"_ref":37,"_type":13},"singleton-pages-en-us-homepage","en-us",{"footnote":8,"legalLinks":40,"pageLinks":91,"socialLinks":112},[41,50,55,60,65,70,75,80,86],{"_key":42,"_type":43,"newWindow":44,"otherLocales":45,"reference":46,"title":49},"f8119a1b1bf5","link.internal",true,false,{"_type":47,"locale":38,"slug":48},"legalPages","\u002Flegal","Legal",{"_key":51,"_type":43,"newWindow":44,"otherLocales":45,"reference":52,"title":54},"6708b9b870b1",{"_type":47,"locale":38,"slug":53},"\u002Flegal\u002Fprivacy","Privacy Policy",{"_key":56,"_type":43,"newWindow":44,"otherLocales":45,"reference":57,"title":59},"27a9f2676a90",{"_type":47,"locale":38,"slug":58},"\u002Flegal\u002Fcookie-policy","Cookie Policy",{"_key":61,"_type":43,"newWindow":45,"otherLocales":45,"reference":62,"title":64},"10c9c20bc5f2",{"_type":47,"locale":38,"slug":63},"\u002Flegal\u002Fterms-and-conditions-using-the-app","Terms & Conditions",{"_key":66,"_type":43,"newWindow":44,"otherLocales":45,"reference":67,"title":69},"173270383b82",{"_type":47,"locale":38,"slug":68},"\u002Flegal\u002Fcontact-us","Contact us",{"_key":71,"_type":43,"newWindow":44,"otherLocales":45,"reference":72,"title":74},"5a9de968a793",{"_type":47,"locale":38,"slug":73},"\u002Flegal\u002Fdsa-disclosure","DSA Disclosure",{"_key":76,"_type":43,"newWindow":44,"otherLocales":45,"reference":77,"title":79},"053b1f8cd505",{"_type":47,"locale":38,"slug":78},"\u002Flegal\u002Fprivacy-settings","Do Not Sell or Share My Data",{"_key":81,"_type":43,"newWindow":44,"otherLocales":45,"reference":82,"title":85},"37636b5315eb",{"_type":83,"locale":38,"slug":84},"pages","\u002Ftgtg-claims","Food Waste Sources",{"_key":87,"_type":88,"newWindow":44,"title":89,"url":90},"4431596f1003","link.external","Status","https:\u002F\u002Fstatus.toogoodtogo.com\u002F",[92,98,103,108],{"_key":93,"_type":43,"newWindow":8,"otherLocales":45,"reference":94,"title":97},"5b7e3a106f9e",{"_type":95,"locale":38,"slug":96},"careerPages","\u002Fcareers","Careers",{"_key":99,"_type":43,"newWindow":8,"otherLocales":45,"reference":100,"title":102},"50962d914fe4",{"_type":83,"locale":38,"slug":101},"\u002Fpress","Press",{"_key":104,"_type":43,"newWindow":8,"otherLocales":45,"reference":105,"title":107},"78914bcedf91",{"_type":83,"locale":38,"slug":106},"\u002Fsupport","Support",{"_key":109,"_type":88,"newWindow":44,"title":110,"url":111},"280fc737f6b5","Mystore","https:\u002F\u002Fstore.toogoodtogo.com\u002Flogin",[113,119,123,127,132,136],{"_key":114,"_type":115,"icon":116,"title":117,"url":118},"98a17a45c700","link.social","Linkedin","LinkedIn","https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Ftoo-good-to-go",{"_key":120,"_type":115,"icon":121,"title":121,"url":122},"fd26a3b7a123","Instagram","https:\u002F\u002Fwww.instagram.com\u002Ftoogoodtogo.usa\u002F",{"_key":124,"_type":115,"icon":125,"title":125,"url":126},"5a6f37dc5cfe","Facebook","https:\u002F\u002Fwww.facebook.com\u002FtoogoodtogoUSA\u002F",{"_key":128,"_type":115,"icon":129,"title":130,"url":131},"7abf4217cfde","Tiktok","Tik Tok","https:\u002F\u002Fwww.tiktok.com\u002F@toogoodtogo",{"_key":133,"_type":115,"icon":134,"title":134,"url":135},"c949f075e758","Youtube","https:\u002F\u002Fwww.youtube.com\u002Fchannel\u002FUCBonm_44z7UL0OvhHksBCAw",{"_key":137,"_type":115,"icon":138,"title":139,"url":140},"31d5e2c397ef","X_icon","X","https:\u002F\u002Fwww.twitter.com\u002Ftoogoodtogo",{"_ref":142,"_type":13},"AQVKCBGGRXIlMTy62nqL6C",{"menuActions":144,"mobileHeaderActionKey":146,"topLevelMenuItems":165},[145,153,160],{"_key":146,"_type":147,"appstoreLink":148,"button":8,"externalLink":8,"internalLink":8,"ssuLink":8},"b31127a48261","newHeaderAction.appstoreLink",{"_type":149,"buttonColor":150,"buttonText":151,"variant":152},"appstoreLink","white","Download app","automatic",{"_key":154,"_type":155,"appstoreLink":8,"button":8,"externalLink":8,"internalLink":8,"ssuLink":156},"d3080ad0695e","newHeaderAction.ssuLink",{"_type":157,"newWindow":44,"title":158,"url":159},"link.ssu","Sign up as Business","https:\u002F\u002Fstore.toogoodtogo.com\u002Fonboarding",{"_key":161,"_type":162,"appstoreLink":8,"button":8,"externalLink":163,"internalLink":8,"ssuLink":8},"ab3a15158657","newHeaderAction.externalLink",{"_type":88,"newWindow":44,"title":164,"url":111},"MyStore login",[166,249],{"additionalInfo":8,"submenuLists":167,"title":248},[168,193,229],{"submenuListItems":169,"submenuListTitle":192},[170,175,180,186],{"_key":171,"_type":43,"newWindow":45,"otherLocales":45,"reference":172,"title":174},"b7256c5acbef",{"_type":83,"locale":38,"slug":173},"\u002Fhow-to-collect-too-good-to-go","How to collect a Too Good To Go surprise bag?",{"_key":176,"_type":43,"newWindow":45,"otherLocales":45,"reference":177,"title":179},"7b7825c8941e",{"_type":83,"locale":38,"slug":178},"\u002Fhow-does-the-app-work","How does the app work?",{"_key":181,"_type":43,"newWindow":45,"otherLocales":45,"reference":182,"title":185},"d7cca2808225",{"_type":183,"locale":38,"slug":184},"aboutUs.pages","\u002Fabout-us\u002Fin-my-area","Too Good To Go in my area",{"_key":187,"_type":43,"newWindow":45,"otherLocales":45,"reference":188,"title":191},"d2321ab19b10",{"_type":189,"locale":38,"slug":190},"surpriseBagHome","\u002Ffind","Save good food near you","The app",{"submenuListItems":194,"submenuListTitle":228},[195,200,205,210,215,218,223],{"_key":196,"_type":43,"newWindow":45,"otherLocales":45,"reference":197,"title":199},"9732bb328b6a",{"_type":183,"locale":38,"slug":198},"\u002Fabout-us","About Too Good To Go",{"_key":201,"_type":43,"newWindow":45,"otherLocales":45,"reference":202,"title":204},"ac2fe81a6053",{"_type":183,"locale":38,"slug":203},"\u002Fabout-us\u002Four-history","Our history",{"_key":206,"_type":43,"newWindow":45,"otherLocales":45,"reference":207,"title":209},"901aa40c89be",{"_type":183,"locale":38,"slug":208},"\u002Fabout-us\u002Fb-corp","B Corp",{"_key":211,"_type":43,"newWindow":45,"otherLocales":45,"reference":212,"title":214},"cc89fcc93d23",{"_type":183,"locale":38,"slug":213},"\u002Fabout-us\u002Fesg","ESG",{"_key":216,"_type":43,"newWindow":45,"otherLocales":45,"reference":217,"title":97},"0c358724c797",{"_type":95,"locale":38,"slug":96},{"_key":219,"_type":43,"newWindow":45,"otherLocales":45,"reference":220,"title":222},"1037fa14f9ca",{"_type":183,"locale":38,"slug":221},"\u002Fabout-us\u002Feducation-hub","Education hub",{"_key":224,"_type":43,"newWindow":45,"otherLocales":45,"reference":225,"title":227},"9c393af11ea7",{"_type":83,"locale":38,"slug":226},"\u002Fimpact-report","Impact report","About us",{"submenuListItems":230,"submenuListTitle":247},[231,237,242],{"_key":232,"_type":43,"newWindow":45,"otherLocales":45,"reference":233,"title":236},"54eaf498f7a6",{"_type":234,"locale":38,"slug":235},"aboutFoodWaste.pages","\u002Fabout-food-waste","Food waste facts",{"_key":238,"_type":43,"newWindow":45,"otherLocales":45,"reference":239,"title":241},"cf761fbe8e3f",{"_type":83,"locale":38,"slug":240},"\u002Fresources","Resources",{"_key":243,"_type":43,"newWindow":45,"otherLocales":45,"reference":244,"title":246},"65154cd55a3f",{"_type":83,"locale":38,"slug":245},"\u002Fblog","Too Good To Go blog","About food waste","About",{"additionalInfo":250,"submenuLists":294,"title":319},[251,263,280],{"_key":252,"_type":253,"children":254,"markDefs":261,"style":262},"3fdc88e12206","block",[255],{"_key":256,"_type":257,"marks":258,"text":260},"533e0f75264b","span",[259],"strong","Current stats",[],"normal",{"_key":264,"_type":253,"children":265,"markDefs":279,"style":262},"2acb78382842",[266,270,275],{"_key":267,"_type":257,"marks":268,"text":269},"bcf236ab58a3",[],"\n",{"_key":271,"_type":272,"dataType":273,"text":274},"57cdc8edcaf4","data","statistics","120 million",{"_key":276,"_type":257,"marks":277,"text":278},"2fca042e3d55",[]," registered users on the Too Good To Go app.\n",[],{"_key":281,"_type":253,"children":282,"markDefs":293,"style":262},"5b7478b4863e",[283,286,289],{"_key":276,"_type":257,"marks":284,"text":285},[],"And ",{"_key":287,"_type":272,"dataType":273,"text":288},"bc032c2b02ec","180,000",{"_key":290,"_type":257,"marks":291,"text":292},"301cb2e013ea",[]," businesses.",[],[295],{"submenuListItems":296,"submenuListTitle":318},[297,303,308,313],{"_key":298,"_type":43,"newWindow":45,"otherLocales":45,"reference":299,"title":302},"fc776181be24",{"_type":300,"locale":38,"slug":301},"businessSolutions.solution","\u002Fsurplus-food-marketplace","Marketplace surprise bags",{"_key":304,"_type":43,"newWindow":45,"otherLocales":45,"reference":305,"title":307},"659448c75521",{"_type":300,"locale":38,"slug":306},"\u002Fplatform","Too Good To Go Platform",{"_key":309,"_type":43,"newWindow":45,"otherLocales":45,"reference":310,"title":312},"e6f8af094b56",{"_type":300,"locale":38,"slug":311},"\u002Flook-smell-taste","Date Labeling initiative",{"_key":314,"_type":43,"newWindow":45,"otherLocales":45,"reference":315,"title":317},"edc94aab8074",{"_type":83,"locale":38,"slug":316},"\u002Ffood-waste-solution","Find out more","Business solutions","Business",{"blog":321,"careers":322,"pressReleases":323},"blog","careers","press",{"Facebook":126,"FacebookAPIKey":325,"Instagram":122,"LinkedIn":118,"TikTok":8,"Twitter":326,"YouTube":8},"3506013279621180","https:\u002F\u002Ftwitter.com\u002Ftoogoodtogo",{"page":328},{"_createdAt":329,"_translations":330,"_type":331,"_updatedAt":332,"author":8,"categories":8,"content":333,"contentChoice":1438,"defaultPageBlocks":1439,"hideHeader":45,"image":1543,"language":38,"migrated":8,"pageContent":8,"pageVisibility":1549,"parent":1550,"pretitle":1551,"publishedAt":1552,"seoSocial":1553,"slug":1556,"title":1559,"updatedAt":8},"2026-07-29T21:33:25Z",[],"aboutFoodWaste.blog","2026-07-30T14:23:22Z",[334,354,362,370,382,400,407,446,601,608,616,623,631,639,646,655,663,670,678,685,693,700,708,716,723,731,739,746,754,762,769,777,784,803,810,818,837,844,852,859,867,874,882,898,905,913,921,928,936,956,963,971,991,998,1006,1026,1033,1041,1061,1068,1076,1084,1091,1117,1129,1141,1153,1165,1172,1192,1199,1218,1225,1233,1241,1248,1267,1274,1285,1292,1299,1307,1315,1323,1330,1338,1346,1353,1361,1369,1376,1384,1392,1399,1407,1415,1422,1430],{"_key":335,"_type":253,"children":336,"markDefs":350,"style":262},"9e80c19cbc09",[337,341,346],{"_key":338,"_type":257,"marks":339,"text":340},"ffbc0b3df4e5",[],"Restaurant operators have had to navigate years of rising costs. Between 2020 and 2026 alone, ",{"_key":342,"_type":257,"marks":343,"text":345},"e6b578054cbe",[344],"2dccfdf79ef9","total food costs",{"_key":347,"_type":257,"marks":348,"text":349},"166d01b913a8",[]," for the average restaurant increased by 34%, putting even more pressure on already tight margins. Add in expenses like utilities, occupancy, and credit card processing fees, and there isn’t much room for error. The good news? Food is one of the few major costs operators can actively control.",[351],{"_key":344,"_type":352,"href":353,"internalAnchor":8,"newWindow":8,"reference":8},"urlLink","https:\u002F\u002Frestaurant.org\u002Feducation-and-resources\u002Fresource-library\u002Frising-food-costs-tight-supplies-more-challenges-for-industry\u002F",{"_key":355,"_type":253,"children":356,"markDefs":361,"style":262},"d48d708ede22",[357],{"_key":358,"_type":257,"marks":359,"text":360},"aee6fc9cf7a3",[],"",[],{"_key":363,"_type":253,"children":364,"markDefs":369,"style":262},"2e415e623272",[365],{"_key":366,"_type":257,"marks":367,"text":368},"ba517d97dcd4",[],"Raising menu prices or shrinking portions may seem like the obvious answer, but they’re far from the only solutions. Understanding your food cost percentage helps you spot opportunities to improve profitability while protecting the quality your guests expect. The first step is knowing what this metric actually measures and how to use the food cost percentage formula to make smarter decisions every day.",[],{"_key":371,"_type":253,"children":372,"markDefs":380,"style":381},"c38352fb95d3",[373,376],{"_key":374,"_type":257,"marks":375,"text":269},"d1e28cb2c0df",[],{"_key":377,"_type":257,"marks":378,"text":379},"e8cd51f7b122",[259],"What Is Food Cost Percentage in Restaurants?",[],"h2",{"_key":383,"_type":253,"children":384,"markDefs":398,"style":262},"5ceb95854ca4",[385,389,394],{"_key":386,"_type":257,"marks":387,"text":388},"1f17a280550b",[],"If ingredients feel pricier than ever, you’re not imagining it. More than ",{"_key":390,"_type":257,"marks":391,"text":393},"c5becbb1efdb",[392],"39a2f9f2ccc2","80% of operators",{"_key":395,"_type":257,"marks":396,"text":397},"72d1428210cc",[]," reported higher food costs in 2025. However, ingredients don’t tell the whole story. Food cost percentage measures how much of your food sales revenue is spent on ingredients. It’s one of the clearest indicators of menu profitability because it shows how efficiently your kitchen turns inventory into revenue, rather than just how much you’re spending.",[399],{"_key":392,"_type":352,"href":353,"internalAnchor":8,"newWindow":8,"reference":8},{"_key":401,"_type":253,"children":402,"markDefs":406,"style":262},"e9f6df80a5a7",[403],{"_key":404,"_type":257,"marks":405,"text":360},"7c38f5ba1b31",[],[],{"_key":408,"_type":253,"children":409,"markDefs":440,"style":262},"309c85136c1b",[410,414,419,423,427,431,436],{"_key":411,"_type":257,"marks":412,"text":413},"e1c960af2453",[],"Most restaurants monitor both ideal and actual food cost. Ideal food cost is based on recipe costs and expected portions, assuming every ingredient is used ",{"_key":415,"_type":257,"marks":416,"text":418},"d5b129f10db5",[417],"em","exactly",{"_key":420,"_type":257,"marks":421,"text":422},"8e67685a7511",[]," as planned. Actual food cost reflects what ",{"_key":424,"_type":257,"marks":425,"text":426},"078312aeaa48",[417],"really",{"_key":428,"_type":257,"marks":429,"text":430},"14933487374c",[]," happened in your kitchen, including spoilage, overportioning, ",{"_key":432,"_type":257,"marks":433,"text":435},"8aa737cffe67",[434],"eaae242b05cc","prep waste",{"_key":437,"_type":257,"marks":438,"text":439},"15e2a1620d04",[],", and other losses. The gap between the two often reveals where opportunities for improvement exist.",[441],{"_key":434,"_type":442,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":443},"pageLink",{"_type":444,"locale":38,"slug":445},"press.releases","\u002Fpress\u002Ftoo-good-to-go-and-whole-foods-market-join-forces",{"_key":447,"_type":448,"children":8,"markDefs":8,"tableData":449,"tableHeaders":599,"tableTitle":600},"67ab0e9e0d89","table",{"_type":448,"num_cols":450,"rows":451},3,[452,491,527,563],{"_key":453,"_type":454,"cells":455},"2aa42f091c70","table-row",[456,469,480],{"_key":457,"_type":458,"text":459},"17c9320b4479","table-cell",[460],{"_key":461,"_type":462,"children":463,"markDefs":468,"style":262},"6c39054889a5","portableTableCell",[464],{"_key":465,"_type":257,"marks":466,"text":467},"6b3f8ffffd85",[259],"Key Difference",[],{"_key":470,"_type":458,"text":471},"b23500261d65",[472],{"_key":473,"_type":462,"children":474,"markDefs":479,"style":262},"65b06cca1dbf",[475],{"_key":476,"_type":257,"marks":477,"text":478},"2cb175308612",[259],"Ideal Food Cost",[],{"_key":481,"_type":458,"text":482},"f33aaeec20a2",[483],{"_key":484,"_type":462,"children":485,"markDefs":490,"style":262},"f15c6492dead",[486],{"_key":487,"_type":257,"marks":488,"text":489},"8627ffb37fd4",[259],"Actual Food Cost",[],{"_key":492,"_type":454,"cells":493},"e40938c73528",[494,505,516],{"_key":495,"_type":458,"text":496},"3946a7f193d3",[497],{"_key":498,"_type":462,"children":499,"markDefs":504,"style":262},"1941b6ee557a",[500],{"_key":501,"_type":257,"marks":502,"text":503},"4a501daf7855",[259],"What does it measure?",[],{"_key":506,"_type":458,"text":507},"7fc38105f7e6",[508],{"_key":509,"_type":462,"children":510,"markDefs":515,"style":262},"8a3d3c28ca91",[511],{"_key":512,"_type":257,"marks":513,"text":514},"e93e65dae441",[],"Expected food costs based on recipes and portions",[],{"_key":517,"_type":458,"text":518},"d30aa0af6c97",[519],{"_key":520,"_type":462,"children":521,"markDefs":526,"style":262},"8fc2967e8685",[522],{"_key":523,"_type":257,"marks":524,"text":525},"9f9a8ae8fd5b",[],"Real food costs after day-to-day operations",[],{"_key":528,"_type":454,"cells":529},"862f9a87a78e",[530,541,552],{"_key":531,"_type":458,"text":532},"5b01a76dc9b1",[533],{"_key":534,"_type":462,"children":535,"markDefs":540,"style":262},"b42e83a70c1e",[536],{"_key":537,"_type":257,"marks":538,"text":539},"698cc2767385",[259],"What is it used for?",[],{"_key":542,"_type":458,"text":543},"5e196d20018c",[544],{"_key":545,"_type":462,"children":546,"markDefs":551,"style":262},"4adc89ba1a3d",[547],{"_key":548,"_type":257,"marks":549,"text":550},"f8121354c17c",[],"Setting menu prices and profitability targets",[],{"_key":553,"_type":458,"text":554},"e7142c98f3e2",[555],{"_key":556,"_type":462,"children":557,"markDefs":562,"style":262},"98c36eed8b91",[558],{"_key":559,"_type":257,"marks":560,"text":561},"f117b4ebdd89",[],"Evaluating kitchen performance and cost control",[],{"_key":564,"_type":454,"cells":565},"39ac91dd9913",[566,577,588],{"_key":567,"_type":458,"text":568},"2ba1af02c3af",[569],{"_key":570,"_type":462,"children":571,"markDefs":576,"style":262},"49edb7486a5e",[572],{"_key":573,"_type":257,"marks":574,"text":575},"81356c1436e3",[259],"What can affect it?",[],{"_key":578,"_type":458,"text":579},"480018a74073",[580],{"_key":581,"_type":462,"children":582,"markDefs":587,"style":262},"6267774d8d28",[583],{"_key":584,"_type":257,"marks":585,"text":586},"136f9eefd4f7",[],"Recipe updates or menu changes",[],{"_key":589,"_type":458,"text":590},"b66ca645e94c",[591],{"_key":592,"_type":462,"children":593,"markDefs":598,"style":262},"d9a62a0ec408",[594],{"_key":595,"_type":257,"marks":596,"text":597},"731ed8ea2dcb",[],"Waste, spoilage, overportioning, and inventory errors",[],"row","Food Cost Percentage",{"_key":602,"_type":253,"children":603,"markDefs":607,"style":262},"4da4a16c1b93",[604],{"_key":605,"_type":257,"marks":606,"text":360},"27739d95ae50",[],[],{"_key":609,"_type":253,"children":610,"markDefs":615,"style":262},"de2e0e23905d",[611],{"_key":612,"_type":257,"marks":613,"text":614},"b27fe3d18efb",[],"Spending $8,000 on ingredients isn’t inherently good or bad. The real value comes from calculating food costs in relation to overall restaurant revenue. Spending $8,000 to generate $20,000 in food sales tells a very different story than spending the same amount to generate $35,000. Food cost percentage puts spending in the context of sales, making it much easier to compare performance over time and identify changes that deserve a closer look.",[],{"_key":617,"_type":253,"children":618,"markDefs":622,"style":262},"1d602a680218",[619],{"_key":620,"_type":257,"marks":621,"text":360},"15327ae38039",[],[],{"_key":624,"_type":253,"children":625,"markDefs":630,"style":381},"b680947b2ec2",[626],{"_key":627,"_type":257,"marks":628,"text":629},"b91d6c1fe26d",[259],"How to Calculate Your Food Cost Percentage",[],{"_key":632,"_type":253,"children":633,"markDefs":638,"style":262},"31add71328d1",[634],{"_key":635,"_type":257,"marks":636,"text":637},"761584dda4c9",[],"Calculating your restaurant’s food cost percentage is straightforward once you know which version you’re using: the ideal food cost formula or the actual food cost formula. Here’s a step-by-step guide to do just that.",[],{"_key":640,"_type":253,"children":641,"markDefs":645,"style":262},"23beaa065662",[642],{"_key":643,"_type":257,"marks":644,"text":360},"d157310ff910",[],[],{"_key":647,"_type":253,"children":648,"markDefs":653,"style":654},"25ea2696f17a",[649],{"_key":650,"_type":257,"marks":651,"text":652},"86072718254d",[259],"Ideal Food Cost Percentage Formula",[],"h3",{"_key":656,"_type":253,"children":657,"markDefs":662,"style":262},"6457bdc7c179",[658],{"_key":659,"_type":257,"marks":660,"text":661},"cf010c96647b",[],"Ideal food cost compares the expected cost of ingredients to the revenue those menu items generate:",[],{"_key":664,"_type":253,"children":665,"markDefs":669,"style":262},"69245503e017",[666],{"_key":667,"_type":257,"marks":668,"text":360},"9d52ad5b3c78",[],[],{"_key":671,"_type":253,"children":672,"markDefs":677,"style":262},"4fb8e54e62fd",[673],{"_key":674,"_type":257,"marks":675,"text":676},"ffb4be5ba717",[417],"Ideal Food Cost % = Food Cost ÷ Food Sales × 100",[],{"_key":679,"_type":253,"children":680,"markDefs":684,"style":262},"e77978ad3483",[681],{"_key":682,"_type":257,"marks":683,"text":360},"5ddc60daf8f9",[],[],{"_key":686,"_type":253,"children":687,"markDefs":692,"style":262},"b724e0652e4b",[688],{"_key":689,"_type":257,"marks":690,"text":691},"421415733f93",[],"For example, if a menu item costs $8 in ingredients and generates $30 in sales, your ideal food cost percentage would be 26.7%. Calculating your ideal food cost helps you realize whether individual menu items are priced to support healthy margins before they ever reach the kitchen’s expo line.",[],{"_key":694,"_type":253,"children":695,"markDefs":699,"style":262},"46c68c66559f",[696],{"_key":697,"_type":257,"marks":698,"text":360},"bc8395bf82cf",[],[],{"_key":701,"_type":253,"children":702,"markDefs":707,"style":654},"962b17632a38",[703],{"_key":704,"_type":257,"marks":705,"text":706},"498bf42d38c3",[259],"Actual Food Cost Percentage Formula",[],{"_key":709,"_type":253,"children":710,"markDefs":715,"style":262},"7c48d3af9c5d",[711],{"_key":712,"_type":257,"marks":713,"text":714},"19cc9176fe2d",[],"Actual food cost starts with your cost of goods sold (COGS), which accounts for inventory used during a specific period:",[],{"_key":717,"_type":253,"children":718,"markDefs":722,"style":262},"8dcdaddce924",[719],{"_key":720,"_type":257,"marks":721,"text":360},"7da94e3d7783",[],[],{"_key":724,"_type":253,"children":725,"markDefs":730,"style":262},"7fd21cf0271a",[726],{"_key":727,"_type":257,"marks":728,"text":729},"83ccb4d11d8d",[259],"Step 1. Calculate Actual COGS",[],{"_key":732,"_type":253,"children":733,"markDefs":738,"style":262},"8d2ef35aab99",[734],{"_key":735,"_type":257,"marks":736,"text":737},"64d13e882361",[417],"Actual COGS = Opening Inventory + Purchases − Ending Inventory",[],{"_key":740,"_type":253,"children":741,"markDefs":745,"style":262},"6e4837ae711b",[742],{"_key":743,"_type":257,"marks":744,"text":360},"bef4b6b38fe6",[],[],{"_key":747,"_type":253,"children":748,"markDefs":753,"style":262},"aa7aabc24d33",[749],{"_key":750,"_type":257,"marks":751,"text":752},"3a90baa26b59",[259],"Step 2: Calculate Actual Food Cost Percentage",[],{"_key":755,"_type":253,"children":756,"markDefs":761,"style":262},"597f7ef82733",[757],{"_key":758,"_type":257,"marks":759,"text":760},"d886595adc9c",[417],"Actual Food Cost % = Actual COGS ÷ Food Sales × 100",[],{"_key":763,"_type":253,"children":764,"markDefs":768,"style":262},"cfa319fb7c0b",[765],{"_key":766,"_type":257,"marks":767,"text":360},"19a6dcf9baac",[],[],{"_key":770,"_type":253,"children":771,"markDefs":776,"style":262},"daf396bd1269",[772],{"_key":773,"_type":257,"marks":774,"text":775},"1bc7477fa62d",[],"For example, imagine you begin the week with $6,000 in inventory, purchase another $4,000 in ingredients mid-week, and finish with $2,500 in inventory. Your actual COGS is $7,500. If the restaurant generated $25,000 in weekly food sales, your actual food cost percentage would be 30%.",[],{"_key":778,"_type":253,"children":779,"markDefs":783,"style":262},"ef403b03b29d",[780],{"_key":781,"_type":257,"marks":782,"text":360},"e8ef3de08bdb",[],[],{"_key":785,"_type":253,"children":786,"markDefs":800,"style":262},"5b827bc07574",[787,791,796],{"_key":788,"_type":257,"marks":789,"text":790},"7ce40de4d225",[],"Though these are hypothetical figures, comparing your actual percentage to your ideal percentage can reveal where costs are creeping higher than expected. Food waste is often a major contributor. Limited- and full-service restaurants generate more than ",{"_key":792,"_type":257,"marks":793,"text":795},"f806629503ad",[794],"6fb8d3b8a546","$103 billion in surplus food",{"_key":797,"_type":257,"marks":798,"text":799},"da72212f4981",[]," each year, making waste reduction an overlooked tactic to improve profitability without sacrificing food quality.",[801],{"_key":794,"_type":352,"href":802,"internalAnchor":8,"newWindow":8,"reference":8},"https:\u002F\u002Finsights-engine.refed.org\u002Ffood-waste-monitor?break_by=subsector&indicator=us-dollars-surplus&sector=foodservice&view=detail&year=2024",{"_key":804,"_type":253,"children":805,"markDefs":809,"style":262},"609668412d06",[806],{"_key":807,"_type":257,"marks":808,"text":360},"cf51e90a9300",[],[],{"_key":811,"_type":253,"children":812,"markDefs":817,"style":381},"d385d52db866",[813],{"_key":814,"_type":257,"marks":815,"text":816},"0a141f4711b7",[259],"What Is a Good Food Cost Percentage?",[],{"_key":819,"_type":253,"children":820,"markDefs":834,"style":262},"97753fa1bccf",[821,825,830],{"_key":822,"_type":257,"marks":823,"text":824},"3c7502cd1dd4",[],"There’s no single food cost percentage every restaurant should aim for. While food costs account for roughly ",{"_key":826,"_type":257,"marks":827,"text":829},"4ace0037fd2e",[828],"5e97a355b7e1","33 cents of every dollar",{"_key":831,"_type":257,"marks":832,"text":833},"3c730e91bb8a",[]," in restaurant sales on average, that figure is just a broad industry snapshot. What’s considered healthy or sustainable depends on your restaurant’s concept, menu, and business model, making comparisons across different types of restaurants less meaningful.",[835],{"_key":828,"_type":352,"href":836,"internalAnchor":8,"newWindow":8,"reference":8},"https:\u002F\u002Frestaurant.org\u002Fresearch-and-media\u002Fresearch\u002Finflation\u002F",{"_key":838,"_type":253,"children":839,"markDefs":843,"style":262},"6736b4d8743c",[840],{"_key":841,"_type":257,"marks":842,"text":360},"653f19d5ea2d",[],[],{"_key":845,"_type":253,"children":846,"markDefs":851,"style":262},"b8fac2eade61",[847],{"_key":848,"_type":257,"marks":849,"text":850},"4dbefe2be36c",[],"Quick-service restaurants, for instance, often operate with lower food costs because of standardized menus and efficient operations. On the other hand, casual dining and fine dining restaurants may accept higher food costs in exchange for premium ingredients or elevated guest experiences. Restaurants with alcohol and other specialty beverage menus may also look different than concepts focused primarily on food sales.",[],{"_key":853,"_type":253,"children":854,"markDefs":858,"style":262},"9b76d4d0c8be",[855],{"_key":856,"_type":257,"marks":857,"text":360},"dc499c9f4041",[],[],{"_key":860,"_type":253,"children":861,"markDefs":866,"style":262},"968319310119",[862],{"_key":863,"_type":257,"marks":864,"text":865},"45f1907eb83f",[],"The food cost percentage formula becomes most useful when you compare your own performance over time or benchmark against restaurants with a similar concept. A number that’s healthy for one business may not be realistic (or even desirable) for another. Rather than chasing an industry average, focus on the operational changes that have the greatest influence on your own results.",[],{"_key":868,"_type":253,"children":869,"markDefs":873,"style":262},"a8cee44a8e73",[870],{"_key":871,"_type":257,"marks":872,"text":360},"c657f02a48b6",[],[],{"_key":875,"_type":253,"children":876,"markDefs":881,"style":381},"a3cbc4eedd55",[877],{"_key":878,"_type":257,"marks":879,"text":880},"68dfa7124d78",[259],"What Drives Food Cost Percentage?",[],{"_key":883,"_type":253,"children":884,"markDefs":897,"style":262},"975a9ce0062f",[885,889,893],{"_key":886,"_type":257,"marks":887,"text":888},"aea8bc7f794e",[],"No single factor determines your food cost percentage. Instead, it reflects dozens of daily decisions made across purchasing, pricing, and service. Understanding the biggest drivers helps you identify where small operational improvements can have the greatest impact on profitability ",{"_key":890,"_type":257,"marks":891,"text":892},"ba3c32f7d8aa",[417],"without",{"_key":894,"_type":257,"marks":895,"text":896},"00867eb0d8c1",[]," compromising the guest experience.",[],{"_key":899,"_type":253,"children":900,"markDefs":904,"style":262},"15a8035af570",[901],{"_key":902,"_type":257,"marks":903,"text":360},"b6c7d05ccb40",[],[],{"_key":906,"_type":253,"children":907,"markDefs":912,"style":654},"e71495895c85",[908],{"_key":909,"_type":257,"marks":910,"text":911},"de1679f9fd5e",[259],"Menu Pricing",[],{"_key":914,"_type":253,"children":915,"markDefs":920,"style":262},"1c12bc905ffe",[916],{"_key":917,"_type":257,"marks":918,"text":919},"172c309c99d0",[],"The prices on your menu are just as important as the cost of the ingredients on the plate. Even if ingredient prices stay exactly the same, your food cost percentage can increase if menu prices no longer reflect rising operating expenses like labor and utility costs. Regularly reassessing menu prices helps protect margins while ensuring each dish continues to support the financial goals of your restaurant.",[],{"_key":922,"_type":253,"children":923,"markDefs":927,"style":262},"39f923d24d30",[924],{"_key":925,"_type":257,"marks":926,"text":360},"c7927f2fff51",[],[],{"_key":929,"_type":253,"children":930,"markDefs":935,"style":654},"1228bc8a94c1",[931],{"_key":932,"_type":257,"marks":933,"text":934},"86338582b4af",[259],"Ingredient Costs",[],{"_key":937,"_type":253,"children":938,"markDefs":952,"style":262},"cce9a0366195",[939,943,948],{"_key":940,"_type":257,"marks":941,"text":942},"61f5690fed94",[],"Every ingredient that enters your kitchen becomes part of the food cost percentage formula. Supplier price increases, commodity market fluctuations, and seasonal availability can all raise your costs before a dish ever reaches the customer. Periodically reviewing vendor pricing and evaluating substitutions can help offset higher expenses without lowering food quality. Building menus around seasonal ingredients can also help ",{"_key":944,"_type":257,"marks":945,"text":947},"0a5879270b63",[946],"6777ea4a2755","reduce produce costs",{"_key":949,"_type":257,"marks":950,"text":951},"3a4ff4d3ad9a",[]," while keeping offerings fresh for guests.",[953],{"_key":946,"_type":442,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":954},{"_type":331,"locale":38,"slug":955},"\u002Fblog\u002Fhow-to-reduce-food-waste-in-restaurants",{"_key":957,"_type":253,"children":958,"markDefs":962,"style":262},"01d8c546d1ea",[959],{"_key":960,"_type":257,"marks":961,"text":360},"9babeb82109b",[],[],{"_key":964,"_type":253,"children":965,"markDefs":970,"style":654},"2998b279aa8d",[966],{"_key":967,"_type":257,"marks":968,"text":969},"27767b0fb662",[259],"Portion Control",[],{"_key":972,"_type":253,"children":973,"markDefs":987,"style":262},"e08d801c6a64",[974,978,983],{"_key":975,"_type":257,"marks":976,"text":977},"bab52585bff2",[],"Once ingredients reach the kitchen, consistency becomes the next priority. A single extra ounce of protein or an oversized scoop of fries may not seem significant, but repeated across hundreds of orders, those small differences add up quickly. Maintaining consistent recipes and portions helps stabilize your food cost percentage while giving guests the ",{"_key":979,"_type":257,"marks":980,"text":982},"71c8116f7e8b",[981],"c325aca84206","reliable dining experience",{"_key":984,"_type":257,"marks":985,"text":986},"54e33d4cebf3",[]," they expect every visit.",[988],{"_key":981,"_type":442,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":989},{"_type":331,"locale":38,"slug":990},"\u002Fblog\u002Fbuilding-brand-loyalty-experience",{"_key":992,"_type":253,"children":993,"markDefs":997,"style":262},"77d8bb80014a",[994],{"_key":995,"_type":257,"marks":996,"text":360},"e7ee59a232e6",[],[],{"_key":999,"_type":253,"children":1000,"markDefs":1005,"style":654},"a39c0e8eea23",[1001],{"_key":1002,"_type":257,"marks":1003,"text":1004},"2da0fda984cb",[259],"Food Waste",[],{"_key":1007,"_type":253,"children":1008,"markDefs":1022,"style":262},"0a13dd51bd63",[1009,1013,1018],{"_key":1010,"_type":257,"marks":1011,"text":1012},"e76505644aa9",[],"Not every cost comes from the meals you serve. Food waste can happen at nearly ",{"_key":1014,"_type":257,"marks":1015,"text":1017},"fbbc43e0c95b",[1016],"3dc1127c5229","every stage of kitchen operations",{"_key":1019,"_type":257,"marks":1020,"text":1021},"55a3aa8d0b76",[],". Some losses happen during prep through trim waste; others happen when ingredients spoil in storage or prepared food goes unsold at the end of the day. Since the actual food cost percentage formula accounts for all inventory used, those costs still count even if the food never generates revenue.",[1023],{"_key":1016,"_type":442,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":1024},{"_type":331,"locale":38,"slug":1025},"\u002Fblog\u002Ffood-supply-chain-waste",{"_key":1027,"_type":253,"children":1028,"markDefs":1032,"style":262},"40d032ee9f3b",[1029],{"_key":1030,"_type":257,"marks":1031,"text":360},"bdc54877cf01",[],[],{"_key":1034,"_type":253,"children":1035,"markDefs":1040,"style":654},"8c08fbe359eb",[1036],{"_key":1037,"_type":257,"marks":1038,"text":1039},"52a5af0c42cb",[259],"Inventory Management",[],{"_key":1042,"_type":253,"children":1043,"markDefs":1057,"style":262},"a2be0a03a6cd",[1044,1048,1053],{"_key":1045,"_type":257,"marks":1046,"text":1047},"a7475b70878d",[],"The final piece is making sure you know exactly what’s in your kitchen and how quickly it’s moving. Over-ordering, inaccurate inventory counts, and products that expire before they’re used all increase costs unnecessarily. Following practices like first in, first out (FIFO) and ",{"_key":1049,"_type":257,"marks":1050,"text":1052},"a57a6ad60ffe",[1051],"65705d8dc1e7","ordering based on expected demand",{"_key":1054,"_type":257,"marks":1055,"text":1056},"2d035129b30d",[]," helps keep your food cost percentage aligned with actual sales instead of avoidable losses.",[1058],{"_key":1051,"_type":442,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":1059},{"_type":331,"locale":38,"slug":1060},"\u002Fblog\u002Frestaurant-demand-forecasting",{"_key":1062,"_type":253,"children":1063,"markDefs":1067,"style":262},"8a6bbad2dafc",[1064],{"_key":1065,"_type":257,"marks":1066,"text":360},"d72e22a05494",[],[],{"_key":1069,"_type":253,"children":1070,"markDefs":1075,"style":381},"057740fe8d4a",[1071],{"_key":1072,"_type":257,"marks":1073,"text":1074},"e22b51ac5036",[259],"How to Lower Food Cost Percentage Without Sacrificing Quality",[],{"_key":1077,"_type":253,"children":1078,"markDefs":1083,"style":262},"6460c3f4af17",[1079],{"_key":1080,"_type":257,"marks":1081,"text":1082},"6016356f452b",[],"Every restaurant has opportunities to improve profitability without cutting corners. You don’t have to overhaul your prices or slice portion sizes overnight to improve your food cost percentage. Instead, focusing on a handful of operational best practices can help lower it over time while protecting the consistency and quality your guests expect. Consider small steps, such as:",[],{"_key":1085,"_type":253,"children":1086,"markDefs":1090,"style":262},"925727b8c536",[1087],{"_key":1088,"_type":257,"marks":1089,"text":360},"225fa649b35c",[],[],{"_key":1092,"_type":253,"children":1093,"level":1111,"listItem":1112,"markDefs":1113,"style":262},"8920bbb21580",[1094,1098,1102,1107],{"_key":1095,"_type":257,"marks":1096,"text":1097},"9b65722a6994",[259],"Optimize your menu mix. ",{"_key":1099,"_type":257,"marks":1100,"text":1101},"20db3538f8e7",[],"Highlight dishes with stronger margins, and regularly ",{"_key":1103,"_type":257,"marks":1104,"text":1106},"69e020fb3a9f",[1105],"dd92c071bde5","review menu performance",{"_key":1108,"_type":257,"marks":1109,"text":1110},"846ae128ef9b",[]," to identify items that no longer support your profitability goals.",1,"bullet",[1114],{"_key":1105,"_type":442,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":1115},{"_type":331,"locale":38,"slug":1116},"\u002Fblog\u002Fcustomer-purchasing-habits-for-smarter-sales",{"_key":1118,"_type":253,"children":1119,"level":1111,"listItem":1112,"markDefs":1128,"style":262},"6b0737d410e5",[1120,1124],{"_key":1121,"_type":257,"marks":1122,"text":1123},"ce45611e0355",[259],"Standardize recipes and portions.",{"_key":1125,"_type":257,"marks":1126,"text":1127},"4fd3555a2971",[]," Consistent preparation helps reduce unnecessary food costs while giving guests the same experience every time they order.",[],{"_key":1130,"_type":253,"children":1131,"level":1111,"listItem":1112,"markDefs":1140,"style":262},"87c909745855",[1132,1136],{"_key":1133,"_type":257,"marks":1134,"text":1135},"b24301e3dd8f",[259],"Strengthen inventory practices.",{"_key":1137,"_type":257,"marks":1138,"text":1139},"c31560be70e2",[]," Keep inventory accurate, use FIFO on all new purchases, and prep ingredients before they expire to minimize avoidable losses.",[],{"_key":1142,"_type":253,"children":1143,"level":1111,"listItem":1112,"markDefs":1152,"style":262},"35cb4f621248",[1144,1148],{"_key":1145,"_type":257,"marks":1146,"text":1147},"994f139fe7e5",[259],"Improve demand forecasting.",{"_key":1149,"_type":257,"marks":1150,"text":1151},"3b72b9f83a19",[]," Prepare closer to expected demand to help reduce overproduction while making sure popular menu items remain available.",[],{"_key":1154,"_type":253,"children":1155,"level":1111,"listItem":1112,"markDefs":1164,"style":262},"7dda819ddbfb",[1156,1160],{"_key":1157,"_type":257,"marks":1158,"text":1159},"757c622f1dfa",[259],"Recover value from surplus food.",{"_key":1161,"_type":257,"marks":1162,"text":1163},"efa56884f1c6",[]," Leverage surplus food marketplaces to sell eligible unsold food instead of treating it as a complete loss.",[],{"_key":1166,"_type":253,"children":1167,"markDefs":1171,"style":262},"1dbfb30ff604",[1168],{"_key":1169,"_type":257,"marks":1170,"text":360},"5ae4f9e2c710",[],[],{"_key":1173,"_type":253,"children":1174,"markDefs":1188,"style":262},"fe8ad94f8a95",[1175,1179,1184],{"_key":1176,"_type":257,"marks":1177,"text":1178},"3201c3069b3a",[],"Even the best-performing restaurants occasionally end the day with perfectly good food that never gets sold. Rather than writing those items off entirely, many restaurants use ",{"_key":1180,"_type":257,"marks":1181,"text":1183},"f562e36b7c97",[1182],"61714af2ce79","surplus food marketplaces",{"_key":1185,"_type":257,"marks":1186,"text":1187},"c3edc4231812",[]," to recover a portion of their costs while reducing the amount of food waste each shift. It’s a practical way to improve profitability without changing recipes or compromising the guest experience. Too Good To Go gives restaurants a simple way to put this strategy into action.",[1189],{"_key":1182,"_type":442,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":1190},{"_type":331,"locale":38,"slug":1191},"\u002Fblog\u002Ffood-waste-technology",{"_key":1193,"_type":253,"children":1194,"markDefs":1198,"style":262},"14a7ec94947b",[1195],{"_key":1196,"_type":257,"marks":1197,"text":360},"7260ca31128c",[],[],{"_key":1200,"_type":253,"children":1201,"markDefs":1215,"style":262},"d125dc56aeab",[1202,1206,1211],{"_key":1203,"_type":257,"marks":1204,"text":1205},"878eac95fa39",[],"Too Good To Go helps restaurants recover value from eligible surplus food through ",{"_key":1207,"_type":257,"marks":1208,"text":1210},"fdcf2387f889",[1209],"d8cb169ced45","discounted Surprise Bags",{"_key":1212,"_type":257,"marks":1213,"text":1214},"e6cab2b5023c",[],". Restaurants bundle available items, set a pickup window that fits their operations, and list the Surprise Bags in the app. Customers purchase directly through Too Good To Go, then collect their order during the designated pickup window. Less food goes to waste, more revenue comes from surplus food, and restaurants have another way to connect with local customers.",[1216],{"_key":1209,"_type":442,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":1217},{"_type":300,"locale":38,"slug":301},{"_key":1219,"_type":253,"children":1220,"markDefs":1224,"style":262},"9c2cf8ee907e",[1221],{"_key":1222,"_type":257,"marks":1223,"text":360},"7a6d18cacbbc",[],[],{"_key":1226,"_type":253,"children":1227,"markDefs":1232,"style":381},"9851c2a61274",[1228],{"_key":1229,"_type":257,"marks":1230,"text":1231},"d40a7840e4cc",[259],"Food Cost Percentage Is About More Than Spending Less",[],{"_key":1234,"_type":253,"children":1235,"markDefs":1240,"style":262},"39f2e46cdf6c",[1236],{"_key":1237,"_type":257,"marks":1238,"text":1239},"e4eb7fe0c034",[],"Improving your food cost percentage isn’t about slashing ingredient costs; it’s about making the most of every dollar you spend. Restaurants that consistently protect their margins do so by pricing thoughtfully, serving consistent portions, and managing inventory carefully. Reducing avoidable waste is another way to strengthen profitability while continuing to deliver the quality guests expect.",[],{"_key":1242,"_type":253,"children":1243,"markDefs":1247,"style":262},"003374ba7036",[1244],{"_key":1245,"_type":257,"marks":1246,"text":360},"e4677dea68f8",[],[],{"_key":1249,"_type":253,"children":1250,"markDefs":1264,"style":262},"0968c86a2add",[1251,1255,1260],{"_key":1252,"_type":257,"marks":1253,"text":1254},"1610c4209626",[],"Too Good To Go helps restaurants turn eligible surplus food into an opportunity instead of a loss. By recovering value from food that might otherwise go unsold, restaurants can not only reduce waste but also improve profitability and introduce more local customers to what they have to offer. ",{"_key":1256,"_type":257,"marks":1257,"text":1259},"3c3d49f09312",[1258],"4558e3caeb53","Sell your surplus food",{"_key":1261,"_type":257,"marks":1262,"text":1263},"02d5022589e7",[]," on Too Good to Go today.",[1265],{"_key":1258,"_type":442,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":1266},{"_type":300,"locale":38,"slug":301},{"_key":1268,"_type":253,"children":1269,"markDefs":1273,"style":262},"5392ee519f64",[1270],{"_key":1271,"_type":257,"marks":1272,"text":360},"e1fa74007682",[],[],{"_key":1275,"_type":253,"children":1276,"markDefs":1282,"style":262},"04fcc890a37f",[1277],{"_key":1278,"_type":257,"marks":1279,"text":1281},"9452f2e2daed",[1280],"4cb2c57ee400","Start selling your surplus food today",[1283],{"_key":1280,"_type":442,"ctaStyle":44,"internalAnchor":8,"newWindow":44,"otherLocales":45,"reference":1284},{"_type":300,"locale":38,"slug":301},{"_key":1286,"_type":253,"children":1287,"markDefs":1291,"style":262},"c17987e4fd23",[1288],{"_key":1289,"_type":257,"marks":1290,"text":360},"0bd9f195ff27",[],[],{"_key":1293,"_type":253,"children":1294,"markDefs":1298,"style":262},"ced7c15e47ae",[1295],{"_key":1296,"_type":257,"marks":1297,"text":360},"f676bb1eabe3",[],[],{"_key":1300,"_type":253,"children":1301,"markDefs":1306,"style":381},"292b057d2085",[1302],{"_key":1303,"_type":257,"marks":1304,"text":1305},"f5b684205c96",[259],"FAQs About Food Cost Percentage",[],{"_key":1308,"_type":253,"children":1309,"markDefs":1314,"style":654},"bc6babd702dc",[1310],{"_key":1311,"_type":257,"marks":1312,"text":1313},"1386f1fbde07",[259],"What is the difference between food cost and food cost percentage?",[],{"_key":1316,"_type":253,"children":1317,"markDefs":1322,"style":262},"df3689998604",[1318],{"_key":1319,"_type":257,"marks":1320,"text":1321},"26abfce6e071",[],"Food cost is the total amount you spend on ingredients. Food cost percentage compares that spending to your food sales, giving you a clearer picture of profitability. Two restaurants may spend the same amount on ingredients, but the one generating more sales from those ingredients will have a healthier food cost percentage.",[],{"_key":1324,"_type":253,"children":1325,"markDefs":1329,"style":262},"b427ffd5ad12",[1326],{"_key":1327,"_type":257,"marks":1328,"text":360},"7a50bbb849a3",[],[],{"_key":1331,"_type":253,"children":1332,"markDefs":1337,"style":654},"8c7361f9f8e0",[1333],{"_key":1334,"_type":257,"marks":1335,"text":1336},"5ed410e25bbb",[259],"How often should restaurants calculate food cost percentage?",[],{"_key":1339,"_type":253,"children":1340,"markDefs":1345,"style":262},"59772a70a3ff",[1341],{"_key":1342,"_type":257,"marks":1343,"text":1344},"08aaa48abf03",[],"Many restaurants calculate food cost percentage weekly so they can spot changes before they become larger problems. Others review it daily for high-volume operations or monthly for broader financial reporting. The right schedule depends on your operation, but reviewing it consistently makes it easier to identify trends and respond quickly.",[],{"_key":1347,"_type":253,"children":1348,"markDefs":1352,"style":262},"227f95ef1aad",[1349],{"_key":1350,"_type":257,"marks":1351,"text":360},"8e43420e35ed",[],[],{"_key":1354,"_type":253,"children":1355,"markDefs":1360,"style":654},"5d8ed87270d3",[1356],{"_key":1357,"_type":257,"marks":1358,"text":1359},"c9a8358c3a31",[259],"Can reducing food waste improve restaurant profitability?",[],{"_key":1362,"_type":253,"children":1363,"markDefs":1368,"style":262},"6aa41cea21ac",[1364],{"_key":1365,"_type":257,"marks":1366,"text":1367},"20353b4c334d",[],"Yes. Reducing food waste helps restaurants make better use of the inventory they’ve already purchased. Improvements such as accurate portioning, stronger inventory management, better demand forecasting, and recovering value from eligible surplus food can all help improve profitability without compromising food quality or the guest experience.",[],{"_key":1370,"_type":253,"children":1371,"markDefs":1375,"style":262},"b1cdb5c0e6c3",[1372],{"_key":1373,"_type":257,"marks":1374,"text":360},"11f59f4d495a",[],[],{"_key":1377,"_type":253,"children":1378,"markDefs":1383,"style":654},"628df07397b1",[1379],{"_key":1380,"_type":257,"marks":1381,"text":1382},"dd361fdf15a1",[259],"How does Too Good To Go work for restaurants?",[],{"_key":1385,"_type":253,"children":1386,"markDefs":1391,"style":262},"f984e56a501e",[1387],{"_key":1388,"_type":257,"marks":1389,"text":1390},"9423201ac46d",[],"Too Good To Go helps restaurants recover value from eligible surplus food through discounted Surprise Bags (https:\u002F\u002Fwww.toogoodtogo.com\u002Fen-us\u002Fsurplus-food-marketplace). Restaurants bundle available items, choose a pickup window that fits their operations, and list the Surprise Bags in the app. Customers purchase them directly through Too Good To Go and collect their order during the designated pickup time.",[],{"_key":1393,"_type":253,"children":1394,"markDefs":1398,"style":262},"48fd1a9ef710",[1395],{"_key":1396,"_type":257,"marks":1397,"text":360},"0c3b68bcd47b",[],[],{"_key":1400,"_type":253,"children":1401,"markDefs":1406,"style":654},"c153dcb1e7d1",[1402],{"_key":1403,"_type":257,"marks":1404,"text":1405},"d9983207fb96",[259],"Does using Too Good To Go create extra work for restaurant staff?",[],{"_key":1408,"_type":253,"children":1409,"markDefs":1414,"style":262},"ab2be7e1f0fd",[1410],{"_key":1411,"_type":257,"marks":1412,"text":1413},"6952188bb464",[],"Too Good To Go is designed to fit into existing restaurant workflows. Since restaurants decide when to list Surprise Bags and when customers can pick them up, staff can choose a process that works alongside normal service. Instead of preparing separate meals, restaurants package eligible surplus food that would otherwise go unsold.",[],{"_key":1416,"_type":253,"children":1417,"markDefs":1421,"style":262},"acab3a81819b",[1418],{"_key":1419,"_type":257,"marks":1420,"text":360},"6e3f2ccab554",[],[],{"_key":1423,"_type":253,"children":1424,"markDefs":1429,"style":654},"76a1af4c3ae4",[1425],{"_key":1426,"_type":257,"marks":1427,"text":1428},"da821d1bd524",[259],"What can restaurants include in a Too Good To Go Surprise Bag?",[],{"_key":1431,"_type":253,"children":1432,"markDefs":1437,"style":262},"9ff0579a2e2a",[1433],{"_key":1434,"_type":257,"marks":1435,"text":1436},"17816ac2ba37",[],"Surprise Bags can include a variety of eligible surplus food that remains fresh and safe to enjoy but is unlikely to sell before the end of a shift. Depending on the restaurant, that may include prepared meals, baked goods, sandwiches, salads, side dishes, or desserts. Because availability changes daily, the contents are always a surprise for customers.",[],"default",[1440,1474,1511],{"_key":1441,"_type":1442,"buttons":1443,"content":1447,"theme":1473},"1jkf7lre7g28","modularContentBlocks.outer.cta",[1444],{"_key":1445,"_type":149,"buttonColor":150,"buttonText":1446,"link":8,"variant":152},"a282dd0ebbbc","Download the app",[1448,1461],{"_key":1449,"_type":1450,"description":1451,"size":1438,"title":1452,"variant":1438},"6dk1pal4i10a","modularContentBlocks.inner.title",[],[1453],{"_key":1454,"_type":253,"children":1455,"markDefs":1460,"style":262},"GZyjLe6U5nxM0R9gPkHYAG",[1456],{"_key":1457,"_type":257,"marks":1458,"text":1459},"GZyjLe6U5nxM0R9gPkHYCa",[],"start saving food today",[],{"_key":1462,"_type":1463,"text":1464},"is9la02ijx8m","modularContentBlocks.inner.baseText",[1465],{"_key":1466,"_type":253,"children":1467,"markDefs":1472,"style":262},"740b5c918016",[1468],{"_key":1469,"_type":257,"marks":1470,"text":1471},"2f54f31664640",[],"Our app is the world's largest marketplace for surplus food. We help users rescue good food from going to waste, offering great value for money at local stores, cafes and restaurants.",[],"dark",{"_key":1475,"_type":1476,"alignment":1477,"content":1478,"extraSpacing":45,"theme":1473,"variant":1510},"bndt73pfqirw","modularContentBlocks.outer.section","center",[1479,1491,1495],{"_key":1480,"_type":1450,"description":1481,"preTitle":8,"size":1438,"title":1482,"variant":1477},"80hf92fygbfk",[],[1483],{"_key":1484,"_type":253,"children":1485,"markDefs":1490,"style":262},"GZyjLe6U5nxM0R9gPkHYEu",[1486],{"_key":1487,"_type":257,"marks":1488,"text":1489},"GZyjLe6U5nxM0R9gPkHYHE",[],"Too good to go blog",[],{"_key":1492,"_type":1493,"listingDocument":331,"listingType":1494},"0zn20h9ot6i0","modularContentBlocks.inner.listing","latest",{"_key":1496,"_type":1497,"buttons":1498,"variant":1477},"l1m71gx3wqqc","modularContentBlocks.inner.buttonGroup",[1499],{"_key":1500,"_type":1501,"link":1502,"title":1508,"variant":1509},"cb6c6aecbe6c","button",{"_type":1503,"internal":1504,"internalAnchor":8,"linkType":1506,"otherLocales":45,"reference":1507},"link",{"_ref":1505,"_type":13,"_weak":44},"singleton-pages-en-us-about-food-waste-blog-home","internal",{"_type":83,"locale":38,"slug":245},"More blog posts","text","noImage",{"_key":1512,"_type":1476,"alignment":1477,"content":1513,"extraSpacing":45,"theme":1473,"variant":1510},"fd20632i3coe",[1514,1533],{"_key":1515,"_type":1450,"description":1516,"preTitle":8,"size":1517,"title":1518,"variant":1477},"jq0ms9uze8v9",[],"small",[1519],{"_key":1520,"_type":253,"children":1521,"markDefs":1532,"style":262},"GZyjLe6U5nxM0R9gPkHYJY",[1522,1526,1528],{"_key":1523,"_type":257,"marks":1524,"text":1525},"wHKr7lvBejmoAuZJ6jL8XE",[],"JOIN over ",{"_key":1527,"_type":272,"dataType":273,"text":288},"stat-1764846117414-wcj9ynzxu",{"_key":1529,"_type":257,"marks":1530,"text":1531},"wHKr7lvBejmoAuZJ6jL8bO",[]," BUSINESSES FIGHTING FOOD WASTE WITH US",[],{"_key":1534,"_type":1497,"buttons":1535,"variant":1477},"mbqmmpj8a8c2",[1536,1538],{"_key":1537,"_type":149,"buttonColor":150,"buttonText":1446,"link":8,"variant":152},"4029981371e9",{"_key":1539,"_type":1501,"link":1540,"title":1542,"variant":1438},"fd77cb9e97ff",{"_type":1503,"linkType":1541,"otherLocales":45,"ssu":159},"ssu","Sign up your business",{"_type":1544,"alt":1545,"asset":1546,"fit":1548},"imageWithAlt","A woman in an apron chopping an onion in a professional kitchen.",{"_ref":1547,"_type":13},"image-4402ca664dda2297627d47aee9cbea48ac1d73cd-4096x2160-jpg","contain","public",{"_ref":1505,"_type":13},"Too Good To Go Blog","2026-07-30T22:00:00.000Z",{"metaDescription":1554,"metaTitle":1555},"Understand the food cost percentage formula and what it reveals about restaurant profitability. Learn practical ways to reduce costs without cutting quality.","A Restaurant Operator’s Guide to Food Cost Percentage",{"_type":1557,"current":1558},"slug","food-cost-percentage","How Restaurants Can Reduce Food Cost Percentage Without Cutting Quality",[],{"posts":1562,"totalPosts":1601},[1563,1569,1580,1591],{"_createdAt":329,"_id":1564,"categories":8,"content":1565,"excerpt":1554,"file":8,"image":1566,"language":38,"migrated":8,"pretitle":1551,"publishedAt":1552,"slug":1568,"title":1559,"updatedAt":8,"url":8},"5e40ad59-48fe-4b27-b40e-e485a2dc8db9","Restaurant operators have had to navigate years of rising costs. Between 2020 and 2026 alone, total food costs for the average restaurant increased by 34%, putting even more pressure on already tight margins. Add in expenses like utilities, occupancy, and credit card processing fees, and there isn’t much room for error. The good news? Food is one of the few major costs operators can actively control.\n\n\n\nRaising menu prices or shrinking portions may seem like the obvious answer, but they’re far from the only solutions. Understanding your food cost percentage helps you spot opportunities to improve profitability while protecting the quality your guests expect. The first step is knowing what this metric actually measures and how to use the food cost percentage formula to make smarter decisions every day.\n\n\nWhat Is Food Cost Percentage in Restaurants?\n\nIf ingredients feel pricier than ever, you’re not imagining it. More than 80% of operators reported higher food costs in 2025. However, ingredients don’t tell the whole story. Food cost percentage measures how much of your food sales revenue is spent on ingredients. It’s one of the clearest indicators of menu profitability because it shows how efficiently your kitchen turns inventory into revenue, rather than just how much you’re spending.\n\n\n\nMost restaurants monitor both ideal and actual food cost. Ideal food cost is based on recipe costs and expected portions, assuming every ingredient is used exactly as planned. Actual food cost reflects what really happened in your kitchen, including spoilage, overportioning, prep waste, and other losses. The gap between the two often reveals where opportunities for improvement exist.\n\n\n\nSpending $8,000 on ingredients isn’t inherently good or bad. The real value comes from calculating food costs in relation to overall restaurant revenue. Spending $8,000 to generate $20,000 in food sales tells a very different story than spending the same amount to generate $35,000. Food cost percentage puts spending in the context of sales, making it much easier to compare performance over time and identify changes that deserve a closer look.\n\n\n\nHow to Calculate Your Food Cost Percentage\n\nCalculating your restaurant’s food cost percentage is straightforward once you know which version you’re using: the ideal food cost formula or the actual food cost formula. Here’s a step-by-step guide to do just that.\n\n\n\nIdeal Food Cost Percentage Formula\n\nIdeal food cost compares the expected cost of ingredients to the revenue those menu items generate:\n\n\n\nIdeal Food Cost % = Food Cost ÷ Food Sales × 100\n\n\n\nFor example, if a menu item costs $8 in ingredients and generates $30 in sales, your ideal food cost percentage would be 26.7%. Calculating your ideal food cost helps you realize whether individual menu items are priced to support healthy margins before they ever reach the kitchen’s expo line.\n\n\n\nActual Food Cost Percentage Formula\n\nActual food cost starts with your cost of goods sold (COGS), which accounts for inventory used during a specific period:\n\n\n\nStep 1. Calculate Actual COGS\n\nActual COGS = Opening Inventory + Purchases − Ending Inventory\n\n\n\nStep 2: Calculate Actual Food Cost Percentage\n\nActual Food Cost % = Actual COGS ÷ Food Sales × 100\n\n\n\nFor example, imagine you begin the week with $6,000 in inventory, purchase another $4,000 in ingredients mid-week, and finish with $2,500 in inventory. Your actual COGS is $7,500. If the restaurant generated $25,000 in weekly food sales, your actual food cost percentage would be 30%.\n\n\n\nThough these are hypothetical figures, comparing your actual percentage to your ideal percentage can reveal where costs are creeping higher than expected. Food waste is often a major contributor. Limited- and full-service restaurants generate more than $103 billion in surplus food each year, making waste reduction an overlooked tactic to improve profitability without sacrificing food quality.\n\n\n\nWhat Is a Good Food Cost Percentage?\n\nThere’s no single food cost percentage every restaurant should aim for. While food costs account for roughly 33 cents of every dollar in restaurant sales on average, that figure is just a broad industry snapshot. What’s considered healthy or sustainable depends on your restaurant’s concept, menu, and business model, making comparisons across different types of restaurants less meaningful.\n\n\n\nQuick-service restaurants, for instance, often operate with lower food costs because of standardized menus and efficient operations. On the other hand, casual dining and fine dining restaurants may accept higher food costs in exchange for premium ingredients or elevated guest experiences. Restaurants with alcohol and other specialty beverage menus may also look different than concepts focused primarily on food sales.\n\n\n\nThe food cost percentage formula becomes most useful when you compare your own performance over time or benchmark against restaurants with a similar concept. A number that’s healthy for one business may not be realistic (or even desirable) for another. Rather than chasing an industry average, focus on the operational changes that have the greatest influence on your own results.\n\n\n\nWhat Drives Food Cost Percentage?\n\nNo single factor determines your food cost percentage. Instead, it reflects dozens of daily decisions made across purchasing, pricing, and service. Understanding the biggest drivers helps you identify where small operational improvements can have the greatest impact on profitability without compromising the guest experience.\n\n\n\nMenu Pricing\n\nThe prices on your menu are just as important as the cost of the ingredients on the plate. Even if ingredient prices stay exactly the same, your food cost percentage can increase if menu prices no longer reflect rising operating expenses like labor and utility costs. Regularly reassessing menu prices helps protect margins while ensuring each dish continues to support the financial goals of your restaurant.\n\n\n\nIngredient Costs\n\nEvery ingredient that enters your kitchen becomes part of the food cost percentage formula. Supplier price increases, commodity market fluctuations, and seasonal availability can all raise your costs before a dish ever reaches the customer. Periodically reviewing vendor pricing and evaluating substitutions can help offset higher expenses without lowering food quality. Building menus around seasonal ingredients can also help reduce produce costs while keeping offerings fresh for guests.\n\n\n\nPortion Control\n\nOnce ingredients reach the kitchen, consistency becomes the next priority. A single extra ounce of protein or an oversized scoop of fries may not seem significant, but repeated across hundreds of orders, those small differences add up quickly. Maintaining consistent recipes and portions helps stabilize your food cost percentage while giving guests the reliable dining experience they expect every visit.\n\n\n\nFood Waste\n\nNot every cost comes from the meals you serve. Food waste can happen at nearly every stage of kitchen operations. Some losses happen during prep through trim waste; others happen when ingredients spoil in storage or prepared food goes unsold at the end of the day. Since the actual food cost percentage formula accounts for all inventory used, those costs still count even if the food never generates revenue.\n\n\n\nInventory Management\n\nThe final piece is making sure you know exactly what’s in your kitchen and how quickly it’s moving. Over-ordering, inaccurate inventory counts, and products that expire before they’re used all increase costs unnecessarily. Following practices like first in, first out (FIFO) and ordering based on expected demand helps keep your food cost percentage aligned with actual sales instead of avoidable losses.\n\n\n\nHow to Lower Food Cost Percentage Without Sacrificing Quality\n\nEvery restaurant has opportunities to improve profitability without cutting corners. You don’t have to overhaul your prices or slice portion sizes overnight to improve your food cost percentage. Instead, focusing on a handful of operational best practices can help lower it over time while protecting the consistency and quality your guests expect. Consider small steps, such as:\n\n\n\nOptimize your menu mix. Highlight dishes with stronger margins, and regularly review menu performance to identify items that no longer support your profitability goals.\n\nStandardize recipes and portions. Consistent preparation helps reduce unnecessary food costs while giving guests the same experience every time they order.\n\nStrengthen inventory practices. Keep inventory accurate, use FIFO on all new purchases, and prep ingredients before they expire to minimize avoidable losses.\n\nImprove demand forecasting. Prepare closer to expected demand to help reduce overproduction while making sure popular menu items remain available.\n\nRecover value from surplus food. Leverage surplus food marketplaces to sell eligible unsold food instead of treating it as a complete loss.\n\n\n\nEven the best-performing restaurants occasionally end the day with perfectly good food that never gets sold. Rather than writing those items off entirely, many restaurants use surplus food marketplaces to recover a portion of their costs while reducing the amount of food waste each shift. It’s a practical way to improve profitability without changing recipes or compromising the guest experience. Too Good To Go gives restaurants a simple way to put this strategy into action.\n\n\n\nToo Good To Go helps restaurants recover value from eligible surplus food through discounted Surprise Bags. Restaurants bundle available items, set a pickup window that fits their operations, and list the Surprise Bags in the app. Customers purchase directly through Too Good To Go, then collect their order during the designated pickup window. Less food goes to waste, more revenue comes from surplus food, and restaurants have another way to connect with local customers.\n\n\n\nFood Cost Percentage Is About More Than Spending Less\n\nImproving your food cost percentage isn’t about slashing ingredient costs; it’s about making the most of every dollar you spend. Restaurants that consistently protect their margins do so by pricing thoughtfully, serving consistent portions, and managing inventory carefully. Reducing avoidable waste is another way to strengthen profitability while continuing to deliver the quality guests expect.\n\n\n\nToo Good To Go helps restaurants turn eligible surplus food into an opportunity instead of a loss. By recovering value from food that might otherwise go unsold, restaurants can not only reduce waste but also improve profitability and introduce more local customers to what they have to offer. Sell your surplus food on Too Good to Go today.\n\n\n\nStart selling your surplus food today\n\n\n\n\n\nFAQs About Food Cost Percentage\n\nWhat is the difference between food cost and food cost percentage?\n\nFood cost is the total amount you spend on ingredients. Food cost percentage compares that spending to your food sales, giving you a clearer picture of profitability. Two restaurants may spend the same amount on ingredients, but the one generating more sales from those ingredients will have a healthier food cost percentage.\n\n\n\nHow often should restaurants calculate food cost percentage?\n\nMany restaurants calculate food cost percentage weekly so they can spot changes before they become larger problems. Others review it daily for high-volume operations or monthly for broader financial reporting. The right schedule depends on your operation, but reviewing it consistently makes it easier to identify trends and respond quickly.\n\n\n\nCan reducing food waste improve restaurant profitability?\n\nYes. Reducing food waste helps restaurants make better use of the inventory they’ve already purchased. Improvements such as accurate portioning, stronger inventory management, better demand forecasting, and recovering value from eligible surplus food can all help improve profitability without compromising food quality or the guest experience.\n\n\n\nHow does Too Good To Go work for restaurants?\n\nToo Good To Go helps restaurants recover value from eligible surplus food through discounted Surprise Bags (https:\u002F\u002Fwww.toogoodtogo.com\u002Fen-us\u002Fsurplus-food-marketplace). Restaurants bundle available items, choose a pickup window that fits their operations, and list the Surprise Bags in the app. Customers purchase them directly through Too Good To Go and collect their order during the designated pickup time.\n\n\n\nDoes using Too Good To Go create extra work for restaurant staff?\n\nToo Good To Go is designed to fit into existing restaurant workflows. Since restaurants decide when to list Surprise Bags and when customers can pick them up, staff can choose a process that works alongside normal service. Instead of preparing separate meals, restaurants package eligible surplus food that would otherwise go unsold.\n\n\n\nWhat can restaurants include in a Too Good To Go Surprise Bag?\n\nSurprise Bags can include a variety of eligible surplus food that remains fresh and safe to enjoy but is unlikely to sell before the end of a shift. Depending on the restaurant, that may include prepared meals, baked goods, sandwiches, salads, side dishes, or desserts. Because availability changes daily, the contents are always a surprise for customers.",{"_type":1544,"alt":1545,"asset":1567,"fit":1548},{"_ref":1547,"_type":13},"\u002Fblog\u002Ffood-cost-percentage",{"_createdAt":1570,"_id":1571,"categories":8,"content":1572,"excerpt":8,"file":8,"image":1573,"language":38,"migrated":8,"pretitle":1551,"publishedAt":1577,"slug":1578,"title":1579,"updatedAt":8,"url":8},"2026-07-23T15:11:53Z","59984dd0-7a11-4524-971d-80ac6401a4e5","There’s something satisfying about stumbling across a grocery store you never knew existed. Maybe it’s the neighborhood market with incredible produce, or the specialty shop that carries ingredients you can’t find anywhere else. Perhaps it’s the regional supermarket that everyone else seems to have known about all along. Those unexpected finds can completely change the way you shop, and they’re often closer than you think.\n\n\n\nIf you’ve ever searched “local grocery stores near me” and wondered whether there was more to discover than the same handful of familiar chains, you’re asking the right question. The truth is, local groceries come in many forms, from independently owned markets to neighborhood fruit stands that don’t always make the top of popular search results. Here’s how to discover better local grocery options, wherever you live.\n\n\n\nHave You Been Overlooking Local Groceries?\n\nMany people hear the phrase ‘local groceries’ and immediately picture the big-box retailer that’s down the block or the neighborhood supermarket that’s been a staple in the community for the past 30 years. While those retailers certainly qualify, they’re only part of the story. Some of the best neighborhood finds are the local grocery stores you may already pass by every week without a second thought. Consider options like:\n\n\n\nButcher shops\n\nProduce markets\n\nInternational markets\n\nBakeries with grocery selections\n\nRegional grocery chains\n\nIndependent grocers\n\nNatural food stores\n\nFarmer’s markets\n\n\n\nLocal groceries aren’t defined by store size or if they’re part of a larger company. What matters is that they serve your community and offer something worth discovering, whether that’s seasonal veggies, specialty ingredients, or simply a better shopping experience. Finding one of those overlooked stores has a way of making you wonder what other hidden gems are waiting for you nearby. Luckily, they’re not hard to find.\n\n\n\nHow to Find Great Local Grocery Stores Near You\n\nIt’s one thing to search for local grocery stores every time you’re on a food run, and it’s another to know what to look for once those search results appear. A little curiosity can uncover neighborhood favorites that deserve a place in your regular grocery rotation. The tips below will help you compare your options and discover the hidden gems that may have been right around the corner all along.\n\n\n\nStart with Neighborhood Search Tools\n\nA Google search is a great place to begin, but chances are, you’ve been to those retailers a dozen times in the past few months. Plus, many hidden gems build loyal followings through word of mouth rather than big marketing budgets. Some of the best neighborhood finds won’t necessarily appear at the top of search results. Instead, start with Google Maps, and spend a few minutes checking more than just the overall star rating.\n\n\n\nFirst, read what nearby shoppers actually have to say. Do they rave about the produce? Mention friendly staff? Talk about making a special trip because the selection is worth it? Those details often paint a far clearer picture of the available local groceries than a five-star review ever could.\n\n\n\nOnce you’ve done that, see what your community recommends. Neighborhood Facebook groups and local Reddit threads are full of shoppers sharing their favorite hidden gems, whether it’s the produce market they swear by or the regional grocery store they wish they’d discovered sooner.\n\n\n\nThen Look Beyond Price Tags\n\nNow that you’ve found a few promising stores, it’s time to see what makes each one worth returning to in the first place. Price matters, of course, but it shouldn’t be the only thing guiding your decision. A grocery store that saves you a few dollars isn’t always the one that offers the best overall value.\n\n\n\nStart in the produce department. Fruits and vegetables should look fresh, well-stocked, and carefully maintained. From there, wander the aisles instead of sticking to your shopping list. You might spot locally-made products or artisan-crafted specialty ingredients that aren’t available at larger chains. These types of one-of-a-kind finds are what make breaking your usual routine worth it when shopping for local groceries.\n\n\n\nIf your week is packed with work or school pickups, don’t skip the prepared foods section either. Ready-to-cook meals and grab-and-go dinners can make busy evenings much easier while introducing you to dishes you may not have tried otherwise. As you checkout, pay attention to the atmosphere. Helpful employees and clean aisles often say just as much about the shopping experience as what’s sitting on the shelves.\n\n\n\nBe Sure to Visit at Different Times\n\nAfter you’ve narrowed your list to a few promising retailers, don’t stop after a single visit. Every store has its own rhythm, and getting to know it can make the difference between a good shopping trip and a great one. Returning at different times of day helps you understand when selection is at its best, what local groceries tend to sell quickly, and when you’re most likely to come across unexpected finds.\n\n\n\nFor instance, morning visits are often the best time to browse freshly stocked produce and bakery items before they're picked over. Later in the day, you may find unbeatable markdowns on prepared foods or other perishable items approaching their sell-by dates. If a store regularly carries seasonal specialties or local-made products, ask when deliveries arrive so you can plan your next visit around fresh inventory.\n\n\n\nBefore long, you’ll start to notice each store’s strengths. One may turn into your favorite stop for fresh fruit, another for weeknight meals, and another for ingredients you can’t seem to find elsewhere. That’s how the best hidden gems are discovered: not by luck, but by becoming a regular.\n\n\n\nHidden Grocery Gems Look Different in Every City\n\nThe best grocery discoveries don’t all look the same. Every neighborhood has its own shopping culture, so the stores worth exploring in one city may be completely different from those in another. Still, the strategy stays the same. No matter if you’re searching for local grocery stores near you in a major metro or a smaller town, look beyond the biggest chains and pay attention to the retailers people return to week after week.\n\n\n\nHere are a few examples of the kinds of local grocery stores worth seeking out in different cities:\n\nYou don’t have to live in one of these cities to put these ideas into practice. Every community has its own mix of neighborhood markets, regional grocery stores, and specialty shops to discover. Learning to spot those opportunities can open the door to better shopping, one new store at a time. Once you know what to look for, you’re far more likely to stumble across new favorites closer to home on every grocery run.\n\n\n\nSave Even More on Local Groceries with Too Good To Go\n\nNo matter where you call home, the biggest challenge is often knowing which stores are worth exploring first. Fortunately, there are more ways than ever to uncover nearby grocery stores you might have otherwise missed. One of them is the Too Good To Go app, a free-to-download surplus food marketplace that connects shoppers with nearby grocery stores and other food retailers selling unsold food at a major discount.\n\n\n\nIt’s a simple way to discover local groceries while stretching your budget a little further. Here’s how it works:\n\nFirst, browse nearby grocery stores and other food retailers in the app.\n\nNext, reserve a Surprise Bag for roughly one-third of its original retail value.\n\nThen, pick it up during the store’s designated pickup window.\n\nFinally, pick up your Surprise Bag and enjoy what’s inside.\n\n\n\nThe exact contents of each Surprise Bag are a mystery, but you’ll know the general type of food you’re reserving before you buy. That element of surprise is part of the fun. One pickup could introduce you to a neighborhood grocery store you’ve never visited before, while the next might help you discover a new favorite product. Along the way, you’ll save money, support local businesses, and stop good food from going to waste.\n\n\n\nDiscover More Local Grocery Stores Near You\n\nDiscovering local groceries doesn’t mean giving up your usual supermarket. It simply means expanding your options and staying open to stores you may have overlooked before. No matter where you’re located, every neighborhood has something worth exploring. Too Good To Go makes exploration even easier by helping you find nearby grocery stores offering discounted Surprise Bags that save money and help reduce food waste.\n\n\n\n\n\nDownload the Too Good To Go app and discover hidden grocery gems near you.\n\n\n\nFAQs About How to Find Local Groceries\n\nWhat’s considered a local grocery store?\n\nLocal grocery stores include far more than neighborhood supermarkets. They can also include independently owned markets, produce markets, butcher shops, natural food stores, regional grocery chains, bakeries with grocery selections, and specialty food retailers that serve your community.\n\n\n\nHow do I find local grocery stores near me?\n\nStart with Google Maps, then read customer reviews to learn what shoppers like about each store. Community Facebook groups and local Reddit threads are also great places to discover neighborhood favorites that may not appear at the top of search results. Surplus food marketplaces like Too Good To Go are another avenue to find nearby deals.\n\n\n\nHow can I tell if a grocery store is worth revisiting?\n\nLook beyond prices alone. Fresh produce, high-quality prepared foods, unique products, helpful staff, and a clean, welcoming environment are all signs that a store may be worth adding to your regular grocery rotation.\n\n\n\nWhen is the best time to visit a local grocery store?\n\nIt depends on what you’re shopping for. Morning visits often offer the best selection of fresh produce and bakery items, while later in the day, you may find markdowns on prepared foods and other perishable products. Asking when deliveries arrive can also help you shop when inventory is at its freshest.\n\n\n\nHow does Too Good To Go work?\n\nToo Good To Go connects shoppers with nearby grocery stores and other food retailers selling surplus food through discounted Surprise Bags. Browse participating stores in the app, reserve a Surprise Bag, then pick it up during the store’s designated pickup window. The exact contents are a surprise, but you’ll know the general category of food before you reserve.\n\n\n\nCan Too Good To Go help me discover new grocery stores?\n\nYes. Too Good To Go isn’t just a way to save money; it can also introduce you to grocery stores, markets, bakeries, and other food retailers you may not have visited before. Many shoppers use the app to discover new neighborhood favorites while helping reduce food waste.",{"_type":1544,"alt":1574,"asset":1575,"fit":25},"Shopper selecting fresh local produce",{"_ref":1576,"_type":13},"image-657171f1616772767b25cac575a0b85ad34f1b5d-5600x3733-jpg","2026-07-23T15:31:43.891Z","\u002Fblog\u002Flocal-groceries-near-you","Local Grocery Shopping: How to Find Hidden Gems in Your Neighborhood",{"_createdAt":1581,"_id":1582,"categories":8,"content":1583,"excerpt":8,"file":8,"image":1584,"language":38,"migrated":8,"pretitle":1551,"publishedAt":1588,"slug":1589,"title":1590,"updatedAt":8,"url":8},"2026-07-16T15:34:08Z","ea7c7036-95f6-41b0-9bf3-06d6cca2b74b","Food freshness affects countless decisions across the supply chain. It influences what customers buy, how businesses manage inventory, and which products ultimately end up going unsold, even when they’re perfectly edible. Many people assume freshness ends the moment a package reaches its printed date, yet the reality is often far more nuanced. Unfortunately, that misunderstanding has real consequences. Date label concerns alone account for 1.82 million tons of edible surplus food, making them the single largest contributor to food waste.\n\n\n\nA carton of yogurt, a loaf of bread, and a container of prepared food do not all lose freshness in the same way or at the same time. Quality changes differently across food categories, which means assessing freshness requires more than a quick glance at a label. Understanding what food freshness actually means is the first step toward making better decisions about food that might otherwise be discarded too soon.\n\n\n\nWhy Food Freshness is Misunderstood on Both Sides of the Counter\n\nOne of the biggest misconceptions about food freshness is that a printed date on a container or carton automatically determines whether a product should be eaten or discarded. Consumers often interpret dates as expiration deadlines, while businesses may feel pressure to remove products from shelves as those dates approach. In reality, most date labels are intended to communicate quality rather than safety.\n\n\n\nThe result is a significant amount of perfectly edible food being thrown away before it ever has a chance to be enjoyed. Common food date labels that cause confusion on both sides of the register include:\n\n\n\nSell By: Helps retailers manage inventory and stock rotation.\n\nEnjoy By: Suggests when a product is likely to provide the best eating experience.\n\nBest By: Indicates when a product is expected to have its best flavor, texture, or overall quality.\n\nUse By: Often signals the last recommended date for peak quality.\n\n\n\nInfant formula is the only product in the U.S. that is federally required to use a safety-based Use By date. Everything else is considered quality or inventory guidance. This distinction is important because many foods remain safe and enjoyable when stored properly. Learning how to keep food fresh through appropriate handling and storage can often extend a product’s usable life beyond what consumers might expect.\n\n\n\nThe Business Cost of Getting Food Freshness Wrong in Retail\n\nDate label confusion isn’t just a consumer issue. It has real financial consequences for food businesses, too. Roughly three-quarters of annual retail food waste, or $26.9 billion, comes from highly perishable categories such as produce, meat and seafood, prepared foods, and dairy. Yet nearly 45% of that food remains safe to enjoy, suggesting significant opportunities to recover value before products are discarded.\n\n\n* Based on 2024 ReFED food waste statistics\n\n\nThe financial impact extends beyond the value of the inventory itself. Employees still spend time monitoring products, rotating stock, and removing items that are no longer considered sellable. Disposal and hauling costs add another layer of expense, further increasing the impact of food waste. Improving how you evaluate food freshness can help uncover opportunities to recover value before those costs begin to accumulate.\n\n\n\nFood Freshness Looks Different Across Every Category\n\nDate labels can provide useful guidance, but they only tell part of the story. Too Good To Go’s Look, Smell, Taste initiative focuses on the signs of quality and true spoilage that date labels cannot always capture. The reason is simple: freshness doesn’t look the exact same across every category. A loaf of bread ages differently than a carton of yogurt, and neither follows the same pattern as fresh produce or seafood.\n\n\n\nMonitoring the specific characteristics of each category often provides a clearer picture than the date alone.\n\n\n\nProduce: Appearance Matters, But Looks Can Be Deceiving\n\nProduce may be one of the easiest categories to misjudge because visual imperfections are often mistaken for spoilage. A bruised apple, slightly limp greens, or a banana with brown spots may not look their best, but those changes are often a normal part of the aging process rather than signs the product is rotten. Still, consumers expressly avoid unattractive produce nearly all the time, contributing to both food waste and lost sales.\n\n\n\nWhen assessing food freshness in produce, appearance should be considered alongside texture and aroma. Lettuce that has become slimy or berries that smell fermented are very different from produce that is simply less vibrant than it was a few days earlier. Distinguishing between cosmetic changes and true spoilage can help businesses identify products that still have value before they’re tossed out of the food supply chain for good.\n\n\n\nDairy Products: Date Labels Are Only One Piece of the Puzzle\n\nUnlike produce—where visual appearance often drives purchasing decisions—dairy products tend to be judged more heavily by the date printed on the package. Still, many dairy items remain usable beyond their Best By date, particularly when they have been stored consistently at the proper temperature. For these reasons, food freshness in dairy is often better evaluated through changes in smell and texture.\n\n\n\nMilk may develop a distinctly sour odor when it begins to spoil, while yogurt and sour cream can become watery or separate beyond what is considered normal (or appetizing). Cheese presents its own challenges, with some varieties naturally changing texture as they age. For example, cheddar often becomes firmer and more crumbly over time, where Brie can soften and develop a creamier interior as it matures. Looking at the product itself, rather than relying solely on the date, often provides a clearer picture of its condition.\n\n\n\nMeat and Seafood: Storage and Temperature Matter Most\n\nWhile produce and dairy can often be evaluated through visible quality changes, meat and seafood require a greater emphasis on temperature control throughout their lifespan. There’s a reason restaurant and grocery inspectors routinely check cold storage temperatures during routine inspections. Proper cold-chain management plays a critical role in preserving meat and seafood freshness and reducing safety risks.\n\n\n\nColor is often one of the least reliable indicators of freshness in this category. Beef naturally changes color over time, yet many shoppers associate any amount of browning with spoilage. A more complete assessment considers whether products have been cold-held properly throughout storage and transport. Excessive moisture, unusual stickiness, or strong off-odors may be more meaningful warning signs than color changes alone.\n\n\n\nBaked Goods: Freshness and Safety Are Not the Same Thing\n\nMoving from highly perishable proteins to baked goods highlights an important distinction: quality decline and spoilage are not always the same thing. Bread, bagels, pastries, and other baked items naturally lose moisture over time, causing them to become firmer or less enjoyable to eat. Staleness may affect the eating experience, but it doesn’t automatically indicate a safety concern. A baguette that has lost its crusty exterior or a muffin that feels slightly dry is often still safe to eat.\n\n\n\nThat distinction becomes especially important in bakery departments, where quality often declines long before safety becomes a concern. Visible mold remains one of the clearest indicators that a product should no longer be consumed. Short of that, many baked goods remain perfectly edible even after they have passed their peak quality window, making this category a useful example of why freshness and safety should not be treated as interchangeable concepts.\n\n\n\nPrepared Foods: Time Windows Help Guide Freshness\n\nPrepared foods introduce a different freshness challenge because they often combine multiple ingredients, each with its own shelf life. Restaurants, grocery stores, and foodservice operators rely heavily on production dates, holding times, and labeling procedures to help ensure products are served within established quality and safety standards. Even with those controls in place, the food itself can provide important clues.\n\n\n\nPrepared foods that have developed unusual discoloration, excessive liquid separation, or unexpected texture changes may indicate spoilage. A sandwich with wilted lettuce, a grain bowl that has lost some texture, or a prepared salad that’s no longer at peak quality presents a different situation. Freshness can decline before a product becomes unsafe, which is why timing and sensory evaluation work together when assessing prepared foods.\n\n\n\nHow to Keep Food Fresh Longer: 5 Tips to Prolong Freshness\n\nThe signs of freshness may vary from one food category to the next, but the underlying goal remains the same. Preserving quality for as long as possible, and ensuring good food reaches customers, is always the aim. Businesses that prioritize food freshness through strong storage and inventory practices are often better positioned to reduce waste while maximizing the value of their products. Here’s how to do just that:\n\n\n\nMaintain proper storage temperatures. Consistent refrigeration helps slow quality decline and preserve freshness across dairy, meat, seafood, prepared foods, and many produce items. Regular temperature monitoring can also help identify issues before they affect product quality.\n\nUse packaging that protects product quality. Appropriate packaging helps shield food from excess moisture, air exposure, and other environmental factors that can accelerate deterioration. Storage methods should also be tailored to the needs of each product category.\n\nFollow first-in, first-out (FIFO) inventory practices. Rotating older inventory to the front and newer inventory to the back helps ensure products are sold or used in the intended order, reducing the likelihood of items being overlooked until quality declines.\n\nIdentify products before they reach their quality threshold. Monitoring inventory proactively creates more opportunities to sell, donate, or otherwise recover value from food while it still meets quality expectations.\n\nTrain employees on freshness indicators, not just date labels. Teams that understand the difference between normal aging and true spoilage are better equipped to make informed decisions to reduce unnecessary waste.\n\n\n\nHow Too Good To Go Helps Retailers Recover Value from Surplus Food\n\nEven with strong inventory management practices in place, surplus food is sometimes unavoidable. Demand can shift unexpectedly, and products may sell more slowly than anticipated, but quality windows continue to narrow with each passing day. Many foods maintain their food freshness and remain enjoyable as they approach their Best By or Enjoy By dates, yet businesses often struggle to sell that inventory before it loses value.\n\n\n\nToo Good To Go helps address that challenge through Surprise Bags. Grocery stores, bakeries, restaurants, and other food retail businesses can recover value from inventory with a limited remaining shelf life, while consumers discover surplus food through the app-based Too Good To Go marketplace. Participating businesses create their own Surprise Bags using surplus inventory that still meets their quality and food safety standards.\n\n\n\nUnlock the Opportunity Hidden Inside Food Freshness Windows\n\nThe conversation around food waste often begins with what gets thrown away, but a more useful question is why it gets thrown away in the first place. In many cases, the answer comes back to how freshness is understood throughout the supply chain. A softened peach, a slightly stale loaf of bread, and a package of beef with minor discoloration all tell very different stories, but they’re also safe to eat.\n\n\n\nToo Good To Go helps businesses capture value from these types of food that still have something left to offer. By creating a simple way to sell surplus food before quality declines further, Surprise Bags help transform limited shelf life from a liability into a chance to recover value. Learn how Too Good To Go can help your business reduce food waste and make the most of every freshness window.\n\n\n\n\n\nRecover more value from surplus food\n\n\n\n\n\nFAQ About Food Freshness\n\nWhat does food freshness actually mean?\n\nFood freshness refers to a product’s overall quality and condition, including factors such as appearance, texture, smell, and flavor. While freshness naturally changes over time, a product does not automatically become unsafe the moment it reaches a printed date. Different foods age differently, which is why freshness must be evaluated within the context of each category.\n\n\n\nAre Best By dates the same as expiration dates?\n\nNo. Most date labels are intended to communicate quality rather than safety. Labels such as Best By, Enjoy By, and Sell By generally indicate when a product is expected to deliver its best flavor, texture, or eating experience. Many foods remain safe and enjoyable beyond those dates when stored properly.\n\n\n\nWhy do consumers often throw away food that is still edible?\n\nMany consumers rely heavily on date labels or visual appearance when making decisions about food. Cosmetic imperfections, slight texture changes, or approaching quality dates are often mistaken for signs of spoilage. As a result, perfectly edible food is frequently discarded before it truly needs to be.\n\n\n\nHow can food businesses reduce waste caused by freshness concerns?\n\nBusinesses can reduce unnecessary waste by monitoring inventory proactively, maintaining proper storage conditions, rotating stock using first-in, first-out practices, and training employees to recognize the difference between normal aging and true spoilage. Evaluating products based on their actual condition rather than dates alone can also help identify opportunities to recover value.\n\n\n\nWhy is food freshness assessed differently across food categories?\n\nEach category ages in its own way. Produce may develop cosmetic imperfections while remaining perfectly edible, dairy products often show changes in smell or texture, and baked goods can become stale long before they become unsafe. Understanding category-specific indicators helps businesses make more informed decisions about inventory.\n\n\n\nWhat is Too Good To Go?\n\nToo Good To Go is a surplus food marketplace that helps food businesses reduce waste by connecting consumers with leftover items that still meet quality and food safety standards. Through the app, consumers can purchase Surprise Bags containing unsold food from participating grocery stores, bakeries, restaurants, and other food retailers.\n\n\n\nHow do Surprise Bags help businesses recover value from surplus food?\n\nSurprise Bags provide businesses with an additional way to sell food that has a limited remaining shelf life but is still fresh and enjoyable to eat. Rather than allowing that inventory to go unsold, participating businesses can package eligible surplus food into discounted Surprise Bags and offer them through the Too Good To Go marketplace, helping reduce waste while generating incremental revenue.",{"_type":1544,"alt":1585,"asset":1586,"fit":25},"Fresh produce in Surprise Bag",{"_ref":1587,"_type":13},"image-dd082d7e7126a1427dfe2e3a8cf3c4c7e036d085-2500x1667-jpg","2026-07-16T16:17:34.970Z","\u002Fblog\u002Ffood-freshness-explained","Food Freshness Explained: What It Means for Different Types of Food",{"_createdAt":1592,"_id":1593,"categories":8,"content":1594,"excerpt":8,"file":8,"image":1595,"language":38,"migrated":8,"pretitle":1551,"publishedAt":1599,"slug":1060,"title":1600,"updatedAt":8,"url":8},"2026-07-14T15:11:56Z","f352f718-7c5e-4134-b77c-ad31292f58b7","A multi-unit franchise may have predictive analytics to help with restaurant demand forecasting. An independent operator, on the other hand, is often relying on last week’s sales, the local weather report, and a little bit of luck. That doesn’t mean effective forecasting is out of reach. With the right information and a simple process, even small teams can make more informed decisions about inventory levels and staffing needs.\n\n\n\nAfter all, most operators already have access to the information they need. The next step is turning that data into a repeatable routine. Luckily, a few practical adjustments can help reduce weekly food waste and protect already-thin profit margins without adding unnecessary complexity. Let’s explore how independent restaurant operators can build a reliable forecasting system without expensive software or enterprise-level tools.\n\n\n\nWhat is Restaurant Demand Forecasting?\n\nRestaurant demand forecasting is the process of estimating how much food, inventory, and labor you’ll need based on expected sales. The goal is simple: have enough ingredients and staff on hand to serve customers without overbuying or overpreparing. That may sound straightforward, but restaurants face unique forecasting challenges.\n\n\n\nIn many ways, restaurant demand forecasting and retail demand forecasting share the same objective of matching supply to demand. The difference is that restaurants are usually working with highly perishable inventory, changing menus, and tighter service windows. A retailer may have weeks or months to sell excess inventory. In contrast, a restaurant often has days or even hours before surplus goes to waste.\n\n\n\nThat’s why forecasting matters. Even small improvements can help operators make smarter decisions throughout the week, including:\n\n\n\nPreventing over-ordering. Ordering too much inventory ties up cash and increases the likelihood that ingredients will spoil before they’re used.\n\nReducing food waste. Every surplus item that spoils or loses freshness represents lost value that has already been purchased, stored, and prepared.\n\nAvoiding stockouts. Running out of staple ingredients or popular menu items can lead to missed sales and frustrated customers who may not return.\n\nProtecting margins. Better demand forecasting helps operators balance purchasing, preparation, and labor costs without sacrificing service quality.\n\n\n\nThose benefits can add up quickly in an industry known for thin margins. Full-service restaurants typically operate within a 3% to 5% profit margin range, while fast-casual concepts often fall between 6% and 9%. When profitability is measured in single digits, even modest forecasting improvements can make a meaningful difference.\n\n\n\nThe Realities of Restaurant Demand Forecasting for Independent Operators\n\nEffective restaurant demand forecasting can be more difficult when resources are limited. Large restaurant groups may rely on sophisticated forecasting platforms, but many independent operators are still making purchasing decisions with spreadsheets and experience. Smaller teams rarely have dedicated analysts or specialized software, and tighter purchasing budgets can leave less room for error when ordering inventory from week to week.\n\n\n\nNot to mention, demand can shift quickly, even with a solid routine in place.\n\n\n\nA rainy weekend, a nearby sporting event, or the start of tourist season can change customer traffic patterns with little warning. Some weeks bring packed dining rooms, while others fall short of expectations despite looking similar on paper. Those variables make forecasting challenging, but they also highlight why having a consistent approach is so valuable. The goal isn’t to predict every shift in demand perfectly; it’s to make better decisions more often.\n\n\n\nWhat Data Should Operators Use for Restaurant Demand Forecasting?\n\nIndependent restaurants often assume they lack the necessary data for demand forecasting. In reality, most operators already collect relevant demand signals through daily operations. Sales reports, inventory records, reservations, and local demand trends can provide more than enough information to make more informed purchasing and staffing decisions. Take a look at the types of data that can fuel restaurant demand forecasting.\n\n\n\nHistorical Sales Data\n\nHistorical sales reports tend to reveal patterns that aren’t obvious during day-to-day operations. Comparing last Thursday’s dinner service to a typical Thursday from the previous month, or even the same period last year, can help operators spot recurring trends and make more confident purchasing decisions. Over time, those patterns can establish a baseline for what “normal” demand looks like throughout the week.\n\n\n\nInventory Usage\n\nSales data tells part of the story, but inventory data helps fill in the gaps. Which ingredients consistently sell through before the end of service? Which ones regularly remain unused at the end of the week? For restaurant demand forecasting, these trends can be just as valuable as sales figures because they reveal where ordering decisions — and cash flow — may be overshooting or falling short of actual demand.\n\n\n\nReservations and Advance Orders\n\nUnlike historical data or inventory usage, reservations and advance orders offer a glimpse into future demand before service begins. A full reservation book, a large catering order, or a private event on the calendar can all influence how much inventory and labor may be needed on a given shift. Reviewing these commitments several days in advance can help operators make more informed decisions before guests arrive.\n\n\n\nLocal Demand Signals\n\nWhile the above data sets are useful, customer traffic doesn’t exist in a vacuum. Weather changes, school schedules, community events, holidays, and nearby sporting events can all influence how many guests walk through the door. Paying attention to these external factors adds helpful context to restaurant demand forecasting, especially when historical sales data alone doesn’t explain sudden increases or declines in demand.\n\n\n\nSimple Tools That Make Restaurant Demand Forecasting Easier\n\nRestaurant demand forecasting becomes much more manageable when you know where each piece of information lives. Rather than hunting through multiple records every week, focus your attention on a handful of sources that make patterns easier to spot. The table below can help you connect each demand signal to the everyday tools that track it.\n\nThe good news? You don’t need to gather every data point at once. Start with the information that is easiest to access — like POS reports or reservation platforms — then layer in demand signals like vendor ordering records and local event calendars. Over time, reviewing these sources together can turn scattered information into a more reliable forecasting routine.\n\n\n\nA 6-Step Restaurant Demand Forecasting Process for Independent Operators\n\nIndependent operators don’t need advanced retail demand forecasting platforms or specialized software to stay ahead. A combination of reliable records and simple spreadsheets can provide enough visibility to make more informed decisions instantly. Here’s how to launch your own restaurant demand forecasting process for accurate inventory and labor in six simple steps.\n\n\n\nStep 1: Review Historical Sales Trends\n\nEvery routine needs a starting point. For restaurant demand forecasting, historical sales trends provide the baseline that everything else builds upon. Review performance from the same day last week, the same period last year, and any recent shifts in customer ordering behavior. Pay close attention to menu items that consistently outperform expectations as well as those that move more slowly. Those patterns can help establish a realistic starting point before making any adjustments.\n\n\n\nStep 2: Account for Upcoming Demand Drivers\n\nWhile historical sales data tells you what happened in the past, restaurant demand forecasting also requires operators to account for what is already on the calendar. Once you have a baseline, look ahead for anything that could influence customer traffic in the days ahead. Consider factors such as:\n\n\n\nReservations\n\nPrivate events\n\nCatering orders\n\nCommunity events\n\nWeather forecasts\n\n\n\nEven a few additional bookings or a well-attended local event, like a county fair or family movie night, can influence purchasing and staffing needs for the week. Weather conditions can affect demand, too. Though pleasant weather may encourage more diners to visit, storms, extreme heat, or heavy snowfall can reduce customer traffic.\n\n\n\nStep 3: Factor in Seasonality\n\nSuccessful restaurant demand forecasting goes beyond weekly fluctuations. Many restaurants experience recurring shifts in customer traffic throughout the year that can influence sales patterns for weeks or months at a time. Holidays, tourist spikes, school schedules, sporting seasons, and annual community events can all affect how busy a restaurant becomes.\n\n\n\nLikewise, ingredient costs may rise or fall depending on seasonal availability. Produce, proteins, and other ingredients move in and out of peak supply throughout the year, and some products may be harder to source during certain seasons. Factoring these trends into purchasing decisions can help operators avoid surprises while maintaining more consistent inventory levels.\n\n\n\nStep 4: Identify the Inventory Most Vulnerable to Waste\n\nOne area where restaurants differ significantly from other businesses is inventory perishability. Retail demand forecasting often focuses on products that can remain on shelves for extended periods, whereas restaurants work with ingredients that have a much shorter freshness window. Identifying the items most vulnerable to waste can help operators prioritize forecasting efforts where they matter most.\n\n\n\nPay particular attention to:\n\nPrepared foods, including soups, sauces, and sides that have limited holding periods under food safety guidelines\n\nProteins, which are among the most expensive inventory items and can create significant losses when overordered\n\nBaked goods, which may lose freshness and quality within a short period even if they remain safe to serve\n\nFresh produce, which can spoil quickly when purchasing levels exceed actual customer demand\n\n\n\nKeeping an eye on these ingredients can make it easier to prevent waste before it becomes a bigger problem. If certain items regularly end up unused or expire before they’re sold, that’s usually a sign that purchasing levels need to be adjusted. Paying closer attention to your most perishable inventory can help reduce food waste, improve margins, and make day-to-day inventory management a little less stressful.\n\n\n\nStep 5: Refine Your Purchasing Decisions Weekly\n\nLike inventory management, forecasting works best as an ongoing process rather than a one-time exercise. Effective restaurant demand forecasting requires regular adjustments based on real-world results. At the end of each week, review what sold quickly, what remained untouched, what sold out before service ended. Those insights can help fine-tune future purchasing decisions and improve forecasting accuracy over time.\n\n\n\nStep 6: Schedule Staff Based on Expected Demand\n\nForecasting isn’t just about food orders. Strong restaurant demand forecasting can also help align staffing levels with expected customer traffic. Anticipating busy periods may make it easier to schedule enough team members to maintain service quality while avoiding unnecessary labor costs during slower shifts. Cross-training employees can add flexibility as well, allowing your staff to adapt when demand is higher or lower than expected.\n\n\n\nCommon Restaurant Demand Forecasting Mistakes to Avoid\n\nAbove all, remember that forecasting doesn’t need to be perfect. It just needs to be more reliable than guessing. Even the most consistent restaurant demand forecasting routine will occasionally miss the mark, especially when customer traffic shifts unexpectedly. Still, avoiding a few common mistakes can improve accuracy in the long run and help operators make more confident purchasing and staffing decisions.\n\n\n\nRelying only on gut instinct: Experience matters, but it works best when paired with real sales, inventory, and reservation data. Use historical trends to validate assumptions before placing orders.\n\nIgnoring seasonal trends: Customer purchasing habits and ingredient availability often change throughout the year. Looking only at recent performance can create blind spots during busy or slower seasons.\n\nOrdering for best-case scenarios: Planning for a packed dining room every night can leave restaurants with excess inventory when traffic falls short of expectations. Build forecasts around realistic demand, not ideal outcomes.\n\nFailing to track waste: Surplus inventory can reveal just as much as sales reports. Continuously monitoring what goes to waste can help identify where ordering quantities need adjustment.\n\nTreating forecasting as a once-a-month task: Demand forecasting is an ongoing process. Reviewing results regularly helps identify patterns, refine purchasing decisions, and adapt to changing conditions.\n\n\n\nHow Too Good To Go Helps Restaurants Manage Forecasting Gaps\n\nCustomer traffic fluctuates, plans change, and unexpected slow periods happen. Routine restaurant demand forecasting can reduce waste, but there will still be times when ingredients or prepared foods remain unsold at the end of service. That’s where a surplus food marketplace like Too Good To Go can help.\n\n\n\nRather than relying on one-off markdowns, restaurants can bundle surplus food into Surprise Bags and offer them at a discounted price through the Too Good To Go app. Operators set their own pickup windows, giving nearby customers an easy way to discover and purchase surplus food that might otherwise go unused. In the process, restaurants can recover value from inventory they’ve already purchased and prepared.\n\n\n\nSo, while forecasting helps you make smarter purchasing decisions upfront, Too Good To Go provides another outlet when demand doesn’t unfold exactly as expected. The result is a low-lift way to generate revenue from surplus food. In other words, it works for you, even when demand forecasts don’t.\n\n\n\nBetter Restaurant Demand Forecasting Starts with Better Habits\n\nRestaurant demand forecasting doesn’t require enterprise software or predictive analytics. You can build effective forecasting habits using the same POS reports, inventory tracking spreadsheets, and reservation platforms you’ve been relying on already. Still, no forecast is perfect. That’s why many operators pair stronger forecasting habits with surplus recovery tools like Too Good To Go.\n\n\n\nTogether, the duo can help restaurants reduce waste, protect margins, and make inventory management more profitable. Are you ready to recover more value from surplus food? Learn how Too Good To Go helps restaurants turn excess inventory into additional revenue.\n\n\n\n\n\nStart recovering surplus food revenue\n\n\n\n\n\nFAQs About Restaurant Demand Forecasting\n\nHow far ahead should restaurants forecast demand?\n\nMost independent restaurants benefit from forecasting at least one week ahead while reviewing upcoming reservations, events, and inventory needs. Longer-term forecasts can also be useful for planning around holidays, tourist seasons, and recurring community events that may affect customer traffic.\n\n\n\nWhat is the most important data for restaurant demand forecasting?\n\nHistorical sales data is often the best starting point because it reveals recurring patterns in customer behavior. Inventory usage, reservations, advance orders, and local demand signals can then add context and help operators make more informed purchasing decisions.\n\n\n\nHow often should restaurants update their forecasts?\n\nRestaurant demand forecasting works best as an ongoing process rather than a one-time exercise. Reviewing results weekly can help operators identify changing trends and adjust order quantities to improve forecasting accuracy over time.\n\n\n\nWhy do restaurants struggle with forecasting accuracy?\n\nCustomer traffic can change unexpectedly due to weather, local events, seasonal shifts, and other factors outside a restaurant’s control. For these reasons, forecasting isn’t about eliminating uncertainty entirely; it’s about making better decisions based on the information available.\n\n\n\nWhat inventory items should restaurants monitor most closely?\n\nRestaurants should pay particular attention to highly perishable items such as fresh produce, proteins, prepared foods, and baked goods. These products often carry the greatest risk of spoilage when purchasing levels exceed actual demand.\n\n\n\nHow does Too Good To Go help restaurants reduce food waste?\n\nToo Good To Go provides another outlet for surplus inventory when demand doesn't unfold exactly as expected. Restaurants set their own pickup times, list available Surprise Bags, and give nearby customers an opportunity to purchase excess food that might otherwise go unsold.\n\n\n\nWhat are Too Good To Go Surprise Bags?\n\nSurprise Bags allow restaurants to bundle surplus food into a single discounted offering for local customers. Rather than letting excess inventory go unused, restaurants can recover value from food that remains at the end of service while helping reduce food waste.",{"_type":1544,"alt":1596,"asset":1597,"fit":25},"restaurant manager reviewing demand data",{"_ref":1598,"_type":13},"image-36c4b68505ff22cc856fe3defc39843d7495d431-7112x4784-jpg","2026-07-14T15:33:39.966Z","Restaurant Demand Forecasting 101: A Practical Guide for Independent Operators",130]