Merge in to a sub map

I’m trying to perform a merge of default values into a map object, that itself is an object in a map object:

variable “user_pools” {
  default = {
    api-pool = {
      mfa_configuration = true
      domain_name = false
      app_clients = {
        api-app = {
          generate_secret = false
        }
     }
    web-pool = {
      mfa_configuratin = true
      domain_name = false
      app_clients = {
        web-app = {}
      }
    }
  }
}
locals {
  merge_app_client  = {
    generate_secret = true
  }
}

Output I’m looking to achieve is:

{
  api-pool = {
    api-app = {
      generate_secret = false
    }
  }
  web-pool = {
    web-app = {
      generate_secret = true
    }
  }
}

Using a for command I can extract the “pool” and “app” names, but cannot appear to merge the local value into the map:
{ for k, v in var.user_pools : k => v.app_clients }
results, as expected, in:

{
  "api-pool" = {
    "api-app" = {
      "generate_secret" = false
    }
  }
  "web-pool" = {
    "web-app" = {}
  }
}

but cannot workout the syntax to merge local.merge_app_client in to the right map, i.e.
{ for k, v in var.user_pools : k => merge(local.merge_app_client, v).app_clients }
results in:

{
  "api-pool" = {
    "mfa_configuration" = true
    "domain_name" = false
    "generate_secret" = true
    "api-app" = {
      "generate_secret = false
    }
  }
  "web-pool" = {
    "mfa_configuration" = true
    "domain_name" = false
    "generate_secret" = true
    "web-app" = {}
  }
}

How do I merge into “api-app” and “web-app”?

TIA.