{"id":12868,"date":"2026-05-15T14:59:48","date_gmt":"2026-05-15T13:59:48","guid":{"rendered":"https:\/\/lonres.com\/public\/?p=12868"},"modified":"2026-08-12T16:38:00","modified_gmt":"2026-08-12T15:38:00","slug":"prime-london-market-dashboard-may-2026-lonres","status":"publish","type":"post","link":"https:\/\/lonres.com\/public\/prime-london-market-dashboard-may-2026-lonres\/","title":{"rendered":"Prime London Market Dashboard: May 2026 | LonRes"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"12868\" class=\"elementor elementor-12868\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f332fa8 main-header e-flex e-con-boxed e-con e-parent\" data-id=\"f332fa8\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-db71be6 e-con-full e-flex e-con e-child\" data-id=\"db71be6\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a9ccaf5 elementor-widget elementor-widget-Breadcrumb\" data-id=\"a9ccaf5\" data-element_type=\"widget\" data-widget_type=\"Breadcrumb.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"breadcrumb-wrap\"><ul id=\"breadcrumbs\" class=\"breadcrumb breadcrumb-navigation\"><li class=\"item-home\"><a class=\"bread-link bread-home\" href=\"https:\/\/lonres.com\/public\/\" title=\"Home\"><span class=\"bread-desktop\">Home<\/span><span class=\"bread-mobile\">...<\/span><\/a><\/li><li class=\"separator separator-home\"> \/ <\/li><\/ul><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2cac53 elementor-widget__width-initial elementor-widget elementor-widget-heading\" data-id=\"c2cac53\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Prime London Market Dashboard: May 2026<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-738f603 e-con-full e-flex e-con e-child\" data-id=\"738f603\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-3ccdfcb e-con-full e-flex e-con e-child\" data-id=\"3ccdfcb\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a6145e5 elementor-widget elementor-widget-spacer\" data-id=\"a6145e5\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8369a99 elementor-widget elementor-widget-Post Date\" data-id=\"8369a99\" data-element_type=\"widget\" data-widget_type=\"Post Date.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"meta-info\">\n\t\t\t\t\t\t\t\t\t<a title=\"Insights &amp; Data Reports\" href=\"https:\/\/lonres.com\/public\/resources\/insight-and-data-reports\">Insights &amp; Data Reports<\/a> <span class=\"divider\">|<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"date\">15 May 2026<\/span>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a7fb1dd e-con-full e-flex e-con e-child\" data-id=\"a7fb1dd\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c3f5118 elementor-widget elementor-widget-Share This\" data-id=\"c3f5118\" data-element_type=\"widget\" data-widget_type=\"Share This.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<div class=\"social-share-widget\">\n\t\t\t\t<div class=\"title-text\">\n\t\t\t\t\t<p class=\"desktop-show\">Share<\/p>\n\t\t\t\t\t<a href=\"#\" class=\"share-icon mobile-show\"><img decoding=\"async\" src=\"https:\/\/lonres.com\/public\/wp-content\/themes\/lonres\/assets\/images\/share-icon.svg\" alt=\"Share\" title=\"Share\" \/><\/a>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"social-share-icon-wrap\">\n\t\t\t\t\t<div class=\"addtoany-wrap\"><div class=\"addtoany_shortcode\"><div class=\"a2a_kit a2a_kit_size_32 addtoany_list\" data-a2a-url=\"https:\/\/lonres.com\/public\/prime-london-market-dashboard-may-2026-lonres\/\" data-a2a-title=\"Prime London Market Dashboard: May 2026 | LonRes\"><a class=\"a2a_button_linkedin\" href=\"https:\/\/www.addtoany.com\/add_to\/linkedin?linkurl=https%3A%2F%2Flonres.com%2Fpublic%2Fprime-london-market-dashboard-may-2026-lonres%2F&amp;linkname=Prime%20London%20Market%20Dashboard%3A%20May%202026%20%7C%20LonRes\" title=\"LinkedIn\" rel=\"nofollow noopener\" target=\"_blank\"><\/a><a class=\"a2a_button_x\" href=\"https:\/\/www.addtoany.com\/add_to\/x?linkurl=https%3A%2F%2Flonres.com%2Fpublic%2Fprime-london-market-dashboard-may-2026-lonres%2F&amp;linkname=Prime%20London%20Market%20Dashboard%3A%20May%202026%20%7C%20LonRes\" title=\"X\" rel=\"nofollow noopener\" target=\"_blank\"><\/a><\/div><\/div><\/div>\n\t\t\t\t\t<div class=\"custom-icon-wrap\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0245361 e-flex e-con-boxed e-con e-parent\" data-id=\"0245361\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b4eefe1 elementor-absolute elementor-widget elementor-widget-Image Shape\" data-id=\"b4eefe1\" data-element_type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"Image Shape.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t\t<div class=\"imageshape4284572828 desktopshape4284572828\">Image Shapae<\/div>\n\t\t\t<div class=\"imageshape4284572828 mobileshape4284572828\">Image Shapae<\/div>\n\t\t\t<style>\n\t\t\t\t.imageshape4284572828{text-indent: -9999px; overflow: hidden;}\n\t\t\t\t.imageshape4284572828{\n\t\t\t\t\tbackground-color: #EB2D8C8A;\n\t\t\t\t\theight: 170px;\n\t\t\t\t\twidth: 170px;\n\t\t\t\t}\n\t\t\t\t.imageshape4284572828.mobileshape4284572828{\t\t\t\t\n\t\t\t\t\theight: 94px;\n\t\t\t\t\twidth: 94px;\n\t\t\t\t}\n\n\t\t\t\t\n\t\t\t\t\t.mobileshape4284572828{\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t}\n\n\t\t\t\t@media (max-width:767px) {\n\n\t\t\t\t\t.desktopshape4284572828{\n\t\t\t\t\t\tdisplay:none;\n\t\t\t\t\t}\n\n\t\t\t\t\t.mobileshape4284572828{\n\t\t\t\t\t\tdisplay: block;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t<\/style>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4b04b16 e-flex e-con-boxed e-con e-parent\" data-id=\"4b04b16\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fded84b elementor-widget elementor-widget-html\" data-id=\"fded84b\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<!-- ======================================================================\n     LONRES . PRIME LONDON MARKET DASHBOARD -- MAY 2026\n     Resources-article build\n\n     PASTE INTO: Elementor > HTML widget, inside the standard resources\n     article content container. Nothing else in the section.\n\n     THE WP PAGE MUST SUPPLY (this block deliberately does not):\n       H1 ............ Prime London Market Dashboard: May 2026\n       Category ...... Insights & Data Reports\n       Hero image .... section background, min-height 498px, cover, 50% 50%\n       Slug .......... \/public\/prime-london-market-dashboard-may-2026\/\n\n     RANK MATH:\n       Meta title .... Prime London Market Dashboard: May 2026 | LonRes   (<=60 chars)\n       Meta desc ..... stat-led, <=155 chars -- see the notes file\n       OG image ...... 1200x630, per-month (do NOT leave the site default)\n       Canonical ..... self\n\n     DATA: month analysed is April 2026. Source: LonRes.\n     ====================================================================== -->\n<!-- Fonts + Chart.js. If the theme already loads either globally, the\n     web team can delete the matching line. -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,700;1,400&amp;family=Inter:wght@300;400;500;600;700&amp;display=swap\" rel=\"stylesheet\">\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Chart.js\/4.4.1\/chart.umd.min.js\"><\/script>\n<div class=\"plmb-dashboard plmb-dashboard--embed\" data-plmb-url=\"https:\/\/lonres.com\/public\/prime-london-monthly-dashboard-may\/\">\n<style>\n\/* =======================================================================\n  PLMB DASHBOARD -- SCOPED STYLES\n  All rules are nested under `.plmb-dashboard` so they cannot leak\n  into the host CMS page.\n  ======================================================================= *\/\n.plmb-dashboard,\n.plmb-dashboard *,\n.plmb-dashboard *::before,\n.plmb-dashboard *::after {\n  box-sizing: border-box;\n}\n.plmb-dashboard {\n  --plmb-magenta:    #DE007B;\n  --plmb-magenta-dk: #B00062;\n  --plmb-teal:      #B9A46A;\n  --plmb-cream:      #EDEBE3;\n  --plmb-cream-2:    #F6F4EE;    \/* alternating section tint *\/\n  --plmb-sand:      #E2E0D8;\n  --plmb-dark:      #2A2A33;\n  --plmb-badge:      #363A45;    \/* edition badge background *\/\n  --plmb-mid:        #7C8090;\n  --plmb-border:    #E2E0D8;\n  --plmb-border-dk:  #D4D1C8;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n  background: var(--plmb-cream);\n  color: var(--plmb-dark);\n  font-size: 14.5px;\n  line-height: 1.65;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  scroll-behavior: smooth;\n}\n.plmb-dashboard p,\n.plmb-dashboard h1,\n.plmb-dashboard h2,\n.plmb-dashboard h3,\n.plmb-dashboard h4,\n.plmb-dashboard ul,\n.plmb-dashboard ol,\n.plmb-dashboard table,\n.plmb-dashboard figure { margin: 0; padding: 0; }\n.plmb-dashboard a { color: var(--plmb-magenta); text-decoration: none; }\n.plmb-dashboard a:hover { text-decoration: underline; }\n\/* --- UTILITIES -------------------------------------------------------- *\/\n.plmb-dashboard .plmb-serif    { font-family: 'Playfair Display', Georgia, serif; }\n.plmb-dashboard .plmb-magenta  { color: var(--plmb-magenta); }\n.plmb-dashboard .plmb-small    { font-size: 11.5px; color: var(--plmb-mid); }\n.plmb-dashboard .plmb-divider  { border: none; border-top: 1px dashed var(--plmb-border-dk); margin: 22px 0; }\n.plmb-dashboard .plmb-rule    { border: none; border-top: 1px solid var(--plmb-border); margin: 0; }\n\/* --- LOGO (real LonRes SVG) ------------------------------------------- *\/\n.plmb-dashboard .plmb-logo {\n  width: 56px;\n  height: 56px;\n  display: inline-block;\n  flex-shrink: 0;\n}\n.plmb-dashboard .plmb-logo--sm { width: 36px; height: 36px; }\n.plmb-dashboard .plmb-logo--xs { width: 28px; height: 28px; }\n\/* --- SECTIONS (alternating tints) ------------------------------------- *\/\n.plmb-dashboard .plmb-section {\n  position: relative;\n  overflow: hidden;\n  background: var(--plmb-cream);\n  border-bottom: 1px solid var(--plmb-border);\n}\n.plmb-dashboard .plmb-section--alt {\n  background: var(--plmb-cream-2);\n}\n.plmb-dashboard .plmb-section--overview {\n  background: var(--plmb-cream);\n}\n.plmb-dashboard .plmb-section-inner {\n  max-width: 1240px;\n  margin: 0 auto;\n  padding: 56px 56px 64px;\n  position: relative;\n  z-index: 1;\n}\n\/* subtle geometric backdrop *\/\n.plmb-dashboard .plmb-geo {\n  position: absolute;\n  pointer-events: none;\n  opacity: 0.055;\n  z-index: 0;\n}\n.plmb-dashboard .plmb-geo--hero {\n  right: -40px; top: 40px;\n  width: 520px; height: 520px;\n}\n.plmb-dashboard .plmb-geo--side {\n  right: -80px; bottom: -80px;\n  width: 320px; height: 320px;\n}\n\/* =======================================================================\n  SECTION HEADER BAND\n  Used across every section to anchor the section number, title and\n  edition badge in a consistent place -- replacing the old sidebar title.\n  ======================================================================= *\/\n.plmb-dashboard .plmb-section-head {\n  display: grid;\n  grid-template-columns: auto 1fr auto;\n  align-items: center;\n  gap: 22px;\n  padding-bottom: 18px;\n  border-bottom: 2px solid var(--plmb-dark);\n  margin-bottom: 32px;\n}\n.plmb-dashboard .plmb-section-num {\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 42px;\n  font-weight: 400;\n  color: var(--plmb-magenta);\n  line-height: 1;\n  letter-spacing: -0.02em;\n}\n.plmb-dashboard .plmb-section-label {\n  font-size: 11.5px;\n  font-weight: 600;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  color: var(--plmb-mid);\n  display: block;\n  margin-bottom: 4px;\n}\n.plmb-dashboard .plmb-section-title {\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 26px;\n  font-weight: 400;\n  line-height: 1.18;\n  color: var(--plmb-dark);\n}\n.plmb-dashboard .plmb-section-badge {\n  background: var(--plmb-badge);\n  color: #fff;\n  font-size: 14px;\n  font-weight: 600;\n  padding: 11px 22px;\n  letter-spacing: 0.06em;\n  white-space: nowrap;\n  text-transform: uppercase;\n}\n\/* =======================================================================\n  SECTION NAV (prev \/ overview \/ next at bottom of content sections)\n  ======================================================================= *\/\n.plmb-dashboard .plmb-section-nav {\n  display: grid;\n  grid-template-columns: 1fr auto 1fr;\n  align-items: stretch;\n  gap: 12px;\n  margin-top: 48px;\n  padding-top: 24px;\n  border-top: 1px solid var(--plmb-border);\n}\n.plmb-dashboard .plmb-nav-btn {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  padding: 14px 20px;\n  background: #fff;\n  border: 1px solid var(--plmb-border);\n  color: var(--plmb-dark);\n  font-size: 13px;\n  font-weight: 500;\n  text-decoration: none;\n  transition: all 0.15s ease;\n  line-height: 1.3;\n  min-width: 0;\n}\n.plmb-dashboard .plmb-nav-btn:hover {\n  border-color: var(--plmb-magenta);\n  color: var(--plmb-magenta);\n  text-decoration: none;\n  transform: translateY(-1px);\n}\n.plmb-dashboard .plmb-nav-btn .plmb-nav-arrow {\n  color: var(--plmb-magenta);\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 22px;\n  line-height: 1;\n  flex-shrink: 0;\n}\n.plmb-dashboard .plmb-nav-btn .plmb-nav-label {\n  font-size: 10px;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  color: var(--plmb-mid);\n  font-weight: 600;\n  display: block;\n  margin-bottom: 2px;\n}\n.plmb-dashboard .plmb-nav-btn--prev { justify-self: start; }\n.plmb-dashboard .plmb-nav-btn--next {\n  justify-self: end;\n  flex-direction: row-reverse;\n  text-align: right;\n}\n.plmb-dashboard .plmb-nav-btn--home {\n  justify-self: center;\n  background: var(--plmb-magenta);\n  color: #fff;\n  border-color: var(--plmb-magenta);\n  padding: 14px 24px;\n  font-weight: 600;\n  letter-spacing: 0.04em;\n}\n.plmb-dashboard .plmb-nav-btn--home:hover {\n  background: var(--plmb-magenta-dk);\n  border-color: var(--plmb-magenta-dk);\n  color: #fff;\n}\n.plmb-dashboard .plmb-nav-btn--home .plmb-nav-arrow { color: #fff; }\n.plmb-dashboard .plmb-nav-btn--disabled {\n  opacity: 0;\n  pointer-events: none;\n}\n@media (max-width: 700px) {\n  .plmb-dashboard .plmb-section-nav {\n    grid-template-columns: 1fr 1fr;\n    grid-template-areas:\n      \"home home\"\n      \"prev next\";\n    gap: 10px;\n  }\n  .plmb-dashboard .plmb-nav-btn--prev { grid-area: prev; justify-self: stretch; }\n  .plmb-dashboard .plmb-nav-btn--next { grid-area: next; justify-self: stretch; }\n  .plmb-dashboard .plmb-nav-btn--home { grid-area: home; justify-self: stretch; justify-content: center; }\n  .plmb-dashboard .plmb-nav-btn { padding: 12px 14px; font-size: 12px; }\n}\n\/* =======================================================================\n  SECTION 1 . OVERVIEW\n  ======================================================================= *\/\n.plmb-dashboard .plmb-overview-head {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 24px;\n  padding-bottom: 28px;\n  border-bottom: 1px solid var(--plmb-border);\n  margin-bottom: 36px;\n}\n.plmb-dashboard .plmb-overview-head-left {\n  display: flex;\n  align-items: center;\n  gap: 22px;\n}\n.plmb-dashboard .plmb-overview-title {\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 44px;\n  font-weight: 400;\n  line-height: 1.06;\n  color: var(--plmb-dark);\n}\n.plmb-dashboard .plmb-overview-title .plmb-edition {\n  display: block;\n  font-size: 18px;\n  color: var(--plmb-magenta);\n  letter-spacing: 0.04em;\n  margin-top: 6px;\n  font-weight: 400;\n  font-style: italic;\n}\n\/* HERO INTRO -- headline left, lead text right *\/\n.plmb-dashboard .plmb-overview-intro {\n  display: grid;\n  grid-template-columns: 5fr 6fr;\n  gap: 48px;\n  align-items: end;\n  margin-bottom: 44px;\n  padding-bottom: 36px;\n  border-bottom: 1px solid var(--plmb-border);\n}\n.plmb-dashboard .plmb-overview-intro-left { min-width: 0; }\n.plmb-dashboard .plmb-overview-intro-right { min-width: 0; }\n.plmb-dashboard .plmb-overview-headline {\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 36px;\n  font-weight: 400;\n  line-height: 1.18;\n  color: var(--plmb-dark);\n  margin: 0;\n}\n.plmb-dashboard .plmb-overview-subtext {\n  font-size: 15px;\n  font-weight: 400;\n  line-height: 1.72;\n  color: var(--plmb-dark);\n  margin: 0;\n}\n\/* TABLE block -- full width *\/\n.plmb-dashboard .plmb-overview-table-block {\n  margin-bottom: 44px;\n}\n\/* BULLETS block *\/\n.plmb-dashboard .plmb-overview-bullets-block {\n  margin-bottom: 44px;\n}\n\/* Key bullets list (2-column when wide) *\/\n.plmb-dashboard .plmb-bullets {\n  list-style: none;\n  padding: 0;\n  margin: 0;\n}\n.plmb-dashboard .plmb-bullets--2col {\n  columns: 2;\n  column-gap: 44px;\n}\n.plmb-dashboard .plmb-bullets li {\n  position: relative;\n  padding: 0 0 0 22px;\n  margin-bottom: 14px;\n  font-size: 13.5px;\n  line-height: 1.65;\n  color: var(--plmb-dark);\n  break-inside: avoid;\n  page-break-inside: avoid;\n}\n.plmb-dashboard .plmb-bullets li:last-child { margin-bottom: 0; }\n.plmb-dashboard .plmb-bullets li::before {\n  content: \"\";\n  position: absolute;\n  left: 0;\n  top: 9px;\n  width: 8px;\n  height: 8px;\n  background: var(--plmb-magenta);\n  border-radius: 50%;\n}\n.plmb-dashboard .plmb-bullets li strong {\n  color: var(--plmb-dark);\n  font-weight: 600;\n}\n.plmb-dashboard .plmb-table-heading {\n  font-size: 13px;\n  font-weight: 600;\n  color: var(--plmb-magenta);\n  letter-spacing: 0.08em;\n  text-transform: uppercase;\n  margin-bottom: 14px;\n}\n.plmb-dashboard .plmb-prime-table {\n  width: 100%;\n  border-collapse: collapse;\n  font-size: 13px;\n}\n.plmb-dashboard .plmb-prime-table thead th {\n  background: var(--plmb-magenta);\n  color: #fff;\n  padding: 12px 12px;\n  text-align: center;\n  font-weight: 500;\n  font-size: 11.5px;\n  line-height: 1.35;\n  vertical-align: middle;\n}\n.plmb-dashboard .plmb-prime-table thead th:first-child { background: transparent; }\n.plmb-dashboard .plmb-prime-table tbody td {\n  padding: 13px 12px;\n  text-align: center;\n  border-bottom: 1px solid var(--plmb-border);\n  color: var(--plmb-dark);\n  font-size: 13px;\n  background: #fff;\n}\n.plmb-dashboard .plmb-prime-table tbody td:first-child {\n  text-align: left;\n  font-weight: 500;\n}\n.plmb-dashboard .plmb-prime-table tbody tr:last-child td { border-bottom: none; }\n\/* --- headline nav cards ------------------------------------------------ *\/\n.plmb-dashboard .plmb-headlines {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 32px;\n  margin-top: 40px;\n  padding-top: 32px;\n  border-top: 1px solid var(--plmb-border);\n}\n.plmb-dashboard .plmb-headlines h4 {\n  font-size: 12px;\n  font-weight: 600;\n  color: var(--plmb-magenta);\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  margin-bottom: 14px;\n}\n.plmb-dashboard .plmb-hl-cards {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 10px;\n}\n.plmb-dashboard .plmb-hl-card {\n  border: 1px solid var(--plmb-border);\n  background: #fff;\n  padding: 16px 18px;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  font-size: 13px;\n  color: var(--plmb-dark);\n  text-decoration: none;\n  gap: 10px;\n  transition: border-color 0.15s, background 0.15s, transform 0.15s;\n}\n.plmb-dashboard .plmb-hl-card:hover {\n  border-color: var(--plmb-magenta);\n  background: #fff;\n  text-decoration: none;\n  transform: translateY(-1px);\n}\n.plmb-dashboard .plmb-hl-arrow {\n  color: var(--plmb-magenta);\n  font-size: 18px;\n  flex-shrink: 0;\n  font-family: 'Playfair Display', Georgia, serif;\n}\n\/* =======================================================================\n  CONTENT SECTIONS (2-5) -- two-column body grid\n  ======================================================================= *\/\n.plmb-dashboard .plmb-section-body {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 44px;\n  align-items: start;\n}\n.plmb-dashboard .plmb-section-body--stacked {\n  grid-template-columns: 1fr;\n}\n.plmb-dashboard .plmb-copy p {\n  font-size: 14px;\n  line-height: 1.78;\n  color: var(--plmb-dark);\n  margin-bottom: 16px;\n}\n.plmb-dashboard .plmb-copy p:last-child { margin-bottom: 0; }\n.plmb-dashboard .plmb-copy--full {\n  grid-column: 1 \/ -1;\n}\n\/* =======================================================================\n  CHART CARD -- title, legend, canvas, source row + share buttons\n  ======================================================================= *\/\n.plmb-dashboard .plmb-chart-card {\n  background: #fff;\n  border: 1px solid var(--plmb-border);\n  padding: 22px 24px 20px;\n  position: relative;\n}\n.plmb-dashboard .plmb-chart-card--wide {\n  grid-column: 1 \/ -1;\n}\n.plmb-dashboard .plmb-chart-head {\n  display: flex;\n  justify-content: space-between;\n  align-items: flex-start;\n  gap: 16px;\n  margin-bottom: 14px;\n}\n.plmb-dashboard .plmb-chart-title {\n  font-size: 14px;\n  font-weight: 600;\n  color: var(--plmb-dark);\n  line-height: 1.35;\n  flex: 1;\n}\n.plmb-dashboard .plmb-chart-legend {\n  display: flex;\n  gap: 18px;\n  margin-bottom: 14px;\n  flex-wrap: wrap;\n}\n.plmb-dashboard .plmb-leg-item {\n  display: flex;\n  align-items: center;\n  gap: 7px;\n  font-size: 11.5px;\n  color: var(--plmb-dark);\n}\n.plmb-dashboard .plmb-leg-swatch {\n  width: 14px;\n  height: 11px;\n  flex-shrink: 0;\n}\n.plmb-dashboard .plmb-chart-wrap {\n  position: relative;\n  margin: 6px 0 10px;\n}\n.plmb-dashboard .plmb-chart-wrap--md { height: 280px; }\n.plmb-dashboard .plmb-chart-wrap--lg { height: 340px; }\n\/* multi-column copy block (lettings section) *\/\n.plmb-dashboard .plmb-copy--cols {\n  columns: 2;\n  column-gap: 44px;\n}\n.plmb-dashboard .plmb-copy--cols p { break-inside: avoid; }\n.plmb-dashboard .plmb-chart-foot {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  gap: 12px;\n  padding-top: 8px;\n  border-top: 1px solid var(--plmb-border);\n  margin-top: 8px;\n}\n.plmb-dashboard .plmb-chart-source {\n  font-size: 11px;\n  color: var(--plmb-mid);\n  letter-spacing: 0.02em;\n}\n\/* --- SHARE BUTTONS ---------------------------------------------------- *\/\n.plmb-dashboard .plmb-share {\n  display: flex;\n  align-items: center;\n  gap: 6px;\n}\n.plmb-dashboard .plmb-share-label {\n  font-size: 10.5px;\n  color: var(--plmb-mid);\n  letter-spacing: 0.08em;\n  text-transform: uppercase;\n  margin-right: 4px;\n  font-weight: 500;\n}\n.plmb-dashboard .plmb-share-btn {\n  width: 28px;\n  height: 28px;\n  border: 1px solid var(--plmb-border);\n  background: #fff;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  cursor: pointer;\n  padding: 0;\n  color: var(--plmb-mid);\n  transition: all 0.15s ease;\n}\n.plmb-dashboard .plmb-share-btn:hover {\n  border-color: var(--plmb-magenta);\n  background: var(--plmb-magenta);\n  color: #fff;\n}\n.plmb-dashboard .plmb-share-btn svg {\n  width: 13px;\n  height: 13px;\n  fill: currentColor;\n}\n\/* Toast notification (shown after copy \/ download) *\/\n.plmb-dashboard .plmb-toast {\n  position: fixed;\n  bottom: 24px;\n  left: 50%;\n  transform: translate(-50%, 30px);\n  background: var(--plmb-dark);\n  color: #fff;\n  padding: 12px 22px;\n  font-size: 13px;\n  font-weight: 500;\n  letter-spacing: 0.02em;\n  opacity: 0;\n  pointer-events: none;\n  transition: transform 0.25s ease, opacity 0.25s ease;\n  z-index: 1000;\n  box-shadow: 0 8px 24px rgba(0,0,0,0.2);\n}\n.plmb-dashboard .plmb-toast--show {\n  opacity: 1;\n  transform: translate(-50%, 0);\n}\n\/* =======================================================================\n  FOOTER\n  ======================================================================= *\/\n.plmb-dashboard .plmb-footer {\n  background: var(--plmb-sand);\n  border-top: 4px solid var(--plmb-magenta);\n  padding: 48px 0 40px;\n}\n.plmb-dashboard .plmb-footer-inner {\n  max-width: 1240px;\n  margin: 0 auto;\n  padding: 0 56px;\n}\n.plmb-dashboard .plmb-footer-grid {\n  display: grid;\n  grid-template-columns: 1.4fr 1fr;\n  gap: 48px;\n  align-items: start;\n}\n.plmb-dashboard .plmb-footer-title {\n  font-size: 12px;\n  font-weight: 700;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--plmb-dark);\n  margin-bottom: 12px;\n}\n.plmb-dashboard .plmb-footer-text {\n  font-size: 12.5px;\n  color: var(--plmb-mid);\n  line-height: 1.7;\n}\n.plmb-dashboard .plmb-footer-text strong { color: var(--plmb-dark); }\n.plmb-dashboard .plmb-footer-block { margin-bottom: 28px; }\n.plmb-dashboard .plmb-footer-block:last-child { margin-bottom: 0; }\n.plmb-dashboard .plmb-footer-logo-row {\n  display: flex;\n  align-items: center;\n  gap: 14px;\n  margin-bottom: 18px;\n}\n.plmb-dashboard .plmb-footer-contact {\n  font-size: 12.5px;\n  color: var(--plmb-mid);\n  line-height: 1.85;\n}\n\/* --- NEWSLETTER CTA CARD ---------------------------------------------- *\/\n.plmb-dashboard .plmb-footer-cta {\n  background: var(--plmb-dark);\n  color: #fff;\n  padding: 32px 32px 30px;\n  position: relative;\n  overflow: hidden;\n}\n.plmb-dashboard .plmb-footer-cta::before {\n  content: \"\";\n  position: absolute;\n  top: 0; left: 0;\n  width: 100%; height: 4px;\n  background: var(--plmb-magenta);\n}\n.plmb-dashboard .plmb-footer-cta-eyebrow {\n  font-size: 11px;\n  font-weight: 600;\n  letter-spacing: 0.16em;\n  text-transform: uppercase;\n  color: var(--plmb-magenta);\n  margin: 0 0 12px;\n}\n.plmb-dashboard .plmb-footer-cta-title {\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 22px;\n  font-weight: 400;\n  line-height: 1.25;\n  color: #fff;\n  margin: 0 0 12px;\n}\n.plmb-dashboard .plmb-footer-cta-text {\n  font-size: 13px;\n  line-height: 1.6;\n  color: rgba(255,255,255,0.78);\n  margin: 0 0 14px;\n}\n.plmb-dashboard .plmb-footer-cta-text + .plmb-footer-cta-btn {\n  margin-top: 8px;\n}\n.plmb-dashboard .plmb-footer-cta-btn {\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  background: var(--plmb-magenta);\n  color: #fff;\n  text-decoration: none;\n  font-size: 13px;\n  font-weight: 600;\n  letter-spacing: 0.04em;\n  padding: 13px 22px;\n  transition: background 0.15s ease, transform 0.15s ease;\n}\n.plmb-dashboard .plmb-footer-cta-btn:hover {\n  background: var(--plmb-magenta-dk);\n  color: #fff;\n  text-decoration: none;\n  transform: translateY(-1px);\n}\n.plmb-dashboard .plmb-footer-cta-arrow {\n  font-family: 'Playfair Display', Georgia, serif;\n  font-size: 20px;\n  line-height: 1;\n}\n\/* =======================================================================\n  RESPONSIVE -- tablet (<=900) and mobile (<=600)\n  ======================================================================= *\/\n@media (max-width: 1024px) {\n  .plmb-dashboard .plmb-section-inner { padding: 48px 36px 52px; }\n  .plmb-dashboard .plmb-footer-inner  { padding: 0 36px; }\n  .plmb-dashboard .plmb-overview-title { font-size: 38px; }\n  .plmb-dashboard .plmb-section-num    { font-size: 36px; }\n}\n@media (max-width: 900px) {\n  .plmb-dashboard { font-size: 14px; }\n  .plmb-dashboard .plmb-section-inner { padding: 40px 28px 44px; }\n  .plmb-dashboard .plmb-footer-inner  { padding: 0 28px; }\n  .plmb-dashboard .plmb-overview-intro {\n    grid-template-columns: 1fr;\n    gap: 20px;\n    align-items: start;\n  }\n  .plmb-dashboard .plmb-bullets--2col { columns: 1; }\n  .plmb-dashboard .plmb-section-body { grid-template-columns: 1fr; gap: 28px; }\n  .plmb-dashboard .plmb-headlines    { grid-template-columns: 1fr; gap: 24px; }\n  .plmb-dashboard .plmb-footer-grid  { grid-template-columns: 1fr; gap: 32px; }\n  .plmb-dashboard .plmb-copy--cols  { columns: 1; }\n  .plmb-dashboard .plmb-chart-wrap--md { height: 260px; }\n  .plmb-dashboard .plmb-chart-wrap--lg { height: 300px; }\n  .plmb-dashboard .plmb-overview-title { font-size: 32px; }\n  .plmb-dashboard .plmb-overview-headline { font-size: 28px; }\n  .plmb-dashboard .plmb-section-title { font-size: 22px; }\n  .plmb-dashboard .plmb-section-num  { font-size: 32px; }\n  .plmb-dashboard .plmb-prime-table {\n    display: block;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 600px) {\n  .plmb-dashboard .plmb-section-inner { padding: 32px 20px 36px; }\n  .plmb-dashboard .plmb-footer-inner  { padding: 0 20px; }\n  .plmb-dashboard .plmb-overview-head {\n    flex-direction: column;\n    align-items: flex-start;\n    gap: 18px;\n  }\n  .plmb-dashboard .plmb-overview-head-left { gap: 14px; }\n  .plmb-dashboard .plmb-overview-title { font-size: 26px; }\n  .plmb-dashboard .plmb-overview-title .plmb-edition { font-size: 14px; }\n  .plmb-dashboard .plmb-overview-headline { font-size: 22px; }\n  .plmb-dashboard .plmb-section-head {\n    grid-template-columns: auto 1fr;\n    grid-template-areas:\n      \"num title\"\n      \"badge badge\";\n    row-gap: 16px;\n  }\n  .plmb-dashboard .plmb-section-num  { grid-area: num; font-size: 28px; }\n  .plmb-dashboard .plmb-section-head .plmb-title-wrap { grid-area: title; }\n  .plmb-dashboard .plmb-section-badge { grid-area: badge; justify-self: start; }\n  .plmb-dashboard .plmb-section-title { font-size: 19px; }\n  .plmb-dashboard .plmb-hl-cards    { grid-template-columns: 1fr; }\n  .plmb-dashboard .plmb-chart-card  { padding: 18px 16px 16px; }\n  .plmb-dashboard .plmb-chart-foot  {\n    flex-direction: column;\n    align-items: flex-start;\n    gap: 10px;\n  }\n}\n\/* =======================================================================\n  PRINT\n  ======================================================================= *\/\n@media print {\n  .plmb-dashboard .plmb-section { page-break-after: always; break-after: page; }\n  .plmb-dashboard .plmb-share { display: none; }\n  body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }\n}\n.plmb-dashboard .plmb-bullets li{ list-style:none; }\n\n\/* =======================================================================\n   RESOURCES-EMBED OVERRIDES\n   Added for the \/resources\/ article template. The WP page owns the\n   breadcrumb, H1, category\/date line and hero image; this block starts\n   at H2 and sits directly beneath the hero.\n\n   Container facts (measured on the live template):\n     .e-con-inner  max-width: min(100%, 1310px)\n     no overflow:hidden anywhere in the ancestor chain\n   So we simply cap our own width. No negative-margin \/ 100vw breakout.\n   ======================================================================= *\/\n.plmb-dashboard--embed {\n  max-width: 1290px;\n  margin: 0 auto;\n  border: 1px solid var(--plmb-border);\n  border-top: 3px solid var(--plmb-magenta);\n  \/* Sits directly below the hero band, no overlap. The 3px pink top rule does\n     the joining work instead -- an earlier version pulled the block up over the\n     image, which read as the content covering the artwork. *\/\n  margin-top: 0;\n  position: relative;\n  z-index: 2;\n}\n\n\/* Section inner no longer needs to centre against a full-bleed viewport --\n   the block itself is the wrap now. Trim the side padding to buy back the\n   width the article container costs us. *\/\n.plmb-dashboard--embed .plmb-section-inner { max-width: none; padding: 48px 44px 52px; }\n.plmb-dashboard--embed .plmb-footer-inner  { max-width: none; padding: 0 44px; }\n\n\/* The masthead is removed (the WP page supplies title + edition), so the\n   overview section needs its own top breathing room and a lead-in rule. *\/\n.plmb-dashboard--embed .plmb-section--overview .plmb-section-inner { padding-top: 44px; }\n\n\/* Edition strip: replaces the deleted masthead. Keeps the month visible\n   inside the block without competing with the page H1 above it. *\/\n.plmb-dashboard--embed .plmb-editionbar {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 20px;\n  flex-wrap: wrap;\n  padding-bottom: 20px;\n  margin-bottom: 32px;\n  border-bottom: 2px solid var(--plmb-dark);\n}\n.plmb-dashboard--embed .plmb-editionbar-left {\n  display: flex;\n  align-items: center;\n  gap: 14px;\n  min-width: 0;\n}\n.plmb-dashboard--embed .plmb-editionbar-label {\n  font-size: 11.5px;\n  font-weight: 600;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  color: var(--plmb-mid);\n}\n\n\/* Charts get a little more height back now the block is narrower than the\n   old full-bleed layout. *\/\n.plmb-dashboard--embed .plmb-chart-wrap--md { height: 300px; }\n.plmb-dashboard--embed .plmb-chart-wrap--lg { height: 360px; }\n\n\/* Below the Elementor container's own breakpoint the negative top margin\n   stops helping -- the hero shrinks and the overlap gets tight. *\/\n@media (max-width: 1024px) {\n  .plmb-dashboard--embed .plmb-section-inner { padding: 40px 32px 44px; }\n  .plmb-dashboard--embed .plmb-footer-inner  { padding: 0 32px; }\n}\n@media (max-width: 700px) {\n  .plmb-dashboard--embed { border-left: none; border-right: none; }\n  .plmb-dashboard--embed .plmb-section-inner { padding: 32px 20px 36px; }\n  .plmb-dashboard--embed .plmb-footer-inner  { padding: 0 20px; }\n  .plmb-dashboard--embed .plmb-chart-wrap--md { height: 240px; }\n  .plmb-dashboard--embed .plmb-chart-wrap--lg { height: 280px; }\n}\n\n\/* The article template's own H2 styling must not bleed into ours. *\/\n.plmb-dashboard--embed h2 { margin: 0; }\n\n\/* -- ARROW GLYPHS ---------------------------------------------------------\n   The block originally set these as the text characters < > and ^ styled in\n   Playfair Display. Google Fonts serves Playfair subsetted, those codepoints\n   are outside the subset, and the fallback renders wrong glyphs entirely\n   (\"TA\" instead of a chevron). They are inline SVG now -- no font dependency.\n   ------------------------------------------------------------------------ *\/\n.plmb-dashboard--embed .plmb-nav-arrow,\n.plmb-dashboard--embed .plmb-hl-arrow,\n.plmb-dashboard--embed .plmb-footer-cta-arrow,\n.plmb-dashboard--embed .plmb-cover-cta-arrow,\n.plmb-dashboard--embed .plmb-footer-online-arrow {\n  font-family: var(--sans, 'Inter', sans-serif);\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  flex: none;\n  line-height: 0;\n}\n.plmb-dashboard--embed .plmb-nav-arrow svg { width: 15px; height: 15px; }\n.plmb-dashboard--embed .plmb-hl-arrow svg { width: 13px; height: 13px; }\n.plmb-dashboard--embed .plmb-footer-cta-arrow svg,\n.plmb-dashboard--embed .plmb-cover-cta-arrow svg,\n.plmb-dashboard--embed .plmb-footer-online-arrow svg { width: 14px; height: 14px; }\n.plmb-dashboard--embed .plmb-nav-arrow svg,\n.plmb-dashboard--embed .plmb-hl-arrow svg,\n.plmb-dashboard--embed .plmb-footer-cta-arrow svg,\n.plmb-dashboard--embed .plmb-cover-cta-arrow svg,\n.plmb-dashboard--embed .plmb-footer-online-arrow svg {\n  fill: none;\n  stroke: currentColor;\n  stroke-width: 2.2;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n  display: block;\n}\n<\/style>\n<!-- ====================================================================\n    INLINE LONRES LOGO (symbol &#8212; referenced via <use>)\n    ==================================================================== -->\n<svg width=\"0\" height=\"0\" style=\"position:absolute\" aria-hidden=\"true\" focusable=\"false\">\n  <symbol id=\"plmb-logo\" viewBox=\"0 0 127.6 127.6\">\n    <rect width=\"127.6\" height=\"127.6\" fill=\"#DE007B\"\/>\n    <path fill=\"#fff\" d=\"M93.3,104.9c-0.7,0-1.4-0.1-2.1-0.2c-0.8-0.1-1.5-0.3-2.2-0.5c-1.4-0.4-2.7-1-4-1.8c-1.2-0.7-2.3-1.7-3.3-3\n      l0.3-2.1l2-1.4l2,0.4c0.7,1.1,1.8,2.1,3.3,2.8c1.4,0.7,2.8,1.1,4,1.1c1.1,0,2.3-0.3,3.4-0.8c1-0.5,1.8-1.2,2.4-2.1\n      c0.5-0.8,0.8-1.8,0.8-2.8c0-0.8-0.1-1.4-0.4-2.1c-0.3-0.6-0.7-1.1-1.3-1.5l-0.1-0.1c-0.1-0.1-0.3-0.3-0.7-0.5l-0.3-0.2\n      c-0.1,0-0.3-0.1-0.6-0.3l-0.2-0.1c-0.4-0.3-0.5-0.3-0.6-0.4l-0.1,0l-3.2-1.8l-3.5-2c-0.4-0.3-0.8-0.5-1.3-0.8l-0.4-0.3\n      c-0.7-0.4-1.2-0.8-1.5-1.1c-1-0.8-1.8-1.8-2.4-2.9c-0.6-1.1-0.9-2.4-0.9-3.8c0-1,0.2-1.9,0.4-2.7c0.3-0.9,0.7-1.7,1.2-2.3\n      c1-1.4,2.3-2.4,4-3.1c0.9-0.4,1.8-0.6,2.6-0.8c0.9-0.2,1.9-0.3,2.9-0.3c3.4,0,6.8,1.4,10.2,4l0.2,2.1l-1.5,1.6l-1.9,0.2\n      c-2.7-2.1-5.1-3.1-7.2-3.1c-1.7,0-3,0.4-4,1.2c-1,0.8-1.4,1.8-1.4,3.2c0,0.9,0.3,1.6,0.9,2.3c0.6,0.8,1.4,1.5,2.3,2\n      c0.4,0.2,1.1,0.6,2,1.1l1.8,0.9c0.6,0.3,0.9,0.5,1,0.6c0.4,0.2,1,0.5,1.7,0.9l0.1,0c0.3,0.2,0.6,0.4,0.9,0.6c1,0.6,1.7,1,2.1,1.3\n      c1.3,0.8,2.4,1.9,3.2,3.3c0.8,1.4,1.3,3,1.3,4.8c0,3.4-1.2,6-3.6,7.8C99.4,104.1,96.6,104.9,93.3,104.9L93.3,104.9z M74.2,104.3\n      H55.7l-1.4-1.4V69.4l1.4-1.4h18.2l1.4,1.4v1.8l-1.4,1.4H59.5v10.6h9.9l1.4,1.4v1.9l-1.4,1.4h-9.9v11.6h14.7l1.4,1.4v1.8L74.2,104.3\n      L74.2,104.3z M46,104.3h-3l-1.2-0.7l-8.8-13.8h-4.5v13l-1.4,1.4h-2.4l-1.4-1.4V69.4l1.4-1.4h9c2,0,3.8,0.4,5.5,1.2\n      c1.7,0.9,3.1,2.2,4,3.7c1,1.7,1.5,3.6,1.5,5.8c0,1.4-0.3,2.8-0.8,4.2c-0.5,1.4-1.4,2.6-2.6,3.7c-0.8,0.7-1.8,1.4-3,1.9l9,13.5\n      L46,104.3L46,104.3z M28.4,85.1h4.9c0.8,0,1.7-0.2,2.7-0.7c0.8-0.4,1.6-1.1,2.2-2.1c0.6-0.9,0.9-2.1,0.9-3.6c0-1.4-0.2-2.5-0.6-3.5\n      c-0.3-0.9-0.9-1.5-1.7-1.9c-0.9-0.5-2-0.7-3.4-0.7h-5.1V85.1L28.4,85.1z\"\/>\n    <path fill=\"#fff\" d=\"M62.6,60.1c-3.2,0-5.7-0.8-7.5-2.5c-1.8-1.6-3.1-3.8-3.9-6.6c-0.4-1.3-0.6-2.8-0.8-4.4\n      c-0.2-1.7-0.3-3.5-0.3-5.3c0-2.7,0.2-5.2,0.6-7.6c0.4-2.3,1-4.3,2-6c0.9-1.7,2.2-3,3.9-3.9c1.6-0.9,3.6-1.3,6-1.3\n      c2.6,0,4.8,0.6,6.5,1.8c1.6,1.2,2.9,2.7,3.7,4.6c0.8,1.7,1.4,3.6,1.7,5.6c0.2,1.8,0.4,3.9,0.4,6.2c0,5.9-0.8,10.6-2.5,13.8\n      C70.4,58.3,67.2,60.1,62.6,60.1L62.6,60.1z M62.6,27.2c-1.7,0-3,0.5-4,1.4c-1,0.9-1.8,2.5-2.2,4.5c-0.2,1-0.4,2.2-0.6,3.7\n      c-0.1,1.2-0.2,2.7-0.2,4.6c0,2.7,0.2,5.1,0.5,7.1c0.3,2,1.1,3.7,2.1,5.1c1,1.3,2.5,1.9,4.4,1.9c1.7,0,3.1-0.6,4.1-1.7\n      c1.1-1.4,1.8-3.1,2.1-5.1c0.4-2.1,0.6-4.5,0.6-7.3c0-4.5-0.5-8.2-1.6-10.8C66.8,28.3,65.2,27.2,62.6,27.2L62.6,27.2z M103.1,59.8\n      h-2.6L99.2,59L88.3,34.4l0,23.6l-1.5,1.4h-2.4L83,58V24.6l1.4-1.4h3.5l1.3,0.9l9.9,22.4l0-21.9l1.4-1.4h2.5l1.4,1.4v33.8\n      L103.1,59.8L103.1,59.8z M43.2,59.4H24.6L23.2,58V24.6l1.4-1.4H27l1.4,1.4v30.2h14.8l1.4,1.4V58L43.2,59.4L43.2,59.4z\"\/>\n  <\/symbol>\n<\/svg>\n<!-- ====================================================================\n    SECTION 1 &#183; OVERVIEW\n    ==================================================================== -->\n<section id=\"plmb-overview\" class=\"plmb-section plmb-section--overview\">\n  <svg class=\"plmb-geo plmb-geo--hero\" viewBox=\"0 0 800 600\" aria-hidden=\"true\">\n    <circle cx=\"400\" cy=\"300\" r=\"280\" fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"1\"\/>\n    <circle cx=\"400\" cy=\"300\" r=\"200\" fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"1\"\/>\n    <circle cx=\"400\" cy=\"300\" r=\"120\" fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"1\"\/>\n    <circle cx=\"400\" cy=\"300\" r=\"40\"  fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"1\"\/>\n    <line x1=\"120\" y1=\"300\" x2=\"680\" y2=\"300\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n    <line x1=\"400\" y1=\"20\"  x2=\"400\" y2=\"580\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n    <line x1=\"180\" y1=\"102\" x2=\"620\" y2=\"498\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n    <line x1=\"620\" y1=\"102\" x2=\"180\" y2=\"498\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n  <\/svg>\n  <div class=\"plmb-section-inner\">\n    <div class=\"plmb-editionbar\">\n      <div class=\"plmb-editionbar-left\">\n        <svg class=\"plmb-logo plmb-logo--sm\" aria-label=\"LonRes\"><use href=\"#plmb-logo\"\/><\/svg>\n        <span class=\"plmb-editionbar-label\">LonRes Research &middot; Prime London Market Dashboard<\/span>\n      <\/div>\n      <span class=\"plmb-section-badge\">May 2026<\/span>\n    <\/div>\n\n<!-- HERO INTRO &#8212; two-column with headline left, lead text right -->\n    <div class=\"plmb-overview-intro\">\n      <div class=\"plmb-overview-intro-left\">\n        <p class=\"plmb-table-heading\">Overview<\/p>\n        <h2 class=\"plmb-overview-headline\">Activity rises in April for prime London sales, but the market remains uncertain<\/h2>\n      <\/div>\n      <div class=\"plmb-overview-intro-right\">\n        <p class=\"plmb-overview-subtext\">\n          The prime London sales market recorded a slight improvement in April after a slow first quarter. Transactions were higher than the same month last year and broadly in line with the long-term average for April, but other metrics continued to reflect the uncertain market conditions &#8212; both withdrawals and price reductions were high. In the prime lettings market, rents fell on an annual basis while activity increased.\n        <\/p>\n      <\/div>\n    <\/div>\n    <!-- DATA TABLE &#8212; full width for clarity -->\n    <div class=\"plmb-overview-table-block\">\n      <p class=\"plmb-table-heading\">Monthly prime data<\/p>\n      <table class=\"plmb-prime-table\">\n        <thead>\n          <tr>\n            <th><\/th>\n            <th>Prime Sales<br>Annual Change<\/th>\n            <th>Prime Sales<br>Change vs. 2017&#8211;19*<\/th>\n            <th>Prime Lettings**<br>Annual Change<\/th>\n            <th>Prime Lettings**<br>Change vs. 2017&#8211;19*<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td>Achieved prices\/rents<\/td>\n            <td>-5.5%<\/td><td>-5.6%<\/td><td>-1.0%<\/td><td>31.0%<\/td>\n          <\/tr>\n          <tr>\n            <td>Properties sold\/let<\/td>\n            <td>2.1%<\/td><td>-3.1%<\/td><td>19.2%<\/td><td>-37.4%<\/td>\n          <\/tr>\n          <tr>\n            <td>New instructions<\/td>\n            <td>-1.8%<\/td><td>27.4%<\/td><td>31.4%<\/td><td>-39.0%<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n      <p class=\"plmb-small\" style=\"margin-top:10px;\">\n        All price and rent figures based on &#163; per sq. ft. values  | \n        *Pre-pandemic  |  **Excludes Prime Fringe  |  Source: LonRes\n      <\/p>\n    <\/div>\n    <!-- KEY HEADLINES &#8212; 2-column bullet list -->\n    <div class=\"plmb-overview-bullets-block\">\n      <p class=\"plmb-table-heading\">Key headlines<\/p>\n      <ul class=\"plmb-bullets plmb-bullets--2col\">\n        <li>Average achieved sold prices fell by <strong>5.5%<\/strong> on an annual basis in April. Compared to 2017&#8211;2019 (pre-pandemic) levels, values were <strong>5.6% lower<\/strong>.<\/li>\n        <li>There were <strong>2.1% more<\/strong> sales transactions in April than a year earlier but <strong>3.1% fewer<\/strong> than the 2017&#8211;2019 (pre-pandemic) April average.<\/li>\n        <li>New sales instructions in April were <strong>1.8% lower<\/strong> than last year but <strong>27.4% higher<\/strong> than the 2017&#8211;2019 (pre-pandemic) April average. The stock of available homes for sale at the end of April was <strong>8.6% higher<\/strong> than a year earlier.<\/li>\n        <li>Transactions in the <strong>&#163;5m+ market<\/strong> were 6.3% lower in April than the same month last year. New instructions in this market increased by 1.1% over the same period. The number of &#163;5m+ homes available for sale grew by 4.3% over the 12 months to the end of April.<\/li>\n        <li>Average rental values across prime London fell by <strong>1.0%<\/strong> in April on an annual basis, while average rents are <strong>31.0% above<\/strong> their 2017&#8211;2019 (pre-pandemic) average.<\/li>\n        <li>LonRes data for April indicated an annual increase of <strong>19.2%<\/strong> in lets agreed and a <strong>31.4% rise<\/strong> in new instructions. The stock of available rental properties increased by <strong>17.5%<\/strong> over the year.<\/li>\n      <\/ul>\n    <\/div>\n    <!-- HEADLINE NAVIGATION -->\n    <div class=\"plmb-headlines\">\n      <div>\n        <h4>Sales headlines<\/h4>\n        <div class=\"plmb-hl-cards\">\n          <a class=\"plmb-hl-card\" href=\"#plmb-sales-activity\">Signs of improvement in April <span class=\"plmb-hl-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/span><\/a>\n          <a class=\"plmb-hl-card\" href=\"#plmb-sales-prices\">Price reductions reach record highs <span class=\"plmb-hl-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/span><\/a>\n          <a class=\"plmb-hl-card\" href=\"#plmb-super-prime\">Super prime settles into new conditions <span class=\"plmb-hl-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/span><\/a>\n        <\/div>\n      <\/div>\n      <div>\n        <h4>Lettings headlines<\/h4>\n        <div class=\"plmb-hl-cards\">\n          <a class=\"plmb-hl-card\" href=\"#plmb-lettings\">Rental growth remains subdued <span class=\"plmb-hl-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/span><\/a>\n          <a class=\"plmb-hl-card\" href=\"#plmb-lettings\">Prime Central London underperforms <span class=\"plmb-hl-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/span><\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<!-- ====================================================================\n    SECTION 2 &#183; SALES ACTIVITY + CHART 1\n    ==================================================================== -->\n<section id=\"plmb-sales-activity\" class=\"plmb-section plmb-section--alt\">\n  <svg class=\"plmb-geo plmb-geo--side\" viewBox=\"0 0 260 260\" aria-hidden=\"true\">\n    <circle cx=\"130\" cy=\"130\" r=\"120\" fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"1.2\"\/>\n    <circle cx=\"130\" cy=\"130\" r=\"80\"  fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"1\"\/>\n    <circle cx=\"130\" cy=\"130\" r=\"40\"  fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n    <line x1=\"10\" y1=\"130\" x2=\"250\" y2=\"130\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n    <line x1=\"130\" y1=\"10\" x2=\"130\" y2=\"250\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n  <\/svg>\n  <div class=\"plmb-section-inner\">\n    <div class=\"plmb-section-head\">\n      <span class=\"plmb-section-num\">02<\/span>\n      <div class=\"plmb-title-wrap\">\n        <span class=\"plmb-section-label\">Sales &#183; Activity<\/span>\n        <h2 class=\"plmb-section-title\">Prime London sales market activity shows signs of improvement in April<\/h2>\n      <\/div>\n      <span class=\"plmb-section-badge\">May 2026<\/span>\n    <\/div>\n    <div class=\"plmb-section-body\">\n      <div class=\"plmb-copy\">\n        <p>After a slow start to 2026, April saw some improvement in the prime London sales market, though overall it remains in a relatively weak position. Transactions were higher than the same month last year and broadly in line with the long-term average for April, but values are still under pressure.<\/p>\n        <p>There were 2.1% more transactions in April than the same month a year ago, but 3.1% fewer than the 2017&#8211;2019 (pre-pandemic) April average. The annual rise is the first for six months but partly reflects low activity in April 2025 when sales were brought forward to March to benefit from the final month of the stamp duty holiday.<\/p>\n        <p>Under offer numbers continued to indicate reasonable demand, being 7.7% higher than a year ago and 20.8% above the 2017&#8211;2019 (pre-pandemic) April average. New instructions fell by 1.8% in April compared to the same month last year but were 27.4% above the 2017&#8211;2019 April average.<\/p>\n        <p>The number of properties withdrawn from sale was significantly above the usual level for the time of year in April. This figure rose by 58.9% on an annual basis and was 44.5% above the 2017&#8211;2019 (pre-pandemic) April average. Despite this, stock on the market across prime London remains high, and was 8.6% higher at the end of April than at the same point last year.<\/p>\n      <\/div>\n      <!-- CHART 1 -->\n      <figure class=\"plmb-chart-card\" data-chart-id=\"chart1\">\n        <div class=\"plmb-chart-head\">\n          <p class=\"plmb-chart-title\">Sales Activity Measures in April 2026, All Prime London<\/p>\n        <\/div>\n        <div class=\"plmb-chart-legend\">\n          <div class=\"plmb-leg-item\"><div class=\"plmb-leg-swatch\" style=\"background:#B9A46A\"><\/div> Compared to April 2017&#8211;19 average<\/div>\n          <div class=\"plmb-leg-item\"><div class=\"plmb-leg-swatch\" style=\"background:#DE007B\"><\/div> Compared to April 2025<\/div>\n        <\/div>\n        <div class=\"plmb-chart-wrap plmb-chart-wrap--md\">\n          <canvas id=\"chart1\"><\/canvas>\n        <\/div>\n        <div class=\"plmb-chart-foot\">\n          <p class=\"plmb-chart-source\">Source: LonRes<\/p>\n          <div class=\"plmb-share\" data-share-text=\"Prime London sales activity &#8212; April 2026: &#8226; Sales transactions: +2.1% YoY (-3.1% vs 2017-19 avg) &#8226; Under offer: +7.7% YoY (+20.8% vs 2017-19 avg) &#8226; New instructions: -1.8% YoY (+27.4% vs 2017-19 avg) &#8226; Withdrawals: +58.9% YoY (+44.5% vs 2017-19 avg) \">\n            <span class=\"plmb-share-label\">Share<\/span>\n            <button class=\"plmb-share-btn\" data-share=\"linkedin\" aria-label=\"Share on LinkedIn\" title=\"Share on LinkedIn\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M20.5 3h-17A1.5 1.5 0 0 0 2 4.5v15A1.5 1.5 0 0 0 3.5 21h17a1.5 1.5 0 0 0 1.5-1.5v-15A1.5 1.5 0 0 0 20.5 3zM8 18H5V9h3v9zM6.5 7.5A1.75 1.75 0 1 1 8.25 5.75 1.74 1.74 0 0 1 6.5 7.5zM19 18h-3v-4.74c0-1.42-.6-1.93-1.38-1.93A1.74 1.74 0 0 0 13 13.19V18h-3V9h2.9v1.3a3.11 3.11 0 0 1 2.7-1.4c1.55 0 3.4.86 3.4 3.66z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"x\" aria-label=\"Share on X\" title=\"Share on X\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M18.244 2H21.5l-7.46 8.524L22.5 22h-6.797l-5.323-6.967L4.279 22H1.02l7.977-9.119L1.5 2h6.961l4.815 6.367L18.244 2zm-1.16 18.084h1.808L7.013 3.83H5.072l12.012 16.254z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"copy\" aria-label=\"Copy chart summary text\" title=\"Copy chart summary text\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M16 1H4a2 2 0 0 0-2 2v14h2V3h12V1zm3 4H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H8V7h11v14z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"download\" aria-label=\"Download chart as PNG image\" title=\"Download chart as PNG image\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M12 16l-5-5h3V4h4v7h3l-5 5zm-7 4v-2h14v2H5z\"\/><\/svg>\n            <\/button>\n          <\/div>\n        <\/div>\n      <\/figure>\n    <\/div>\n      <nav class=\"plmb-section-nav\" aria-label=\"Section navigation\">\n        <a href=\"#plmb-overview\" class=\"plmb-nav-btn plmb-nav-btn--prev\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M15 5l-7 7 7 7\"\/><\/svg><\/span>\n          <span><span class=\"plmb-nav-label\">Previous<\/span>Overview<\/span>\n        <\/a>\n        <a href=\"#plmb-overview\" class=\"plmb-nav-btn plmb-nav-btn--home\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 20V5M5 12l7-7 7 7\"\/><\/svg><\/span> Back to overview\n        <\/a>\n        <a href=\"#plmb-sales-prices\" class=\"plmb-nav-btn plmb-nav-btn--next\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/span>\n          <span><span class=\"plmb-nav-label\">Next<\/span>Sales prices<\/span>\n        <\/a>\n      <\/nav>\n  <\/div>\n<\/section>\n<!-- ====================================================================\n    SECTION 3 &#183; SALES PRICES + CHART 2\n    ==================================================================== -->\n<section id=\"plmb-sales-prices\" class=\"plmb-section\">\n  <div class=\"plmb-section-inner\">\n    <div class=\"plmb-section-head\">\n      <span class=\"plmb-section-num\">03<\/span>\n      <div class=\"plmb-title-wrap\">\n        <span class=\"plmb-section-label\">Sales &#183; Prices<\/span>\n        <h2 class=\"plmb-section-title\">Price reductions reach record highs as vendors compete for buyers<\/h2>\n      <\/div>\n      <span class=\"plmb-section-badge\">May 2026<\/span>\n    <\/div>\n    <div class=\"plmb-section-body\">\n      <div class=\"plmb-copy\">\n        <p>Average achieved prices across all prime London fell by 5.5% on an annual basis in April. While this annual figure does not appear positive, the monthly April figure showed a small increase compared to February and March. It is possible that this result signals values bottoming out, with the market now adjusted to the more uncertain environment and likely higher borrowing costs. However, the amount of stock for sale and the ongoing level of price reductions may mean that there is further to fall.<\/p>\n        <p>The number of price reductions increased by 19.4% on an annual basis. All four months so far this year have seen the highest ever number of reductions for that month, highlighting the level of competition amongst vendors. 2025 saw the highest number of price reductions in a single year and the year-to-date figure for 2026 so far is 20.4% above that.<\/p>\n        <p>Of all the properties sold so far in 2026, 54.0% did so after seeing at least one asking price reduction. The highest previous figure for a full calendar year on this metric is 52.0%, recorded in 2018. The average discount from initial asking price was 10.6% in April &#8212; the highest level for seven years.<\/p>\n      <\/div>\n      <!-- CHART 2 -->\n      <figure class=\"plmb-chart-card\" data-chart-id=\"chart2\">\n        <div class=\"plmb-chart-head\">\n          <p class=\"plmb-chart-title\">Proportion of Sold Properties Requiring At Least One Price Reduction, by Year<\/p>\n        <\/div>\n        <div class=\"plmb-chart-wrap plmb-chart-wrap--md\">\n          <canvas id=\"chart2\"><\/canvas>\n        <\/div>\n        <div class=\"plmb-chart-foot\">\n          <p class=\"plmb-chart-source\">Source: LonRes  |  2026 figure is year-to-date<\/p>\n          <div class=\"plmb-share\" data-share-text=\"Price reductions in prime London hit record highs: &#8226; 54.0% of 2026 sales (YTD) had at least one price reduction &#8226; Previous record: 52.0% (full year 2018) &#8226; Average discount from initial asking price: 10.6% (highest for 7 years) \">\n            <span class=\"plmb-share-label\">Share<\/span>\n            <button class=\"plmb-share-btn\" data-share=\"linkedin\" aria-label=\"Share on LinkedIn\" title=\"Share on LinkedIn\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M20.5 3h-17A1.5 1.5 0 0 0 2 4.5v15A1.5 1.5 0 0 0 3.5 21h17a1.5 1.5 0 0 0 1.5-1.5v-15A1.5 1.5 0 0 0 20.5 3zM8 18H5V9h3v9zM6.5 7.5A1.75 1.75 0 1 1 8.25 5.75 1.74 1.74 0 0 1 6.5 7.5zM19 18h-3v-4.74c0-1.42-.6-1.93-1.38-1.93A1.74 1.74 0 0 0 13 13.19V18h-3V9h2.9v1.3a3.11 3.11 0 0 1 2.7-1.4c1.55 0 3.4.86 3.4 3.66z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"x\" aria-label=\"Share on X\" title=\"Share on X\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M18.244 2H21.5l-7.46 8.524L22.5 22h-6.797l-5.323-6.967L4.279 22H1.02l7.977-9.119L1.5 2h6.961l4.815 6.367L18.244 2zm-1.16 18.084h1.808L7.013 3.83H5.072l12.012 16.254z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"copy\" aria-label=\"Copy chart summary text\" title=\"Copy chart summary text\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M16 1H4a2 2 0 0 0-2 2v14h2V3h12V1zm3 4H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H8V7h11v14z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"download\" aria-label=\"Download chart as PNG image\" title=\"Download chart as PNG image\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M12 16l-5-5h3V4h4v7h3l-5 5zm-7 4v-2h14v2H5z\"\/><\/svg>\n            <\/button>\n          <\/div>\n        <\/div>\n      <\/figure>\n    <\/div>\n      <nav class=\"plmb-section-nav\" aria-label=\"Section navigation\">\n        <a href=\"#plmb-sales-activity\" class=\"plmb-nav-btn plmb-nav-btn--prev\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M15 5l-7 7 7 7\"\/><\/svg><\/span>\n          <span><span class=\"plmb-nav-label\">Previous<\/span>Sales activity<\/span>\n        <\/a>\n        <a href=\"#plmb-overview\" class=\"plmb-nav-btn plmb-nav-btn--home\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 20V5M5 12l7-7 7 7\"\/><\/svg><\/span> Back to overview\n        <\/a>\n        <a href=\"#plmb-super-prime\" class=\"plmb-nav-btn plmb-nav-btn--next\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/span>\n          <span><span class=\"plmb-nav-label\">Next<\/span>Super prime<\/span>\n        <\/a>\n      <\/nav>\n  <\/div>\n<\/section>\n<!-- ====================================================================\n    SECTION 4 &#183; SUPER PRIME (&#163;5m+) + CHART 3\n    ==================================================================== -->\n<section id=\"plmb-super-prime\" class=\"plmb-section plmb-section--alt\">\n  <svg class=\"plmb-geo plmb-geo--side\" viewBox=\"0 0 260 260\" aria-hidden=\"true\">\n    <circle cx=\"130\" cy=\"130\" r=\"120\" fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"1.2\"\/>\n    <circle cx=\"130\" cy=\"130\" r=\"80\"  fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"1\"\/>\n    <circle cx=\"130\" cy=\"130\" r=\"40\"  fill=\"none\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n    <line x1=\"10\" y1=\"130\" x2=\"250\" y2=\"130\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n    <line x1=\"130\" y1=\"10\" x2=\"130\" y2=\"250\" stroke=\"#2A2A33\" stroke-width=\"0.8\"\/>\n  <\/svg>\n  <div class=\"plmb-section-inner\">\n    <div class=\"plmb-section-head\">\n      <span class=\"plmb-section-num\">04<\/span>\n      <div class=\"plmb-title-wrap\">\n        <span class=\"plmb-section-label\">Super Prime &#183; &#163;5m+<\/span>\n        <h2 class=\"plmb-section-title\">Super prime market settles into new conditions<\/h2>\n      <\/div>\n      <span class=\"plmb-section-badge\">May 2026<\/span>\n    <\/div>\n    <div class=\"plmb-section-body\">\n      <div class=\"plmb-copy\">\n        <p>Most &#163;5m+ market metrics saw limited change in April, lending weight to the idea that the market is settling down after the upheaval of late 2025 and the first quarter of 2026.<\/p>\n        <p>&#163;5m+ transaction volumes in April were 6.3% lower than the same month last year but 57.9% higher than the 2017&#8211;2019 April average. Under offer numbers rose by 4.5% compared with last April and were 50.0% higher than the 2017&#8211;2019 April average. New instructions in April recorded a 1.1% fall compared to a year earlier but were 81.2% higher than the 2017&#8211;2019 April average.<\/p>\n        <p>Like the wider market, withdrawals were the only metric to record significant annual change, up 60.0% on last year. At the end of April there were 4.3% more &#163;5m+ properties on the market than at the same time last year and, while stock levels are significantly above the long-term average, the current level is around 4% below the peak reached in June 2025.<\/p>\n        <p>The number of price reductions increased by 1.6% on an annual basis, but this measure is already at a high level &#8212; April recorded the second highest ever number of reductions in a single month. Of all the &#163;5m+ properties sold so far in 2026, 44.4% did so after seeing at least one asking price reduction.<\/p>\n      <\/div>\n      <!-- CHART 3 -->\n      <figure class=\"plmb-chart-card\" data-chart-id=\"chart3\">\n        <div class=\"plmb-chart-head\">\n          <p class=\"plmb-chart-title\">&#163;5m+ Sales Activity Measures in April 2026, All Prime London<\/p>\n        <\/div>\n        <div class=\"plmb-chart-legend\">\n          <div class=\"plmb-leg-item\"><div class=\"plmb-leg-swatch\" style=\"background:#B9A46A\"><\/div> Compared to April 2017&#8211;19 average<\/div>\n          <div class=\"plmb-leg-item\"><div class=\"plmb-leg-swatch\" style=\"background:#DE007B\"><\/div> Compared to April 2025<\/div>\n        <\/div>\n        <div class=\"plmb-chart-wrap plmb-chart-wrap--md\">\n          <canvas id=\"chart3\"><\/canvas>\n        <\/div>\n        <div class=\"plmb-chart-foot\">\n          <p class=\"plmb-chart-source\">Source: LonRes<\/p>\n          <div class=\"plmb-share\" data-share-text=\"Super prime (&#163;5m+) London sales &#8212; April 2026: &#8226; Transactions: -6.3% YoY (+57.9% vs 2017-19 avg) &#8226; Under offer: +4.5% YoY (+50.0% vs 2017-19 avg) &#8226; New instructions: +1.1% YoY (+81.2% vs 2017-19 avg) &#8226; Withdrawals: +60.0% YoY (+46.3% vs 2017-19 avg) \">\n            <span class=\"plmb-share-label\">Share<\/span>\n            <button class=\"plmb-share-btn\" data-share=\"linkedin\" aria-label=\"Share on LinkedIn\" title=\"Share on LinkedIn\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M20.5 3h-17A1.5 1.5 0 0 0 2 4.5v15A1.5 1.5 0 0 0 3.5 21h17a1.5 1.5 0 0 0 1.5-1.5v-15A1.5 1.5 0 0 0 20.5 3zM8 18H5V9h3v9zM6.5 7.5A1.75 1.75 0 1 1 8.25 5.75 1.74 1.74 0 0 1 6.5 7.5zM19 18h-3v-4.74c0-1.42-.6-1.93-1.38-1.93A1.74 1.74 0 0 0 13 13.19V18h-3V9h2.9v1.3a3.11 3.11 0 0 1 2.7-1.4c1.55 0 3.4.86 3.4 3.66z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"x\" aria-label=\"Share on X\" title=\"Share on X\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M18.244 2H21.5l-7.46 8.524L22.5 22h-6.797l-5.323-6.967L4.279 22H1.02l7.977-9.119L1.5 2h6.961l4.815 6.367L18.244 2zm-1.16 18.084h1.808L7.013 3.83H5.072l12.012 16.254z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"copy\" aria-label=\"Copy chart summary text\" title=\"Copy chart summary text\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M16 1H4a2 2 0 0 0-2 2v14h2V3h12V1zm3 4H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H8V7h11v14z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"download\" aria-label=\"Download chart as PNG image\" title=\"Download chart as PNG image\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M12 16l-5-5h3V4h4v7h3l-5 5zm-7 4v-2h14v2H5z\"\/><\/svg>\n            <\/button>\n          <\/div>\n        <\/div>\n      <\/figure>\n    <\/div>\n      <nav class=\"plmb-section-nav\" aria-label=\"Section navigation\">\n        <a href=\"#plmb-sales-prices\" class=\"plmb-nav-btn plmb-nav-btn--prev\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M15 5l-7 7 7 7\"\/><\/svg><\/span>\n          <span><span class=\"plmb-nav-label\">Previous<\/span>Sales prices<\/span>\n        <\/a>\n        <a href=\"#plmb-overview\" class=\"plmb-nav-btn plmb-nav-btn--home\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 20V5M5 12l7-7 7 7\"\/><\/svg><\/span> Back to overview\n        <\/a>\n        <a href=\"#plmb-lettings\" class=\"plmb-nav-btn plmb-nav-btn--next\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/span>\n          <span><span class=\"plmb-nav-label\">Next<\/span>Lettings<\/span>\n        <\/a>\n      <\/nav>\n  <\/div>\n<\/section>\n<!-- ====================================================================\n    SECTION 5 &#183; LETTINGS + CHART 4 (full-width chart)\n    ==================================================================== -->\n<section id=\"plmb-lettings\" class=\"plmb-section\">\n  <div class=\"plmb-section-inner\">\n    <div class=\"plmb-section-head\">\n      <span class=\"plmb-section-num\">05<\/span>\n      <div class=\"plmb-title-wrap\">\n        <span class=\"plmb-section-label\">Lettings<\/span>\n        <h2 class=\"plmb-section-title\">Lettings market waits for impact of Renters' Rights Act<\/h2>\n      <\/div>\n      <span class=\"plmb-section-badge\">May 2026<\/span>\n    <\/div>\n    <div class=\"plmb-section-body plmb-section-body--stacked\">\n      <div class=\"plmb-copy plmb-copy--full plmb-copy--cols\">\n        <p>Rental values fell on an annual basis in April, and while activity increased compared to the low levels of 2025 it remains significantly below the longer-term average.<\/p>\n        <p>LonRes data for April indicated an annual increase of 19.2% in lets agreed and a 31.4% increase in new instructions. The stock of available rental properties increased on an annual basis, with 17.5% more homes on the market at the end of April than a year earlier. Note that these activity figures exclude listings in our Prime Fringe catchment as this has been impacted by a change in the way listings are collected for our new rental checker tool.<\/p>\n        <p>Average rental values fell by 1.0% on an annual basis in April, continuing the trend over the past 12 months of relatively small movements in either direction. This is in contrast to the rapid growth in rents seen from 2021 through to 2023, which has contributed to values being 31.0% above their 2017&#8211;2019 (pre-pandemic) average.<\/p>\n        <p>Rental growth has been relatively subdued since 2024, and this is true for all three of our main catchment areas. While they have mostly moved in similar patterns, for the past few months Prime Central London has underperformed, recording an annual fall of 2.6% in April.<\/p>\n        <p>The impact of the Renters' Rights Act on pricing remains to be seen. With bidding wars banned and rent increases more limited, one would expect asking prices to rise, but the effect on actual rents paid is less clear. So far, our data on average discounts has not shown any significant changes.<\/p>\n      <\/div>\n      <!-- CHART 4 -->\n      <figure class=\"plmb-chart-card plmb-chart-card--wide\" data-chart-id=\"chart4\">\n        <div class=\"plmb-chart-head\">\n          <p class=\"plmb-chart-title\">Annual Rental Growth by Area<\/p>\n        <\/div>\n        <div class=\"plmb-chart-legend\">\n          <div class=\"plmb-leg-item\"><div class=\"plmb-leg-swatch\" style=\"background:#DE007B\"><\/div> Prime Central London<\/div>\n          <div class=\"plmb-leg-item\"><div class=\"plmb-leg-swatch\" style=\"background:#B9A46A\"><\/div> Inner Prime<\/div>\n          <div class=\"plmb-leg-item\"><div class=\"plmb-leg-swatch\" style=\"background:#8B7B5E\"><\/div> Fringe<\/div>\n        <\/div>\n        <div class=\"plmb-chart-wrap plmb-chart-wrap--lg\">\n          <canvas id=\"chart4\"><\/canvas>\n        <\/div>\n        <div class=\"plmb-chart-foot\">\n          <p class=\"plmb-chart-source\">Source: LonRes  |  Data to April 2026<\/p>\n          <div class=\"plmb-share\" data-share-text=\"Prime London rental growth (annual %) to April 2026: &#8226; Prime Central London: -2.6% &#8226; Inner Prime: +1.0% &#8226; Fringe: +3.2% \">\n            <span class=\"plmb-share-label\">Share<\/span>\n            <button class=\"plmb-share-btn\" data-share=\"linkedin\" aria-label=\"Share on LinkedIn\" title=\"Share on LinkedIn\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M20.5 3h-17A1.5 1.5 0 0 0 2 4.5v15A1.5 1.5 0 0 0 3.5 21h17a1.5 1.5 0 0 0 1.5-1.5v-15A1.5 1.5 0 0 0 20.5 3zM8 18H5V9h3v9zM6.5 7.5A1.75 1.75 0 1 1 8.25 5.75 1.74 1.74 0 0 1 6.5 7.5zM19 18h-3v-4.74c0-1.42-.6-1.93-1.38-1.93A1.74 1.74 0 0 0 13 13.19V18h-3V9h2.9v1.3a3.11 3.11 0 0 1 2.7-1.4c1.55 0 3.4.86 3.4 3.66z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"x\" aria-label=\"Share on X\" title=\"Share on X\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M18.244 2H21.5l-7.46 8.524L22.5 22h-6.797l-5.323-6.967L4.279 22H1.02l7.977-9.119L1.5 2h6.961l4.815 6.367L18.244 2zm-1.16 18.084h1.808L7.013 3.83H5.072l12.012 16.254z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"copy\" aria-label=\"Copy chart summary text\" title=\"Copy chart summary text\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M16 1H4a2 2 0 0 0-2 2v14h2V3h12V1zm3 4H8a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2zm0 16H8V7h11v14z\"\/><\/svg>\n            <\/button>\n            <button class=\"plmb-share-btn\" data-share=\"download\" aria-label=\"Download chart as PNG image\" title=\"Download chart as PNG image\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M12 16l-5-5h3V4h4v7h3l-5 5zm-7 4v-2h14v2H5z\"\/><\/svg>\n            <\/button>\n          <\/div>\n        <\/div>\n      <\/figure>\n    <\/div>\n      <nav class=\"plmb-section-nav\" aria-label=\"Section navigation\">\n        <a href=\"#plmb-super-prime\" class=\"plmb-nav-btn plmb-nav-btn--prev\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M15 5l-7 7 7 7\"\/><\/svg><\/span>\n          <span><span class=\"plmb-nav-label\">Previous<\/span>Super prime<\/span>\n        <\/a>\n        <a href=\"#plmb-overview\" class=\"plmb-nav-btn plmb-nav-btn--home\">\n          <span class=\"plmb-nav-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 20V5M5 12l7-7 7 7\"\/><\/svg><\/span> Back to overview\n        <\/a>\n        <span class=\"plmb-nav-btn plmb-nav-btn--next plmb-nav-btn--disabled\" aria-hidden=\"true\"><\/span>\n      <\/nav>\n  <\/div>\n<\/section>\n<!-- ====================================================================\n    FOOTER\n    ==================================================================== -->\n<footer id=\"plmb-footer\" class=\"plmb-footer\">\n  <div class=\"plmb-footer-inner\">\n    <div class=\"plmb-footer-logo-row\">\n      <svg class=\"plmb-logo plmb-logo--sm\" aria-label=\"LonRes\"><use href=\"#plmb-logo\"\/><\/svg>\n      <p class=\"plmb-footer-text\" style=\"margin:0;\">Prime London Market Dashboard &#183; May 2026<\/p>\n    <\/div>\n    <div class=\"plmb-footer-grid\">\n      <div>\n        <div class=\"plmb-footer-block\">\n          <p class=\"plmb-footer-title\">Notes<\/p>\n          <p class=\"plmb-footer-text\">\n            Prime London analysis includes properties within the following postcodes:<br>\n            <strong>Prime Central London:<\/strong> SW1Y, SW1X, SW1W, SW1A, SW3, SW7, SW10, W1S, W1K, W1J, W8.<br>\n            <strong>Prime Inner London:<\/strong> NW1, NW3, NW8, SW1P, SW1V, W1T, W1H, W1U, W1G, W1W, W2, W11, W14.<br>\n            <strong>Prime Fringe:<\/strong> SE1, SE11, SW4, SW5, SW6, SW11, W4, W6, W9, W10.<br><br>\n            Lettings activity analysis currently excludes Prime Fringe postcodes due to a change in the way listings are collected for our new rental checker service.\n          <\/p>\n        <\/div>\n      <\/div>\n      <div>\n        <div class=\"plmb-footer-cta\">\n          <p class=\"plmb-footer-cta-eyebrow\">Stay informed<\/p>\n          <h3 class=\"plmb-footer-cta-title\">Sign up to our Newsletter<\/h3>\n          <p class=\"plmb-footer-cta-text\">\n            Each month, we'll share highlights from the LonRes platform: standout sales and lets, key market trends, snapshots from our network, plus industry updates and opportunities.\n          <\/p>\n          <p class=\"plmb-footer-cta-text\">\n            Designed to cut through the noise, it's a quick, relevant way to stay connected &#8212; to the market, your peers, and LonRes.\n          <\/p>\n          <a href=\"https:\/\/lonres.com\/public\/newsletter\/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"plmb-footer-cta-btn\">\n            Sign up to the newsletter\n            <span class=\"plmb-footer-cta-arrow\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M9 5l7 7-7 7\"\/><\/svg><\/span>\n          <\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/footer>\n<\/div><!-- \/.plmb-dashboard -->\n<!-- ====================================================================\n    CHARTS + SHARE LOGIC\n    ==================================================================== -->\n<script>\n(function () {\n  \/* -- Share URL \\u2014 pulled from data-attr on wrapper, falls back to page URL -- *\/\n  const wrapper = document.querySelector('.plmb-dashboard');\n  const PLMB_URL = (wrapper && wrapper.dataset.plmbUrl) || window.location.href;\n  \/* -- Chart.js global defaults ----------------------------------------- *\/\n  Chart.defaults.font.family = \"'Inter', sans-serif\";\n  Chart.defaults.font.size  = 12;\n  Chart.defaults.color      = '#2A2A33';\n  const MAGENTA = '#DE007B';\n  const TEAL    = '#B9A46A';\n  const DARK    = '#2A2A33';\n  const SAND    = '#8B7B5E';\n  \/* Chart registry \\u2014 for resize + PNG export *\/\n  const charts = {};\n  \/* ----------------------------------------------------------------------\n    PNG EXPORT \\u2014 render chart onto a branded canvas with title + source\n    ---------------------------------------------------------------------- *\/\n  function exportChartPng(chartId, card) {\n    const chart = charts[chartId];\n    if (!chart) return null;\n    const title  = card.querySelector('.plmb-chart-title').textContent.trim();\n    const source = card.querySelector('.plmb-chart-source').textContent.trim();\n    \/* Read legend items from the DOM (if present) *\/\n    const legendEls = card.querySelectorAll('.plmb-leg-item');\n    const legend = Array.from(legendEls).map(el => ({\n      colour: (el.querySelector('.plmb-leg-swatch')?.style.background) || '#333',\n      label:  el.textContent.trim()\n    }));\n    \/* Render chart at 2x for crisp output *\/\n    const scale = 2;\n    const srcCanvas = chart.canvas;\n    const W = Math.max(srcCanvas.clientWidth, 720);\n    const H = Math.max(srcCanvas.clientHeight, 400);\n    \/* Layout: title band \\u2192 legend band (if any) \\u2192 chart \\u2192 footer *\/\n    const padX    = 32;\n    const titleH  = 50;\n    const legendH  = legend.length ? 38 : 8;  \/* row of swatches + spacing *\/\n    const padTop  = titleH + legendH + 14;\n    const padBot  = 50;\n    const out = document.createElement('canvas');\n    out.width  = (W + padX * 2) * scale;\n    out.height = (H + padTop + padBot) * scale;\n    const ctx = out.getContext('2d');\n    ctx.scale(scale, scale);\n    const fullW = out.width \/ scale;\n    const fullH = out.height \/ scale;\n    \/* Background *\/\n    ctx.fillStyle = '#FFFFFF';\n    ctx.fillRect(0, 0, fullW, fullH);\n    \/* Brand bar *\/\n    ctx.fillStyle = MAGENTA;\n    ctx.fillRect(0, 0, 6, fullH);\n    \/* Title \\u2014 wraps to two lines if needed *\/\n    ctx.fillStyle = DARK;\n    ctx.font = '600 16px Inter, sans-serif';\n    ctx.textBaseline = 'top';\n    ctx.textAlign = 'left';\n    const maxTitleWidth = fullW - padX * 2;\n    const words = title.split(' ');\n    let line = '', lines = [];\n    for (const w of words) {\n      const test = line ? line + ' ' + w : w;\n      if (ctx.measureText(test).width > maxTitleWidth) { lines.push(line); line = w; }\n      else line = test;\n    }\n    if (line) lines.push(line);\n    lines.slice(0, 2).forEach((ln, i) => ctx.fillText(ln, padX, 18 + i * 20));\n    \/* Legend row (if present) *\/\n    if (legend.length) {\n      const legendY = titleH + 6;\n      let cursorX = padX;\n      ctx.font = '500 12px Inter, sans-serif';\n      ctx.fillStyle = DARK;\n      ctx.textBaseline = 'middle';\n      const swatchW = 14, swatchH = 11, gapSwatchLabel = 7, gapItems = 22;\n      const midY = legendY + 11;\n      legend.forEach(item => {\n        const labelW = ctx.measureText(item.label).width;\n        const itemW = swatchW + gapSwatchLabel + labelW;\n        \/* Wrap to a second line if we'd run off the right edge *\/\n        if (cursorX + itemW > fullW - padX && cursorX > padX) {\n          cursorX = padX;\n          \/* (single-row legends only \\u2014 most charts have \\u22644 items at this width) *\/\n        }\n        ctx.fillStyle = item.colour;\n        ctx.fillRect(cursorX, midY - swatchH \/ 2, swatchW, swatchH);\n        ctx.fillStyle = DARK;\n        ctx.fillText(item.label, cursorX + swatchW + gapSwatchLabel, midY);\n        cursorX += itemW + gapItems;\n      });\n    }\n    \/* Render chart on top *\/\n    ctx.drawImage(srcCanvas, padX, padTop, W, H);\n    \/* Footer line *\/\n    ctx.fillStyle = '#E2E0D8';\n    ctx.fillRect(padX, padTop + H + 14, fullW - padX * 2, 1);\n    \/* Source (left) + LonRes credit (right) *\/\n    ctx.fillStyle = '#7C8090';\n    ctx.font = '500 11px Inter, sans-serif';\n    ctx.textBaseline = 'middle';\n    ctx.textAlign = 'left';\n    ctx.fillText(source, padX, padTop + H + 30);\n    ctx.textAlign = 'right';\n    ctx.fillStyle = MAGENTA;\n    ctx.font = '700 11px Inter, sans-serif';\n    ctx.fillText('LonRes \\u00b7 Prime London Market Dashboard', fullW - padX, padTop + H + 30);\n    ctx.textAlign = 'left';\n    return out.toDataURL('image\/png');\n  }\n  function triggerDownload(dataUrl, filename) {\n    const a = document.createElement('a');\n    a.href = dataUrl;\n    a.download = filename;\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a);\n  }\n  \/* ----------------------------------------------------------------------\n    TOAST \\u2014 small in-page feedback\n    ---------------------------------------------------------------------- *\/\n  let toastTimer;\n  function toast(msg) {\n    let el = document.querySelector('.plmb-toast');\n    if (!el) {\n      el = document.createElement('div');\n      el.className = 'plmb-toast';\n      wrapper.appendChild(el);\n    }\n    el.textContent = msg;\n    el.classList.add('plmb-toast--show');\n    clearTimeout(toastTimer);\n    toastTimer = setTimeout(() => el.classList.remove('plmb-toast--show'), 2400);\n  }\n  \/* ----------------------------------------------------------------------\n    SHARE BUTTON HANDLERS \\u2014 linkedin \/ x \/ copy \/ download\n    ---------------------------------------------------------------------- *\/\n  document.querySelectorAll('.plmb-share-btn').forEach(btn => {\n    btn.addEventListener('click', async function (e) {\n      e.preventDefault();\n      const shareWrap = btn.closest('.plmb-share');\n      const card      = btn.closest('.plmb-chart-card');\n      const chartId  = card ? card.dataset.chartId : '';\n      const title    = card ? card.querySelector('.plmb-chart-title').textContent.trim() : '';\n      const source    = card ? card.querySelector('.plmb-chart-source').textContent.trim() : '';\n      const summary  = shareWrap ? (shareWrap.dataset.shareText || '').replace(\/ \/g, '\\n') : '';\n      const platform  = btn.dataset.share;\n      const deepUrl  = PLMB_URL + (chartId ? '#' + chartId : '');\n      \/* Pre-populated, rich share text *\/\n      const richText =\n        title + '\\n\\n' +\n        (summary || '') + '\\n' +\n        source + '\\n\\n' +\n        'See the full Prime London Market Dashboard: ' + deepUrl;\n      \/* Copy text to clipboard \\u2014 returns a promise, with execCommand fallback for file:\/\/ *\/\n      function copyText(text) {\n        if (navigator.clipboard && window.isSecureContext) {\n          return navigator.clipboard.writeText(text).catch(() => copyTextFallback(text));\n        }\n        return copyTextFallback(text);\n      }\n      function copyTextFallback(text) {\n        return new Promise((resolve, reject) => {\n          const ta = document.createElement('textarea');\n          ta.value = text;\n          ta.style.cssText = 'position:fixed;top:0;left:0;opacity:0;';\n          document.body.appendChild(ta);\n          ta.focus(); ta.select();\n          let ok = false;\n          try { ok = document.execCommand('copy'); } catch (e) {}\n          document.body.removeChild(ta);\n          ok ? resolve() : reject(new Error('copy failed'));\n        });\n      }\n      function openShareWindow(u) {\n        \/* Use a temporary anchor with target=\"_blank\" \\u2014 the most reliable\n          cross-browser way to open a new tab without ever navigating the\n          current page. window.open() returns null in some browsers even\n          on success, which falsely triggers a fallback redirect. *\/\n        const a = document.createElement('a');\n        a.href = u;\n        a.target = '_blank';\n        a.rel = 'noopener noreferrer';\n        a.style.display = 'none';\n        document.body.appendChild(a);\n        a.click();\n        document.body.removeChild(a);\n      }\n      if (platform === 'download') {\n        try {\n          const dataUrl = exportChartPng(chartId, card);\n          if (dataUrl) {\n            triggerDownload(dataUrl, 'lonres-' + chartId + '-may-2026.png');\n            toast('Chart image downloaded');\n          } else {\n            toast('Download failed \\u2014 chart not ready');\n          }\n        } catch (err) {\n          console.error('PLMB download error:', err);\n          toast('Download failed');\n        }\n        return;\n      }\n      if (platform === 'copy') {\n        copyText(richText)\n          .then(() => toast('Chart summary copied to clipboard'))\n          .catch(() => toast('Copy blocked \\u2014 please copy manually'));\n        return;\n      }\n      if (platform === 'linkedin') {\n        \/* LinkedIn share API only accepts URL; OG tags on destination page populate the preview.\n          Open share window first (so popup isn't blocked), then copy text for pasting. *\/\n        const u = 'https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=' + encodeURIComponent(deepUrl);\n        openShareWindow(u);\n        copyText(richText)\n          .then(() => toast('Summary copied \\u2014 paste it into your LinkedIn post'))\n          .catch(() => {});\n        return;\n      }\n      if (platform === 'x') {\n        \/* X \/ Twitter \\u2014 supports `text` parameter, pre-populates the tweet *\/\n        const tweetText = title + ' \\u2014 ' + source + ' (via LonRes Prime London Market Dashboard)';\n        const u = 'https:\/\/twitter.com\/intent\/tweet?text=' + encodeURIComponent(tweetText) + '&url=' + encodeURIComponent(deepUrl);\n        openShareWindow(u);\n        return;\n      }\n    });\n  });\n  \/* ----------------------------------------------------------------------\n    RESIZE \\u2014 Chart.js handles canvas resize, but force a redraw of bar\n    labels and trigger a recalculation after the window transitions\n    between mobile\/desktop breakpoints.\n    ------------------------------------------------------------------------ *\/\n  let resizeTimer;\n  window.addEventListener('resize', () => {\n    clearTimeout(resizeTimer);\n    resizeTimer = setTimeout(() => {\n      Object.values(charts).forEach(c => { try { c.resize(); c.update('none'); } catch (e) {} });\n    }, 120);\n  });\n  \/* ----------------------------------------------------------------------\n    CHART 1 \\u00b7 Horizontal bar \\u2014 Sales Activity Measures\n    ---------------------------------------------------------------------- *\/\n  (function () {\n    const labels = ['Sales', 'Under Offer', 'New Instructions', 'Withdrawn'];\n    const vs1719 = [-3.1, 20.8, 27.4, 44.5];\n    const vs2025 = [ 2.1,  7.7, -1.8, 58.9];\n    charts.chart1 = new Chart(document.getElementById('chart1'), {\n      type: 'bar',\n      data: {\n        labels,\n        datasets: [\n          { label: 'Compared to April 2017\\u201319 average', data: vs1719, backgroundColor: TEAL,    borderWidth: 0, barThickness: 22 },\n          { label: 'Compared to April 2025',          data: vs2025, backgroundColor: MAGENTA, borderWidth: 0, barThickness: 22 }\n        ]\n      },\n      options: {\n        indexAxis: 'y',\n        responsive: true,\n        maintainAspectRatio: false,\n        plugins: {\n          legend: { display: false },\n          tooltip: { callbacks: { label: ctx => ` ${ctx.dataset.label}: ${ctx.parsed.x > 0 ? '+' : ''}${ctx.parsed.x.toFixed(1)}%` } }\n        },\n        scales: {\n          x: { grid: { color: 'rgba(0,0,0,0.06)' }, border: { dash: [4,4] }, ticks: { callback: v => v + '%', maxTicksLimit: 9 } },\n          y: { grid: { display: false }, border: { display: false }, ticks: { font: { size: 12 } } }\n        },\n        layout: { padding: { right: 50 } },\n        animation: false\n      },\n      plugins: [{\n        id: 'barLabels1',\n        afterDatasetsDraw(chart) {\n          const ctx = chart.ctx;\n          ctx.save();\n          chart.data.datasets.forEach((ds, di) => {\n            const meta = chart.getDatasetMeta(di);\n            meta.data.forEach((bar, i) => {\n              const v = ds.data[i];\n              const txt = (v > 0 ? '+' : '') + v.toFixed(1) + '%';\n              ctx.font = 'bold 11px Inter, sans-serif';\n              ctx.fillStyle = DARK;\n              const x = v >= 0 ? bar.x + 5 : bar.x - 5;\n              ctx.textAlign = v >= 0 ? 'left' : 'right';\n              ctx.textBaseline = 'middle';\n              ctx.fillText(txt, x, bar.y);\n            });\n          });\n          ctx.restore();\n        }\n      }]\n    });\n  })();\n  \/* ----------------------------------------------------------------------\n    CHART 2 \\u00b7 Bar \\u2014 Price Reduction Proportion by Year\n    ---------------------------------------------------------------------- *\/\n  (function () {\n    const years  = [2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026];\n    const vals  = [25.4,26.8,25.1,38.2,43.2,44.8,52.0,45.5,40.2,41.5,39.6,45.9,44.5,47.8,54.0];\n    const colors = years.map(y => y === 2026 ? MAGENTA : 'rgba(222,0,123,0.45)');\n    charts.chart2 = new Chart(document.getElementById('chart2'), {\n      type: 'bar',\n      data: { labels: years, datasets: [{ data: vals, backgroundColor: colors, borderWidth: 0, barThickness: 26 }] },\n      options: {\n        responsive: true,\n        maintainAspectRatio: false,\n        plugins: {\n          legend: { display: false },\n          tooltip: { callbacks: { label: ctx => ` ${ctx.parsed.y.toFixed(1)}%${ctx.label === '2026' ? ' (YTD)' : ''}` } }\n        },\n        scales: {\n          y: { min: 0, max: 65, grid: { color: 'rgba(0,0,0,0.06)' }, border: { dash: [4,4] }, ticks: { callback: v => v + '%' } },\n          x: { grid: { display: false }, border: { display: false }, ticks: { font: { size: 11 } } }\n        },\n        animation: false\n      }\n    });\n  })();\n  \/* ----------------------------------------------------------------------\n    CHART 3 \\u00b7 Horizontal bar \\u2014 \\u00a35m+ Sales Activity Measures\n    ---------------------------------------------------------------------- *\/\n  (function () {\n    const labels = ['Sales', 'Under Offer', 'New Instructions', 'Withdrawn'];\n    const vs1719 = [57.9, 50.0, 81.2, 46.3];\n    const vs2025 = [-6.3,  4.5,  1.1, 60.0];\n    charts.chart3 = new Chart(document.getElementById('chart3'), {\n      type: 'bar',\n      data: {\n        labels,\n        datasets: [\n          { label: 'Compared to April 2017\\u201319 average', data: vs1719, backgroundColor: TEAL,    borderWidth: 0, barThickness: 22 },\n          { label: 'Compared to April 2025',          data: vs2025, backgroundColor: MAGENTA, borderWidth: 0, barThickness: 22 }\n        ]\n      },\n      options: {\n        indexAxis: 'y',\n        responsive: true,\n        maintainAspectRatio: false,\n        plugins: {\n          legend: { display: false },\n          tooltip: { callbacks: { label: ctx => ` ${ctx.dataset.label}: ${ctx.parsed.x > 0 ? '+' : ''}${ctx.parsed.x.toFixed(1)}%` } }\n        },\n        scales: {\n          x: { grid: { color: 'rgba(0,0,0,0.06)' }, border: { dash: [4,4] }, ticks: { callback: v => v + '%', maxTicksLimit: 10 } },\n          y: { grid: { display: false }, border: { display: false }, ticks: { font: { size: 12 } } }\n        },\n        layout: { padding: { right: 55 } },\n        animation: false\n      },\n      plugins: [{\n        id: 'barLabels3',\n        afterDatasetsDraw(chart) {\n          const ctx = chart.ctx;\n          ctx.save();\n          chart.data.datasets.forEach((ds, di) => {\n            const meta = chart.getDatasetMeta(di);\n            meta.data.forEach((bar, i) => {\n              const v = ds.data[i];\n              const txt = (v > 0 ? '+' : '') + v.toFixed(1) + '%';\n              ctx.font = 'bold 11px Inter, sans-serif';\n              ctx.fillStyle = DARK;\n              const x = v >= 0 ? bar.x + 5 : bar.x - 5;\n              ctx.textAlign = v >= 0 ? 'left' : 'right';\n              ctx.textBaseline = 'middle';\n              ctx.fillText(txt, x, bar.y);\n            });\n          });\n          ctx.restore();\n        }\n      }]\n    });\n  })();\n  \/* ----------------------------------------------------------------------\n    CHART 4 \\u00b7 Line \\u2014 Annual Rental Growth by Area\n    ---------------------------------------------------------------------- *\/\n  (function () {\n    const labels = [\n      'Apr 21','May 21','Jun 21','Jul 21','Aug 21','Sep 21','Oct 21','Nov 21','Dec 21',\n      'Jan 22','Feb 22','Mar 22','Apr 22','May 22','Jun 22','Jul 22','Aug 22','Sep 22',\n      'Oct 22','Nov 22','Dec 22','Jan 23','Feb 23','Mar 23','Apr 23','May 23','Jun 23',\n      'Jul 23','Aug 23','Sep 23','Oct 23','Nov 23','Dec 23','Jan 24','Feb 24','Mar 24',\n      'Apr 24','May 24','Jun 24','Jul 24','Aug 24','Sep 24','Oct 24','Nov 24','Dec 24',\n      'Jan 25','Feb 25','Mar 25','Apr 25','May 25','Jun 25','Jul 25','Aug 25','Sep 25',\n      'Oct 25','Nov 25','Dec 25','Jan 26','Feb 26','Mar 26','Apr 26'\n    ];\n    const pcl    = [-15.7,-10.0,-9.4,-2.5,-0.6,5.6,7.3,12.8,18.8,23.4,28.1,28.8,31.8,31.9,30.7,26.0,21.8,17.4,19.1,17.2,16.5,10.6,8.9,7.9,8.3,8.3,7.2,6.6,6.4,7.9,6.2,4.3,-1.3,-0.2,1.0,4.4,3.9,2.4,-0.1,1.4,0.9,1.9,0.8,2.0,3.8,4.3,6.7,3.9,5.2,2.7,7.5,4.7,5.7,1.1,-0.9,-2.4,-3.5,-0.9,-3.4,-2.7,-2.6];\n    const inner  = [-14.8,-9.5,-4.6,-0.9,0.8,6.1,9.3,14.9,18.4,22.4,25.8,28.1,28.0,27.6,26.7,26.3,23.5,20.1,17.8,14.9,14.4,11.2,11.7,9.9,11.1,11.0,10.9,8.6,8.4,9.0,10.4,9.4,7.0,3.9,1.4,0.2,0.1,0.7,1.2,2.6,3.8,3.8,2.3,1.4,0.6,6.0,7.0,6.6,4.0,2.1,2.9,2.9,3.4,2.7,1.3,-0.1,-0.8,-0.4,-0.6,0.1,1.0];\n    const fringe = [-9.3,-2.5,3.3,3.3,4.6,6.6,9.2,13.4,16.9,19.9,20.0,20.4,21.6,21.0,21.1,19.6,19.7,17.0,16.7,14.3,14.1,11.2,10.4,10.3,9.9,10.3,10.2,11.5,12.2,11.4,9.8,6.7,3.2,4.1,4.9,4.6,2.6,2.2,2.5,3.3,2.1,3.4,2.5,3.5,3.3,4.4,3.7,3.2,5.4,4.0,2.8,0.3,1.9,2.4,4.0,2.1,1.9,-0.1,4.4,4.3,3.2];\n    const lineOpts = (color, dash=[]) => ({\n      borderColor: color, backgroundColor: 'transparent',\n      borderWidth: 2, borderDash: dash,\n      pointRadius: 0, pointHoverRadius: 4, tension: 0.3\n    });\n    charts.chart4 = new Chart(document.getElementById('chart4'), {\n      type: 'line',\n      data: {\n        labels,\n        datasets: [\n          { label: 'Prime Central London', data: pcl,    ...lineOpts(MAGENTA) },\n          { label: 'Inner Prime',          data: inner,  ...lineOpts(TEAL) },\n          { label: 'Fringe',              data: fringe, ...lineOpts(SAND, [6,3]) }\n        ]\n      },\n      options: {\n        responsive: true,\n        maintainAspectRatio: false,\n        interaction: { mode: 'index', intersect: false },\n        plugins: {\n          legend: { display: false },\n          tooltip: { callbacks: { label: ctx => ` ${ctx.dataset.label}: ${ctx.parsed.y.toFixed(1)}%` } }\n        },\n        scales: {\n          x: {\n            grid: { display: false }, border: { display: false },\n            ticks: {\n              maxTicksLimit: 24, maxRotation: 45, minRotation: 45, font: { size: 10 },\n              callback(val, i) { return i % 3 === 0 ? this.getLabelForValue(val) : ''; }\n            }\n          },\n          y: { grid: { color: 'rgba(0,0,0,0.06)' }, border: { dash: [4,4] }, ticks: { callback: v => v + '%' } }\n        },\n        animation: false\n      },\n      plugins: [{\n        id: 'zeroLine',\n        afterDraw(chart) {\n          const { ctx, chartArea: { left, right }, scales: { y } } = chart;\n          const yZero = y.getPixelForValue(0);\n          ctx.save();\n          ctx.setLineDash([4, 4]);\n          ctx.strokeStyle = 'rgba(42,42,51,0.35)';\n          ctx.lineWidth = 1;\n          ctx.beginPath();\n          ctx.moveTo(left, yZero);\n          ctx.lineTo(right, yZero);\n          ctx.stroke();\n          ctx.restore();\n        }\n      }]\n    });\n  })();\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Prime London achieved prices fell 5.5% in April while transactions rose 2.1%. Rents slipped 1.0%. LonRes data on sales, super prime and lettings.<\/p>\n","protected":false},"author":3,"featured_media":12887,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[41],"tags":[68,163,62,61,72],"class_list":["post-12868","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-insight-and-data-reports","tag-estate-agents","tag-industry-shifts","tag-london-property-market","tag-london-residential-market","tag-pcl-housing-market","entry"],"acf":[],"_links":{"self":[{"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/posts\/12868","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/comments?post=12868"}],"version-history":[{"count":12,"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/posts\/12868\/revisions"}],"predecessor-version":[{"id":12885,"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/posts\/12868\/revisions\/12885"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/media\/12887"}],"wp:attachment":[{"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/media?parent=12868"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/categories?post=12868"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lonres.com\/public\/wp-json\/wp\/v2\/tags?post=12868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}