@charset "UTF-8";
/**
* @author Sarbodaya Kandel
*
* @copyright RDA Research 2024
**/
:root {
  --arrow-90deg-right: "↳" ;
  --dot-in-center-of-zero: "0" ;
  --arrow-thin-straight-right: "⟶" ;
  --error-color-primary: rgb(255, 0, 0) ;
  --highlighter-color-quad: rgb(68, 144, 196) ;
  --highlighter-color-hexa: #2692d4 ;
  --highlighter-color-penta: rgb(192, 0, 0) ;
  --highlighter-color-primary: #6ac3c1 ;
  --highlighter-color-tertiary: #f8f7f5 ;
  --highlighter-color-secondary: #cce7e1 ;
  --checkmark-default: "✓" ;
  --arrow-head-filled-body-dotted-right: "⋯⋯⋯⋯⋯▶⋯" ;
  --arrow-head-filled-body-dotted-right-sm: "⋯⋯⋯▶⋯" ;
}
.inline {
  display: inline;
}
.block {
  display: block;
}
.flex {
  display: flex;
}
.col-width {
  flex-basis: 50%;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.content-width,
.product-image {
  width: 370px;
}
.content-width-lg,
.product-image-lg {
  max-width: 500px;
}
.content-width-xl {
  max-width: 740px;
}
.product-image-xl {
  max-width: 550px;
}
.fancy-heading {
  color: var(--highlighter-color-quad);
}
.dot-in-center-of-zero::after {
  content: var(--dot-in-center-of-zero);
  font-size: 1.6rem;
  font-stretch: 20%;
}
.d-col {
  flex-flow: column;
}
.d-row {
  flex-flow: row wrap;
}
.d-row-nowrap {
  flex-flow: row nowrap;
}
.j-end {
  justify-content: flex-end;
}
.text-center {
  text-align: center;
}
.j-start,
.a-cross-start {
  justify-content: flex-start;
}
.j-between {
  justify-content: space-between;
}
.j-center {
  justify-content: center;
}
.a-cross-end {
  justify-content: end;
}
.a-main-center {
  align-items: center;
}
.a-main-baseline {
  align-items: baseline;
}
.a-main-end {
  align-items: flex-end;
}
.a-main-start {
  align-items: flex-start;
}
.product-description {
  margin: 0;
  font-size: 2rem;
  line-height: 1.2;
}
.product-feature-list,
ol.product-feature-list,
.product-feature-list-lg,
.product-feature-list-xl,
ol.product-feature-list-md {
  padding: 0;
  list-style-type: none;
}
.product-feature-list li,
ol.product-feature-list li,
.product-feature-list-lg li,
.product-feature-list-xl li,
ol.product-feature-list-md li {
  padding: 0.5rem;
  border-top: 1px solid #000000;
}
.about-page .about_size3 {
  color: var(--highlighter-color-hexa);
  font-size: 1.92rem;
}
.product-feature-list,
ol.product-feature-list {
  width: 275px;
}
ol.product-feature-list-md {
  max-width: 300px;
}
ol.product-feature-list, ol.product-feature-list-md {
  list-style-type: decimal;
  list-style-position: inside;
}
ol.product-feature-list li::marker, ol.product-feature-list-md li::marker {
  color: var(--highlighter-color-penta);
  font-weight: bold;
}
.product-feature-list-lg {
  max-width: 390px;
}
.product-feature-list-xl {
  max-width: 450px;
}
.product-url,
.product-feature-list li:last-child,
.product-feature-list-md li:last-child,
.product-feature-list-lg li:last-child,
.product-feature-list-xl li:last-child {
  border-bottom: 1px solid black;
}
.line-condensed {
  line-height: 0.96;
}
.line-condensed-sm {
  line-height: 1.2;
}
.product-feature-group {
  column-gap: 3rem;
}
.product-url {
  padding-left: 0.5rem;
  text-decoration: none;
}
.product-url::after {
  content: ">";
}
em {
  font-style: normal;
}
.end-note-lg {
  max-width: 450px;
}
#explorerUrl,
#quickAppendUrl,
#livingInsightsUrl {
  margin-bottom: 0.98rem;
}
#livingInsightsUrl {
  right: 0;
  bottom: -0.8rem;
  position: absolute;
}
#livingInsightsUrl::after {
  padding-left: 5.8rem;
}
#explorerUrl::after {
  padding-left: 3.6rem;
}
#quickAppendUrl::after {
  padding-left: 5.8rem;
}
.product-url-color {
  color: rgb(192, 0, 0);
}
.segmentation-url-wrap > .product-url {
  display: inline-block;
}
.segmentation-url-wrap > .product-url:not(:first-child) {
  margin-top: 1rem;
}
#geoSmartUrl::after {
  padding-left: 9rem;
}
#geoTribesUrl::after,
#geoSmartUrl.explorer-page-url::after {
  padding-left: 2rem;
}
#livingInsightsSection {
  position: relative;
}
.chart-wrap,
.profile-finder-wrap {
  border-radius: 1rem;
}
.profile-finder-wrap {
  padding: 1rem;
  background-color: var(--highlighter-color-secondary);
}
.homepage .profile-finder-wrap,
section > .col-width:last-child {
  margin-top: 9rem;
}
section > .col-width.margin-top-sm {
  margin-top: 2rem;
}
section > .col-width.margin-top-md {
  margin-top: 5rem;
}
.iso-selection-row {
  padding: 1rem 0;
}
.iso-wrap,
.chart-wrap,
.input-wrap [type=text] {
  background-color: var(--highlighter-color-tertiary);
}
.iso-wrap {
  padding: 0.5rem;
  font-size: 1rem;
  border-radius: 1rem;
}
.iso {
  opacity: 0.5;
}
.iso:hover, .iso.iso-selected {
  cursor: pointer;
  opacity: 1;
}
.iso.iso-selected {
  background: var(--highlighter-color-secondary);
  font-weight: bold;
}
.national-flag {
  height: auto;
  max-width: 80%;
}
.top-border {
  border-top: 1px solid var(--highlighter-color-primary);
}
.bottom-border {
  border-bottom: 1px solid var(--highlighter-color-primary);
}
.fancy-heading .primary-heading,
.product-container .primary-heading {
  font-size: clamp(30px, 40px + 10 * (100vw - 500px) / 1420, 55px);
}
.fancy-heading .secondary-heading,
.product-container .secondary-heading {
  font-size: clamp(24px, 28px + 4 * (100vw - 500px) / 1420, 35px);
}
figcaption .fancy-heading {
  font-size: 2.5rem;
}
.tooltip {
  font-size: 1.4rem;
  background: #000000;
  border-radius: 6px;
}
.profiler-tooltip {
  width: 1.8rem;
  height: 1.8rem;
  flex-shrink: 0;
}
.profiler-tooltip:hover {
  cursor: pointer;
}
.chart-wrap,
.profile-spinner-wrap,
.profile-error-message {
  height: 200px;
  position: relative;
}
.profile-spinner-wrap > .fa-spinner {
  color: var(--highlighter-color-primary);
  font-size: 5rem;
}
.error-message,
.profile-error-message {
  color: var(--error-color-primary);
  font-style: normal;
}
.profile-error-message {
  padding: 0 2rem;
  font-size: 2rem;
}
.rda_btn {
  width: max-content;
  font-size: 1.36rem;
}
.form-control {
  font-size: 1.6rem;
}
/**
 * blog section
 */
h2.entry-title a {
  font-size: 1.6rem;
}
.hidden {
  display: none;
}
.pipe-next::after {
  color: rgb(0, 0, 0);
  content: "|";
  padding: 0 1rem;
}
.living-insights-page #topImageHomePageAppendSegments-1 {
  left: 460px;
  position: absolute;
  max-width: 160px;
  margin-top: -45px;
}
.living-insights-page #topImageHomePageAppendSegments-bg {
  max-width: 650px;
  padding-right: 0;
}
.living-insights-page #circle5livingInsightPage,
.living-insights-page #circle4livingInsightPage {
  max-width: 80%;
}
.living-insights-page .privacy {
  padding-left: 3rem;
}
.living-insights-page .privacy p {
  max-width: 900px;
}
.living-insights-page .privacy ol {
  font-size: 1.44rem;
  max-width: 850px;
}
.living-insights-page .ThreeImagesSentencesInsightPage {
  font-size: 1.44rem;
}
.living-insights-page .text-center:not(.nameOfTheCountriesInTheHomePage) {
  min-height: 80px;
}
@media (width <= 991px) {
  .living-insights-page #downImage4livingInsightPage {
    display: none;
  }
}
@media (width <= 1240) {
  .geotribes-page .profile-finder-wrap, .intelligence-page .profile-finder-wrap {
    margin-right: 0.5rem;
  }
}
@media (width <= 768px) {
  .geotribes-page .profile-finder-wrap, .intelligence-page .profile-finder-wrap {
    margin: 0 auto;
    margin-top: 0.5rem;
  }
}
@media (width <= 991px) {
  .geosmart-page .instruction {
    visibility: hidden;
    margin-bottom: 1rem !important;
    padding-bottom: 0 !important;
  }
}
.intelligence-page a[href^="mailto:"],
.intelligence-page a[href^="tel:"] {
  color: inherit;
}
.intelligence-page a[href^="mailto:"]:hover,
.intelligence-page a[href^="tel:"]:hover {
  color: #555;
}
#banner_landing_wrap .primary-heading {
  font-size: clamp(35px, 50px + 40 * (100vw - 500px) / 1420, 90px);
  letter-spacing: -3px;
}
#banner_landing_wrap .primary-heading .banner-description {
  margin-bottom: 0.5rem;
}
#banner_landing_wrap .banner-description {
  font-size: clamp(22px, 30px + 5 * (100vw - 500px) / 1420, 40px);
  padding-top: 1.2rem;
  line-height: 0.96;
  letter-spacing: -1px;
}
#banner_landing_wrap.geotribes-page .banner-description, #banner_landing_wrap.intelligence-page .banner-description {
  font-size: clamp(21px, 21px + 6 * (100vw - 500px) / 1420, 27px);
}
#banner_landing_wrap .banner-url-wrap {
  width: 20rem;
  min-height: fit-content;
}
#banner_landing_wrap.explorer-page .banner-url-wrap {
  width: 24rem;
}
#banner_landing_wrap.consumer-data-page .banner-url-wrap {
  width: 26rem;
}
#banner_landing_wrap.about-page .primary-heading .title {
  flex-basis: max-content;
}
#banner_landing_wrap.about-page .primary-heading .banner-description {
  align-items: flex-end;
}
@media screen and (width <= 760px) {
  #banner_landing_wrap.about-page .primary-heading .banner-description {
    display: block;
    flex-direction: row;
  }
}
#banner_landing_wrap.geosmart-page .banner-url-wrap {
  width: 30rem;
}
#banner_landing_wrap.geosmart-page .primary-heading .title {
  flex-basis: max-content;
}
#banner_landing_wrap.geosmart-page .primary-heading .banner-description {
  align-items: flex-end;
}
@media screen and (width <= 800px) {
  #banner_landing_wrap.geosmart-page .primary-heading .banner-description {
    display: block;
    flex-direction: row;
  }
}
#banner_landing_wrap.geotribes-page .primary-heading .banner-description, #banner_landing_wrap.intelligence-page .primary-heading .banner-description {
  align-items: flex-end;
}
@media screen and (width <= 840px) {
  #banner_landing_wrap.geotribes-page .primary-heading .banner-description, #banner_landing_wrap.intelligence-page .primary-heading .banner-description {
    display: block;
    flex-direction: row;
  }
}
#banner_landing_wrap.living-insights-page .banner-url-wrap {
  width: 30rem;
}
#banner_landing_wrap.living-insights-page .primary-heading .banner-description {
  align-items: flex-end;
}
@media screen and (width <= 720px) {
  #banner_landing_wrap.living-insights-page .primary-heading .banner-description {
    display: block;
    flex-direction: row;
  }
}
#banner_landing_wrap .anchor {
  height: 3rem;
  display: flex;
  flex-flow: row nowrap;
  align-items: center;
  justify-content: space-evenly;
  text-decoration: none;
}
#banner_landing_wrap .anchor-label {
  font-size: 1.3rem;
}
#banner_landing_wrap .anchor-button {
  background: #000000;
}
#banner_landing_wrap .anchor-standard span {
  align-self: flex-end;
}
#banner_landing_wrap .anchor-button,
#banner_landing_wrap .anchor-button:hover {
  color: #ffffff;
}
#banner_landing_wrap .anchor-button:hover,
#banner_landing_wrap .anchor-standard:hover {
  cursor: pointer;
  text-decoration: none;
}
.profile-finder-wrap {
  width: 430px;
}
.profile-finder-wrap .primary-heading {
  display: inline-block;
  font-size: clamp(20px, 25px + 3 * (100vw - 500px) / 1420, 30px);
  margin-bottom: 1rem;
}
.profile-finder-wrap .secondary-heading {
  font-size: clamp(14px, 18px + 3 * (100vw - 500px) / 1420, 22px);
}
.profile-finder-wrap .frm-postcode-profile .diy-invitation {
  font-size: 1.6rem;
}
.profile-finder-wrap .frm-postcode-profile .item-group {
  --col-gap: 2% ;
  --col-left-width: 40% ;
  --col-right-width: calc(
  	100% - var(--col-left-width) - var(--col-gap)
  ) ;
  column-gap: var(--col-gap);
}
.profile-finder-wrap .frm-postcode-profile .item-group .col-left {
  width: var(--col-left-width);
}
.profile-finder-wrap .frm-postcode-profile .item-group .col-right {
  width: var(--col-right-width);
}
.profile-finder-wrap .frm-postcode-profile .item-group .col-right.input-wrap {
  padding: 1rem 0;
}
.profile-finder-wrap .frm-postcode-profile .item-group .col-right.input-wrap button,
.profile-finder-wrap .frm-postcode-profile .item-group .col-right.input-wrap input[type=text] {
  border-radius: 1rem;
}
.profile-finder-wrap .frm-postcode-profile .item-group .col-right.input-wrap button:focus,
.profile-finder-wrap .frm-postcode-profile .item-group .col-right.input-wrap input[type=text]:focus {
  outline: none !important;
}
.profile-finder-wrap .frm-postcode-profile .item-group .col-right.input-wrap input[type=text] {
  width: 60%;
  height: 4rem;
  border: 2px solid var(--highlighter-color-penta);
  padding: 0 1rem;
  background: var(--highlighter-color-tertiary);
}
.profile-finder-wrap .frm-postcode-profile .item-group .col-right.input-wrap input[type=text]:focus {
  background: #ffffff;
}
.profile-finder-wrap .frm-postcode-profile .item-group .col-right.input-wrap button {
  color: #ffffff;
  width: 30%;
  border: 0;
  padding: 0.3rem 0;
  outline: none;
  font-size: 1.4rem;
  background: var(--highlighter-color-primary);
  border-radius: 0.5rem;
  letter-spacing: 0.2rem;
}
.counter {
  display: inline-block;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.counter::before {
  content: var(--arrow-90deg-right);
}
.arrow-long-thin-right::after {
  content: var(--arrow-thin-straight-right);
}
.arrow-thin-90deg-right::after {
  content: var(--arrow-90deg-right);
}
.arrow-thin-90deg-right-front::before {
  content: var(--arrow-90deg-right);
}
.segmentation-url-wrap > a {
  max-width: fit-content;
}
#home-banner-main,
#banner_landing_wrap {
  display: flex;
  flex-direction: column;
  margin-block-end: 2rem;
  margin-block-start: 9rem;
}
#home-banner-main {
  margin-block-end: 0;
}
.home-banner-wrap {
  position: relative;
}
.home-banner-wrap .cta-button-wrap {
  display: flex;
  padding-block-end: 2rem;
  justify-content: center;
}
.home-banner-wrap .cta-button-wrap .cta-button {
  color: white;
  border: 1px solid black;
  background: black;
  font-weight: bold;
  font-size: 2rem;
  border-radius: 0.4rem;
  padding-block: 0.8rem;
  padding-inline: 2.2rem;
}
.home-banner-wrap .cta-button-wrap .cta-button:hover {
  color: black;
  transition: background-color 1s ease 0 color 0.2s ease 0;
  background: white;
}
@media screen and (max-width: 768px) {
  #home-banner-overlay-lg {
    display: none;
  }
}
@media screen and (min-width: 769px) {
  #home-banner-overlay-sm {
    display: none;
  }
}
#home-banner-overlay-sm > .overlay-frame,
#home-banner-overlay-lg > .overlay-frame {
  top: 0;
  left: 0;
  width: 100%;
  height: auto;
  position: absolute;
}
.living-insights-page .secondary-heading {
  font-size: clamp(18px, 27px + 5 * (100vw - 500px) / 1420, 27px);
}
@media screen and (width <= 1225px) {
  .product-container {
    padding-left: 1vw;
    padding-right: 1vw;
  }
  #banner_landing_wrap .primary-heading,
  #banner_landing_wrap .banner-description {
    padding-left: 1vw;
    padding-right: 1vw;
  }
  #livingInsightsUrl {
    right: 1vw;
  }
}
@media screen and (width <= 1050px) {
  .explorer-page > .d-row {
    align-items: center;
    flex-direction: column;
  }
  .explorer-page .behavioural-data {
    margin-top: 0 !important;
    padding-top: 0 !important;
  }
  .explorer-page .expert-footstep {
    margin-top: 0 !important;
  }
  .explorer-page .expert-footstep figcaption .fancy-heading {
    align-self: center;
  }
  .explorer-page h1.fancy-heading {
    text-align: center;
  }
  .explorer-page #configListSecondary li:first-child {
    border-top: none;
  }
  .explorer-page #configListPrimary {
    margin-bottom: 0;
  }
  .explorer-page .content-width-xl {
    max-width: 52%;
  }
  .explorer-page .explorer-solution,
  .explorer-page .customer-knowledge {
    max-width: 500px;
  }
  .explorer-page .explorer-solution .fancy-heading,
  .explorer-page .customer-knowledge .fancy-heading {
    align-self: flex-start;
  }
  .explorer-page .content-width-lg {
    width: 500px;
  }
  .explorer-page .product-feature-list-xl {
    max-width: 500px;
  }
  .explorer-page .explorer-user-fig,
  .explorer-page .custom-audience-fig {
    padding-top: 3rem;
  }
}
@media screen and (width <= 991px) {
  #banner_landing_wrap {
    margin-top: 9rem;
  }
}
@media screen and (width <= 840px) {
  .product-container .col-width:last-child {
    margin-top: 3rem;
  }
  #explorerSolution .margin-top-md {
    margin-top: 0;
  }
  .product-container:not(#segmentationSection) {
    flex-wrap: wrap;
  }
  .product-container:not(#segmentationSection) .col-width {
    flex-basis: 100%;
  }
  .product-container:not(#segmentationSection) .content-width {
    width: 100%;
  }
  .product-container:not(#segmentationSection) .content-width .product-url {
    max-width: 65%;
    flex-wrap: wrap;
  }
  #segmentationSection .col-width .content-width {
    width: 95%;
  }
  .quotation-wrap {
    justify-content: center;
  }
  .expert-footstep > img {
    padding-top: 0 !important;
  }
  .explorer-page.custom-audience .col-width {
    margin-top: 0;
  }
  .explorer-page .col-width.custom-solution,
  .explorer-page .col-width.geotribes-explorer {
    margin-top: 0;
  }
}
@media screen and (width <= 768px) {
  #livingInsightsUrl {
    order: 4;
    bottom: 0;
  }
  #livingInsightsSection .feature-list {
    order: 3;
  }
  #livingInsightsSection .quotation-wrap {
    order: 2;
    margin-bottom: 3rem;
  }
  #segmentationSection {
    flex-wrap: wrap;
  }
  .profile-finder-wrap {
    margin-top: 5rem;
  }
  #segmentationSection .segmentation-url-wrap {
    margin-top: 1rem !important;
  }
  #segmentationSection .col-width {
    flex-basis: 100%;
  }
  .segmentation-url-wrap {
    display: flex;
    flex-direction: column;
  }
  .quotation-wrap {
    padding-top: 0 !important;
  }
}
@media screen and (width <= 740px) {
  #banner_landing_wrap.consumer-data-page .primary-heading {
    align-items: flex-start;
    flex-direction: column;
  }
  #banner_landing_wrap.consumer-data-page .primary-heading .banner-description {
    width: 100%;
    padding-left: 0;
  }
}
@media screen and (width <= 500px) {
  .explorer-page .product-image-lg,
  .explorer-page .product-image-xl,
  .explorer-page .explorer-solution,
  .explorer-page .product-feature-list-xl {
    max-width: 100%;
  }
  .explorer-page .product-feature-list-md {
    max-width: 70%;
  }
  .explorer-page .product-feature-list-lg {
    max-width: 80%;
  }
  .explorer-page .explorer-solution .fancy-heading {
    align-self: flex-start;
  }
  .explorer-page .custom-solution h2 span,
  .explorer-page .custom-solution h2 span.fancy-heading {
    text-align: left;
  }
  .explorer-page .content-width-lg {
    width: unset;
    max-width: 100%;
  }
}
/* ---------- geoTribes Segments — page-scoped hero ----------
   Mirrors the .intelligence-page / .living-insights-page hero rules; resizes the
   KEPT-LIVE hero to the segments mockup ramp (px = mockup_rem × 16). Scoped to
   .geotribes-page (used by segments.php only) so no other page is touched. This
   replaces two dead duplicate banner-description{line-height:1.15} blocks that the
   shared #banner_landing_wrap.qa-restyle rule (1.18) already overrode.
   See [[project_intelligence_fontscale]] — by formula, NOT fontscale.py. */
/* hero heading — mockup .site-hero h1 = clamp(2.1rem,5.6vw,3.9rem) @16px */
#banner_landing_wrap.geotribes-page .primary-heading {
  font-size: clamp(33.6px, 5.6vw, 62.4px);
  letter-spacing: -0.015em;
  font-weight: 300;
  line-height: 1;
}
/* hero eyebrow ("1/") — mockup .eyebrow = .95rem @16px */
#banner_landing_wrap.geotribes-page .counter {
  display: block;
  padding: 0;
  margin-bottom: 16px;
  color: var(--ink);
  font-size: 15.2px;
  font-weight: 400;
  letter-spacing: 0.04em;
}
#banner_landing_wrap.geotribes-page .counter::before {
  font-weight: 400;
}
#banner_landing_wrap.geotribes-page .counter .dot-in-center-of-zero::after {
  font-size: inherit;
}
/* hero sub ("Personas that work everywhere.") — mockup .sub = clamp(1.05rem,2.4vw,1.7rem)
   @16px. The geotribes hero carries .banner-description ONLY on this h1 sub (the
   standalone tagline <p> uses .hero-tag), so no .primary-heading scoping needed. */
#banner_landing_wrap.geotribes-page .banner-description {
  color: var(--ink);
  font-size: clamp(16.8px, 2.4vw, 27.2px);
  font-weight: 300;
  line-height: 1.18;
  letter-spacing: normal;
  text-align: right;
  padding-bottom: 0.08em;
}
/* hero "available for" flag row — mockup .avail / .lab / .flag (px = rem×16).
   The row is inlined into segments.php (was the shared part/flags.php) so the bare
   <img> carries NO .flags/.flagOpacity class and escapes their global dimming
   (width:35px / opacity:.5!important) for free; the only collision is the reused
   .flag SPAN class (global border:1px white + padding), reset below. Scoped to the
   hero so explorer's copy of the partial is untouched. */
#banner_landing_wrap.geotribes-page .avail {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin: 20px 0 0;
}
#banner_landing_wrap.geotribes-page .avail .lab {
  font-size: 12.48px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}
#banner_landing_wrap.geotribes-page .avail .flag {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 13.76px;
  color: var(--ink);
  border: 0;
  padding: 0;
}
#banner_landing_wrap.geotribes-page .avail .flag img {
  height: 15px;
  width: auto;
  border: 1px solid var(--line);
}
/* hero "available for" flag row — Explorer (clone of the geotribes/segments .avail;
   inlined into explorer.php, bare <img> escapes the global .flags/.flagOpacity dimming;
   the reused .flag SPAN class's global border/padding is reset). px = mockup_rem×16. */
#banner_landing_wrap.explorer-page .avail {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin: 20px 0 0;
}
#banner_landing_wrap.explorer-page .avail .lab {
  font-size: 12.48px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}
#banner_landing_wrap.explorer-page .avail .flag {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 13.76px;
  color: var(--ink);
  border: 0;
  padding: 0;
}
#banner_landing_wrap.explorer-page .avail .flag img {
  height: 15px;
  width: auto;
  border: 1px solid var(--line);
}
/* ---------- geoSmart Segments — page-scoped hero ----------
   Mirrors the .geotribes-page / .intelligence-page / .living-insights-page hero
   rules; resizes the KEPT-LIVE geoSmart hero to its mockup ramp (px = mockup_rem × 16),
   replacing the old big shared #banner_landing_wrap type (h1 clamp 35–90px / -3px,
   .banner-description 22–40px / line-height .96) that geoSmart still fell back on.
   No .avail row (the geoSmart hero carries no flags). Scoped to .geosmart-page so no
   other page is touched. See [[project_intelligence_fontscale]] — by formula. */
/* hero heading — mockup .site-hero h1 = clamp(2.3rem,6.2vw,4.3rem) @16px */
#banner_landing_wrap.geosmart-page .primary-heading {
  font-size: clamp(36.8px, 6.2vw, 68.8px);
  letter-spacing: -0.015em;
  font-weight: 300;
  line-height: 1;
}
/* hero eyebrow ("1/") — mockup .eyebrow = .95rem @16px */
#banner_landing_wrap.geosmart-page .counter {
  display: block;
  padding: 0;
  margin-bottom: 16px;
  color: var(--ink);
  font-size: 15.2px;
  font-weight: 400;
  letter-spacing: 0.04em;
}
#banner_landing_wrap.geosmart-page .counter::before {
  font-weight: 400;
}
#banner_landing_wrap.geosmart-page .counter .dot-in-center-of-zero::after {
  font-size: inherit;
}
/* hero sub ("Proven & powerful geodemographics.") — mockup .sub =
   clamp(1.05rem,2.4vw,1.7rem) @16px. Carried by the h1 sub spans only. */
#banner_landing_wrap.geosmart-page .banner-description {
  color: var(--ink);
  font-size: clamp(16.8px, 2.4vw, 27.2px);
  font-weight: 300;
  line-height: 1.18;
  letter-spacing: normal;
  text-align: right;
  padding-bottom: 0.08em;
}
/* ---------- Explorer (explorer.php) — page-scoped hero ----------
   Clone of the geoSmart hero ramp (the live Explorer hero is the same DOM:
   .primary-heading + .counter eyebrow + right-aligned .banner-description sub).
   px = mockup_rem × 16. See [[project_intelligence_fontscale]]. */
#banner_landing_wrap.explorer-page .primary-heading {
  font-size: clamp(36.8px, 6.2vw, 68.8px);
  letter-spacing: -0.015em;
  font-weight: 300;
  line-height: 1;
}
#banner_landing_wrap.explorer-page .counter {
  display: block;
  padding: 0;
  margin-bottom: 16px;
  color: var(--ink);
  font-size: 15.2px;
  font-weight: 400;
  letter-spacing: 0.04em;
}
#banner_landing_wrap.explorer-page .counter::before {
  font-weight: 400;
}
#banner_landing_wrap.explorer-page .counter .dot-in-center-of-zero::after {
  font-size: inherit;
}
/* hero sub ("Plan like an expert.") — right-aligned tagline carried by the h1 sub span */
#banner_landing_wrap.explorer-page .banner-description {
  color: var(--ink);
  font-size: clamp(16.8px, 2.4vw, 27.2px);
  font-weight: 300;
  line-height: 1.18;
  letter-spacing: normal;
  text-align: right;
  padding-bottom: 0.08em;
}
/* page-wide line-height baseline — the mockup sets line-height:1.6 on <body>
   (cascades to the whole page). Two things fight that live: (1) the base is
   Bootstrap's body 1.5, and (2) a global p{line-height:1.3} (_global.scss) sets
   1.3 DIRECTLY on every paragraph — and a direct value beats an inherited one,
   so body copy (blue .section-lead, .section-note, .dcard/.panel p) was stuck at
   1.3 even though the section/wrapper say 1.6. So mirror the mockup's 1.6 on the
   intelligence wrappers (covers the hero eyebrow + any non-paragraph text) AND
   re-assert it directly on paragraphs to beat the global p rule. Every explicit
   override still wins — hero h1=1, sub=1.18, h2/.dcard h3=1.25, .checks li=1.5,
   .steps li=1.55. Scoped to .intelligence-page (NOT shared .qa-restyle) so
   segments / living insights stay untouched by this task. */
.intelligence-page.qa-restyle,
.intelligence-page.qa-restyle p {
  line-height: 1.6;
}
/* inline body hyperlinks — mockup styles the generic body <a> red
   (a{color:var(--brand-dark)}); the two on this page are "Quick Append"
   (.dcard p) and "privacy policy" (form .micro). Live they render $blue via
   the global a{color:$blue} (_global.scss) — a DIRECT rule that beats the
   inherited .dcard p / .micro muted colour, same trap as the line-height.
   Re-assert the mockup red, scoped to intelligence. The more-specific mockup
   exceptions already survive: .dcard h3 a (inherit) and .call-big a (ink,
   carries the tel link) are 0,2,2 > this 0,2,1; .rda_btn keeps #fff via
   !important. Underline is the Bootstrap-5 default (mockup keeps it too). */
.intelligence-page.qa-restyle a {
  color: var(--brand-dark);
}
/* hero heading — match the mockup (.site-hero h1 = clamp(1.995rem, 5.32vw, 3.705rem))
   at the mockup-raw ramp (F = 1.0, px = mockup_rem × 16): caps at 59.28px. Overrides the
   shared #banner_landing_wrap .primary-heading clamp (35–90px → ~70px @1200px), which
   is far larger than the mockup. The heading text (.title) inherits this; the tagline
   (.banner-description) keeps its own size. See [[project_intelligence_fontscale]] —
   computed by formula, NOT fontscale.py. */
#banner_landing_wrap.intelligence-page .primary-heading {
  font-size: clamp(31.92px, 5.32vw, 59.28px);
  letter-spacing: -0.015em; /* mockup .site-hero h1 = -.015em (was -3px) */
  font-weight: 300; /* mockup .site-hero h1 = 300 (Light); now the real 'Sofia Pro' 300 cut = SofiaProLightAz (Light) */
  line-height: 1; /* mockup .site-hero h1 = line-height:1 (tight); base sets none → inherits Bootstrap ~1.2 */
}
/* hero eyebrow (the "2/" counter) — inherit the mockup .eyebrow look & feel:
   small, lightly tracked ink text sitting on its own line with a 16px gap to
   the heading (replacing the shared counter's 1rem padding). The signature
   dot-in-center-of-zero "0" is sized down to sit inline with the rest (was the
   standalone 1.6rem glyph). See [[project_intelligence_fontscale]]. */
#banner_landing_wrap.intelligence-page .counter {
  display: block;
  padding: 0;
  margin-bottom: 16px;
  color: var(--ink);
  font-size: 14.43px; /* mockup .eyebrow = .902rem @16px */
  font-weight: 400; /* mockup .eyebrow = 400 (real Regular now wired; was 700 to fake emphasis the mockup lacks) */
  letter-spacing: 0.04em;
  /* whole eyebrow is Regular 400 now — mockup .eyebrow is not bold; the ↳ arrow matches */
}
#banner_landing_wrap.intelligence-page .counter::before {
  font-weight: 400;
}
#banner_landing_wrap.intelligence-page .counter .dot-in-center-of-zero::after {
  font-size: inherit;
}
/* hero sub-heading (the "Simulate buyer decisions…" tagline) — inherit the
   mockup .hero-head .sub: light, ink, right-aligned, line-height 1.18, at the
   mockup-raw ramp (F = 1.0). Intelligence-only override of the shared banner-description
   font-size (kept for geotribes) and the base -1px letter-spacing. The two
   .content lines inherit it. See [[project_intelligence_fontscale]]. */
#banner_landing_wrap.intelligence-page .banner-description {
  color: var(--ink);
  font-size: clamp(15.95px, 2.28vw, 25.84px); /* mockup .sub = clamp(.997rem,2.28vw,1.615rem) @16px */
  font-weight: 300; /* mockup .sub is light */
  line-height: 1.18;
  letter-spacing: normal; /* base rule sets -1px; mockup .sub has none */
  text-align: right;
  padding-bottom: 0.08em;
}
/* ---------- Living Insights — page-scoped hero + body-link overrides ----------
   The hero is KEPT LIVE (copy unchanged); these only resize it to the LI mockup
   ramp (px = mockup_rem × 16) and recolour body links red. Mirrors the
   .intelligence-page hero rules above; scoped to .living-insights-page so the
   six other rolled-out pages keep their own hero sizes / blue links. */
/* inline body hyperlinks — mockup body <a> is red (twin of @1346). Page-scoped:
   the other rolled-out pages must stay blue. .dcard h3 a / .call-big a stay
   more-specific (0,2,2 > 0,2,1) so segment links + the tel link survive. */
.living-insights-page.qa-restyle a {
  color: var(--brand-dark);
}
/* inline body hyperlinks — segments mockup body <a> is red (twin of the LI rule
   above). Page-scoped so the other rolled-out pages keep blue links; the shared
   .dcard h3 a (inherit) and .call-big a (ink) stay more-specific and survive. */
.geotribes-page.qa-restyle a {
  color: var(--brand-dark);
}
/* inline body hyperlinks — About mockup body <a> is red (twin of the LI/segments
   rules above). Page-scoped so the other rolled-out pages keep blue links; the
   shared .dcard h3 a (inherit) and .call-big a (ink) stay more-specific (0,2,2 /
   0,2,1 > 0,2,0) so the service-card links and tel link survive. */
.about-page.qa-restyle a {
  color: var(--brand-dark);
}
/* About has FOUR service cards (Intelligence, Quick Append, Living Insights,
   Explorer) where the shared .card-grid is 3-col (@2173). Scoped 4-col override
   (0,3,0) out-specifies the shared rule AND the shared @980 1fr collapse, so the
   responsive steps must be re-declared here: 4 → 2 → 1. */
.about-page.qa-restyle .card-grid {
  grid-template-columns: repeat(4, 1fr);
}
@media (width <= 980px) {
  .about-page.qa-restyle .card-grid {
    grid-template-columns: 1fr 1fr;
  }
}
@media (width <= 620px) {
  .about-page.qa-restyle .card-grid {
    grid-template-columns: 1fr;
  }
}
/* use Sofia Pro's real weight cuts only — never let the browser synthesise (faux)
   bold. All five cuts (300–700) are wired in _header, so every weight on the page
   maps to a real face; this guarantees the font-specific bold is used even if a
   weight is requested that the browser would otherwise fake. Set on
   the root (html) so it applies to every page. Globalised as font-synthesis-WEIGHT
   only: the site wires no italic @font-face, so <em>/<i> text on other pages relies
   on faux-italic — disabling weight synthesis alone kills faux-bold everywhere while
   leaving that faux-italic intact. */
html {
  font-synthesis-weight: none;
  /* grayscale antialiasing — render text the way the design mockups do; removes the
     subpixel colour-fringing that makes edges read "much sharper" than the mockup.
     Inherited from the root → every page. -webkit-/-moz-osx- are Mac/WebKit-only
     (Windows/Firefox-on-Windows ignore them and keep their native rendering). */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* the ✓ tick (U+2713) is not in Sofia Pro, so it renders from a fallback font with
   no bold cut; the global font-synthesis-weight:none above left it thin. Re-allow
   weight synthesis on the tick pseudo-elements only so they faux-bold as in the
   mockup — real text still uses real cuts. */
.qa-restyle .flist li::before,
.qa-restyle .checks li::before {
  font-synthesis-weight: auto;
}
/* secondary / outline CTAs (mockup .btn.btn-outline) — page-scoped & self-contained:
   the shared .qa-restyle layer ships only the solid .rda_btn, and a bare .btn-outline
   does not collide with Bootstrap's .btn-outline-* variants. Compound
   .living-insights-page.qa-restyle prefix (0,3,0) out-specifies the red body-link rule
   above (0,2,1) so the label stays ink, not brand-dark. Regular size by default
   (hero + Talk-to-us "Download Factsheet"); .btn-outline--sm is the small variant
   (mockup .btn-sm) for the privacy CTAs above Talk to us. Home Blog "See more"
   wears it too (its wrapper carries .qa-restyle for the tokens). */
#rdanews_wrap .btn-outline,
.living-insights-page.qa-restyle .btn-outline,
.geotribes-page.qa-restyle .btn-outline,
.about-page.qa-restyle .btn-outline,
.consumer-data-page.qa-restyle .btn-outline,
.geosmart-page.qa-restyle .btn-outline,
.explorer-page.qa-restyle .btn-outline {
  display: inline-block;
  padding: 12px 24px;
  border: 1.5px solid var(--line);
  border-radius: 4px;
  background: #fff;
  color: var(--ink);
  font-size: 15.52px; /* mockup .btn = .97rem @16px */
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
}
#rdanews_wrap .btn-outline:hover,
.living-insights-page.qa-restyle .btn-outline:hover,
.geotribes-page.qa-restyle .btn-outline:hover,
.about-page.qa-restyle .btn-outline:hover,
.consumer-data-page.qa-restyle .btn-outline:hover,
.geosmart-page.qa-restyle .btn-outline:hover,
.explorer-page.qa-restyle .btn-outline:hover {
  border-color: var(--ink);
  color: var(--ink);
}
.living-insights-page.qa-restyle .btn-outline--sm,
.about-page.qa-restyle .btn-outline--sm,
.consumer-data-page.qa-restyle .btn-outline--sm,
.geosmart-page.qa-restyle .btn-outline--sm,
.explorer-page.qa-restyle .btn-outline--sm {
  padding: 8px 16px;
  font-size: 14.4px; /* mockup .btn-sm = .9rem @16px */
}
/* hero heading — LI mockup .site-hero h1 = clamp(2.3rem,6.2vw,4.3rem) @16px */
#banner_landing_wrap.living-insights-page .primary-heading {
  font-size: clamp(36.8px, 6.2vw, 68.8px);
  letter-spacing: -0.015em;
  font-weight: 300;
  line-height: 1;
}
/* hero eyebrow ("4/") — LI mockup .eyebrow = .95rem @16px */
#banner_landing_wrap.living-insights-page .counter {
  display: block;
  padding: 0;
  margin-bottom: 16px;
  color: var(--ink);
  font-size: 15.2px;
  font-weight: 400;
  letter-spacing: 0.04em;
}
#banner_landing_wrap.living-insights-page .counter::before {
  font-weight: 400;
}
#banner_landing_wrap.living-insights-page .counter .dot-in-center-of-zero::after {
  font-size: inherit;
}
/* hero sub ("Humanise corporate data.") — LI mockup .sub = clamp(1.05rem,2.4vw,1.7rem)
   @16px. Scoped to .primary-heading so it hits ONLY the h1 sub: the live LI hero
   reuses .banner-description on a second, standalone tagline <p> below the image,
   which must keep its live size/left-align (the hero is kept-as-live). */
#banner_landing_wrap.living-insights-page .primary-heading .banner-description {
  color: var(--ink);
  font-size: clamp(16.8px, 2.4vw, 27.2px);
  font-weight: 300;
  line-height: 1.18;
  letter-spacing: normal;
  text-align: right;
  padding-bottom: 0.08em;
}
/* About hero ramp — clone of the LI hero above (the about mockup hero shares the
   same scale: .site-hero h1 = clamp(2.3rem,6.2vw,4.3rem), weight 300). Without
   this, About's h1 fell through to the legacy #banner_landing_wrap .primary-heading
   (clamp 35→90px, -3px tracking, default weight) — visibly bigger and heavier than
   the mockup and the sibling restyled heroes. The hero carries only the "About Us"
   title (the right-aligned .banner-description tagline was removed to match the
   mockup) plus the .hero-tag positioning line below the banner image. */
#banner_landing_wrap.about-page .primary-heading {
  font-size: clamp(36.8px, 6.2vw, 68.8px);
  letter-spacing: -0.015em;
  font-weight: 300;
  line-height: 1;
}
#banner_landing_wrap.about-page .counter {
  display: block;
  padding: 0;
  margin-bottom: 16px;
  color: var(--ink);
  font-size: 15.2px;
  font-weight: 400;
  letter-spacing: 0.04em;
}
#banner_landing_wrap.about-page .counter::before {
  font-weight: 400;
}
#banner_landing_wrap.about-page .counter .dot-in-center-of-zero::after {
  font-size: inherit;
}
/* Human Insights Data hero ramp — clone of the About / LI hero blocks (the
   human-insights-data mockup hero shares the same scale: .site-hero h1 =
   clamp(2.3rem,6.2vw,4.3rem), weight 300; .eyebrow = .95rem, weight 400).
   Without this, consumer-data's h1 + counter fell through to the legacy
   #banner_landing_wrap .primary-heading (clamp 35→90px, -3px tracking, default
   weight) — visibly bigger/heavier than the mockup and the sibling restyled
   heroes. The hero is kept-as-live (the standalone .banner-description tagline
   below the image isn't in the mockup, left untouched). */
#banner_landing_wrap.consumer-data-page .primary-heading {
  font-size: clamp(36.8px, 6.2vw, 68.8px);
  letter-spacing: -0.015em;
  font-weight: 300;
  line-height: 1;
}
/* centre the hero→first-section divider: the body section gives 56px above the
   heading (padding-top), so match the hero's bottom gap to 56px (base #banner
   is 20px) — divider sits vertically midway. ID+class (1,1,0) beats base ID. */
#banner_landing_wrap.consumer-data-page {
  margin-bottom: 56px;
}
#banner_landing_wrap.consumer-data-page .counter {
  display: block;
  padding: 0;
  margin-bottom: 16px;
  color: var(--ink);
  font-size: 15.2px;
  font-weight: 400;
  letter-spacing: 0.04em;
}
#banner_landing_wrap.consumer-data-page .counter::before {
  font-weight: 400;
}
#banner_landing_wrap.consumer-data-page .counter .dot-in-center-of-zero::after {
  font-size: inherit;
}
/* Living Insights mockup type ramp — the shared .qa-restyle sizes derive from the
   Intelligence mockup and run ~5% smaller than the LI mockup for the inherited
   components; re-assert the LI-mockup px (rem×16, body literal 16.5px) page-scoped
   so LI honours its own mockup precisely. The LI-specific components (.chan-*,
   .flist, .subhead, .micro, hero, .btn-outline) already carry LI-mockup px → reused. */
.living-insights-page.qa-restyle { /* mockup body = 16.5px */
  /* mockup h2 = 1.85rem */
  /* mockup .lead = 1.03rem */
  /* mockup .what-list li = .96rem */
  /* mockup .dcard h3 = 1.05rem */
  /* mockup .dcard p = .92rem (also drives .chan-sub/.chan-lab, exactly as the mockup cascade does) */
  /* mockup .chan-head h3 = 1.18rem — listed after .dcard h3 so channel titles win source-order */
  /* mockup .checks li = .93rem */
  /* mockup .call-big = 1.5rem */
  /* mockup .btn = .97rem (Book a demo, Message us) */
}
.living-insights-page.qa-restyle section {
  font-size: 16.5px;
}
.living-insights-page.qa-restyle .secondary-heading {
  font-size: 29.6px;
}
.living-insights-page.qa-restyle .section-lead {
  font-size: 16.48px;
}
.living-insights-page.qa-restyle .what-list li {
  font-size: 15.36px;
}
.living-insights-page.qa-restyle .dcard h3 {
  font-size: 16.8px;
}
.living-insights-page.qa-restyle .dcard p {
  font-size: 14.72px;
}
.living-insights-page.qa-restyle .chan-head h3 {
  font-size: 18.88px;
}
.living-insights-page.qa-restyle .checks li {
  font-size: 14.88px;
}
.living-insights-page.qa-restyle .call-big {
  font-size: 24px;
}
.living-insights-page.qa-restyle .rda_btn {
  font-size: 15.52px;
}
.living-insights-page.qa-restyle .form { /* mockup .form label = .85rem */
  /* mockup .form input = .95rem */
  /* mockup .micro = .83rem */
}
.living-insights-page.qa-restyle .form .field-label label:not(.error) {
  font-size: 13.6px;
}
.living-insights-page.qa-restyle .form input, .living-insights-page.qa-restyle .form textarea {
  font-size: 15.2px;
}
.living-insights-page.qa-restyle .form .micro {
  font-size: 13.28px;
}
/* geoTribes Segments mockup type ramp — clone of the Living Insights ramp above
   (both mockups share one px scale; px = mockup_rem × 16, body 16.5px). Page-scoped
   to .geotribes-page (used by segments.php only) so segments honours its mockup
   precisely without touching the shared layer or the other rolled-out pages.
   See [[project_intelligence_fontscale]] — by formula, NOT fontscale.py. */
.geotribes-page.qa-restyle { /* mockup body = 16.5px */
  /* mockup h2 = 1.85rem */
  /* Postcode Profiler form's "Top geoTribes Segments" heading (matches homepage) */
  /* mockup .lead = 1.03rem */
  /* mockup .what-list li = .96rem */
  /* mockup .dcard h3 = 1.05rem */
  /* mockup .dcard p = .92rem */
  /* mockup .checks li = .93rem */
  /* mockup .call-big = 1.5rem */
  /* mockup .btn = .97rem */
  /* mockup .micro = .83rem */
}
.geotribes-page.qa-restyle section {
  font-size: 16.5px;
}
.geotribes-page.qa-restyle .secondary-heading {
  font-size: 29.6px;
}
.geotribes-page.qa-restyle .profile-finder-wrap .secondary-heading {
  font-size: 16px;
  white-space: nowrap;
}
.geotribes-page.qa-restyle .section-lead {
  font-size: 16.48px;
}
.geotribes-page.qa-restyle .what-list li {
  font-size: 15.36px;
}
.geotribes-page.qa-restyle .dcard h3 {
  font-size: 16.8px;
}
.geotribes-page.qa-restyle .dcard p {
  font-size: 14.72px;
}
.geotribes-page.qa-restyle .checks li {
  font-size: 14.88px;
}
.geotribes-page.qa-restyle .call-big {
  font-size: 24px;
}
.geotribes-page.qa-restyle .rda_btn {
  font-size: 15.52px;
}
.geotribes-page.qa-restyle .micro {
  font-size: 13.28px;
}
.geotribes-page.qa-restyle .form { /* mockup .form label = .85rem */
  /* mockup .form input = .95rem */
  /* mockup .micro = .83rem */
}
.geotribes-page.qa-restyle .form .field-label label:not(.error) {
  font-size: 13.6px;
}
.geotribes-page.qa-restyle .form input, .geotribes-page.qa-restyle .form textarea {
  font-size: 15.2px;
}
.geotribes-page.qa-restyle .form .micro {
  font-size: 13.28px;
}
/* About mockup type ramp — clone of the Living Insights / segments ramps above
   (the about-restyled1200 mockup shares the same 16.5px-body scale; px = mockup_rem
   × 16). Page-scoped to .about-page so About honours its mockup precisely. WITHOUT
   this block About inherited the shared .qa-restyle base, which is Intelligence-
   derived and runs ~5% small (section 15.675px, h2 28.13px) — leaving About visibly
   smaller than its mockup and than the sibling restyled pages beside it. The .form
   sub-block must be re-asserted too: the shared form block (the .intelligence-page,
   .living-insights-page, .geotribes-page, .about-page group) defaults to the smaller
   Intelligence sizes, so without this the form stayed small while the body jumped.
   See [[project_intelligence_fontscale]] — by formula, NOT fontscale.py. */
.about-page.qa-restyle { /* mockup body = 16.5px */
  /* mockup h2 = 1.85rem */
  /* mockup .lead = 1.03rem */
  /* mockup .dcard h3 = 1.05rem */
  /* mockup .dcard p = .9rem */
  /* mockup .checks li = .93rem */
  /* mockup .call-big = 1.5rem */
  /* mockup .btn = .97rem (Message us) */
  /* mockup .micro = .83rem */
  /* SOC 2 certificate image — mockup caps it at max-width:230px (shared .fig img is
     max-width:100%, which would fill the .split column). Scoped to .fig.soc2 so the
     mass-of-people .fig.full banner keeps its full width. */
  /* mass-of-people banner — mockup crops it to a fixed band (height clamp + cover),
     not the shared .fig img height:auto (which renders the photo at full natural
     height). width:100% is inherited from the shared .fig.full img rule. */
}
.about-page.qa-restyle section {
  font-size: 16.5px;
}
.about-page.qa-restyle .secondary-heading {
  font-size: 29.6px;
}
.about-page.qa-restyle .section-lead {
  font-size: 16.48px;
}
.about-page.qa-restyle .dcard h3 {
  font-size: 16.8px;
}
.about-page.qa-restyle .dcard p {
  font-size: 14.4px;
}
.about-page.qa-restyle .checks li {
  font-size: 14.88px;
}
.about-page.qa-restyle .call-big {
  font-size: 24px;
}
.about-page.qa-restyle .rda_btn {
  font-size: 15.52px;
}
.about-page.qa-restyle .micro {
  font-size: 13.28px;
}
.about-page.qa-restyle .fig.soc2 img {
  max-width: 230px;
}
.about-page.qa-restyle .fig.full img {
  height: clamp(200px, 26vw, 330px);
  object-fit: cover;
}
.about-page.qa-restyle .form { /* mockup .form label = .85rem */
  /* mockup .form input = .95rem */
  /* mockup .micro = .83rem */
}
.about-page.qa-restyle .form .field-label label:not(.error) {
  font-size: 13.6px;
}
.about-page.qa-restyle .form input, .about-page.qa-restyle .form textarea {
  font-size: 15.2px;
}
.about-page.qa-restyle .form .micro {
  font-size: 13.28px;
}
/* Human Insights Data (consumer-data.php) — page-scoped restyle.
   Type ramp = clone of the LI / segments / about ramps (px = mockup_rem × 16, body
   16.5px), trimmed to the selectors that exist in THIS DOM (intro h2 + lead + p, plus
   the three .dbox sections — no .subhead / .eyebrow; the hero uses .counter).
   The .dbox / .dbox.rev / .dbox-media / .dbox-links components are NEW (not in the
   shared .qa-restyle layer), ported verbatim from the human-insights-data mockup and
   nested page-scoped so they can't leak and so .dbox-links a (0,3,1) out-specifies the
   body-link recolour (0,2,1) below, keeping the data-set links brand-red per mockup.
   See [[project_intelligence_fontscale]] — by formula, NOT fontscale.py. */
.consumer-data-page.qa-restyle { /* mockup body = 16.5px */
  /* mockup h2 = 1.85rem */
  /* "Data Sets" intro title at 1.5× the page h2 (29.6px × 1.5) */
  /* mockup .lead = 1.03rem */
  /* re-assert the global cascade (_global.scss p{1.3} / a{color:$blue}) per
     [[project_restyle_lineheight_cascade]] — restyled body copy is 1.6, links brand-red */
  /* alternating media/text rows — mockup .dbox (separated by margin, not <hr>) */
  /* data-set CTAs use .cta-row + .btn-outline.btn-outline--sm (Living Insights
     pattern); .btn-outline is page-scoped above, .cta-row is shared. */
  /* mockup stacks the rows at 820px (≠ the 740px banner rule @ index.scss:1250) */
}
.consumer-data-page.qa-restyle section {
  font-size: 16.5px;
}
.consumer-data-page.qa-restyle .secondary-heading {
  font-size: 29.6px;
}
.consumer-data-page.qa-restyle .secondary-heading.data-sets-heading {
  font-size: 44.4px;
}
.consumer-data-page.qa-restyle .section-lead {
  font-size: 16.48px;
}
.consumer-data-page.qa-restyle p {
  line-height: 1.6;
}
.consumer-data-page.qa-restyle a {
  color: var(--brand-dark);
}
.consumer-data-page.qa-restyle .dbox {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 46px;
  align-items: center;
  margin-top: 46px;
  /* flip media to the right on alternating rows */
  /* dimension titles carry .mb-3.secondary-heading — styled by the shared
     .secondary-heading (dark, weight 500) + the page ramp (29.6px), matching
     the intro section heading. No bespoke .dbox h2 rule (intentionally dark,
     not the mockup's red — per design decision). */
}
.consumer-data-page.qa-restyle .dbox.rev .dbox-media {
  order: 2;
}
.consumer-data-page.qa-restyle .dbox p {
  /* mockup .dbox p sets no font-size — inherits body 16.5px (NOT .92rem) */
  margin-bottom: 12px;
}
.consumer-data-page.qa-restyle .dbox p:last-of-type {
  margin-bottom: 0;
}
.consumer-data-page.qa-restyle .dbox p b {
  color: var(--ink);
}
.consumer-data-page.qa-restyle .dbox-media img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: 6px; /* mockup var(--radius) */
  box-shadow: 2px 3px 12px rgba(0, 0, 0, 0.08);
}
@media (max-width: 820px) {
  .consumer-data-page.qa-restyle .dbox {
    grid-template-columns: 1fr;
    gap: 22px;
    /* rev rows also stack media-above-text */
  }
  .consumer-data-page.qa-restyle .dbox.rev .dbox-media {
    order: 0;
  }
}
/* geoSmart Segments (geosmart.php) — page-scoped restyle.
   Reuses the shared .qa-restyle vocabulary entirely (.split / .fig / .checks /
   .flist / .demo-grid / .cta-row) — no new components, unlike consumer-data's
   bespoke .dbox. Type ramp = clone of the LI / segments / about ramps
   (px = mockup_rem × 16, body 16.5px), trimmed to the selectors present in THIS
   DOM. By formula, NOT fontscale.py (baseline stale). See
   [[project_intelligence_fontscale]]. */
.geosmart-page.qa-restyle { /* mockup body = 16.5px */
  /* mockup h2 = 1.85rem */
  /* mockup .lead = 1.03rem */
  /* mockup .checks li = .93rem */
  /* mockup .flist li = .92rem */
  /* mockup .call-big = 1.5rem */
  /* mockup .btn = .97rem (Message us) */
  /* mockup .micro = .83rem */
  /* re-assert the global cascade (_global.scss p{1.3} / a{color:$blue}) per
     [[project_restyle_lineheight_cascade]] — restyled body copy is 1.6, links brand-red */
  /* interactive 56-segment map wrapper — the live gallery replaces the mockup's
     static chart figure (which carries margin-top:26px). The gallery's .graph_geosmart
     ships no top margin, so it butted up against the "Click on each…" hint; re-assert
     the mockup's 26px text→figure gap here. */
  /* intro line above the .flist ("…find your best target segments by:") — not in
     the shared layer, so define it here (geoSmart-only). mockup .list-intro */
  /* shared .fig ships no figcaption styling — the geoSmart map figure carries one */
  /* downloads — centred bold label + centred button row (mockup) */
  /* alternating split: image (narrow) on the LEFT, body copy (wide) on the RIGHT —
     Cultural Diversity row. Source order is figure-then-text, so flip the column
     weights (shared .split is 1.25fr .75fr, text-left). This selector (0,3,0)
     out-specifies the shared @980 `.split{1fr}` collapse (0,1,0), so re-declare the
     collapse here or it would stay 2-col on mobile. */
}
.geosmart-page.qa-restyle section {
  font-size: 16.5px;
}
.geosmart-page.qa-restyle .secondary-heading {
  font-size: 29.6px;
}
.geosmart-page.qa-restyle .section-lead {
  font-size: 16.48px;
}
.geosmart-page.qa-restyle .checks li {
  font-size: 14.88px;
}
.geosmart-page.qa-restyle .flist li {
  font-size: 14.72px;
}
.geosmart-page.qa-restyle .call-big {
  font-size: 24px;
}
.geosmart-page.qa-restyle .rda_btn {
  font-size: 15.52px;
}
.geosmart-page.qa-restyle .micro {
  font-size: 13.28px;
}
.geosmart-page.qa-restyle p {
  line-height: 1.6;
}
.geosmart-page.qa-restyle a {
  color: var(--brand-dark);
}
.geosmart-page.qa-restyle .geotribes_segment_item {
  margin-top: 26px;
}
.geosmart-page.qa-restyle .list-intro {
  margin-top: 16px;
  margin-bottom: 2px;
  color: var(--muted);
  font-size: 15.2px; /* mockup .list-intro = .95rem */
}
.geosmart-page.qa-restyle .fig figcaption {
  font-style: italic;
  color: var(--muted);
  font-size: 13.76px; /* mockup figcaption = .86rem */
  line-height: 1.5;
  margin-top: 10px;
}
.geosmart-page.qa-restyle .form { /* mockup .form label = .85rem */
  /* mockup .form input = .95rem */
  /* mockup .micro = .83rem */
}
.geosmart-page.qa-restyle .form .field-label label:not(.error) {
  font-size: 13.6px;
}
.geosmart-page.qa-restyle .form input, .geosmart-page.qa-restyle .form textarea {
  font-size: 15.2px;
}
.geosmart-page.qa-restyle .form .micro {
  font-size: 13.28px;
}
.geosmart-page.qa-restyle .downloads {
  text-align: center;
}
.geosmart-page.qa-restyle .downloads .cta-row {
  justify-content: center;
}
.geosmart-page.qa-restyle .split.rev {
  grid-template-columns: 0.75fr 1.25fr;
}
@media (max-width: 980px) {
  .geosmart-page.qa-restyle .split.rev {
    grid-template-columns: 1fr;
  }
}
/* Explorer (explorer.php) — page-scoped restyle.
   Reuses the shared .qa-restyle vocabulary (.split / .fig / .checks / .flist /
   .demo-grid / .cta-row), plus a net-new .numlist for the Audience-Finder steps.
   Type ramp = clone of the geoSmart ramp (px = mockup_rem × 16, body 16.5px),
   trimmed to the selectors present in THIS DOM. By formula, NOT fontscale.py.
   See [[project_intelligence_fontscale]]. */
.explorer-page.qa-restyle { /* mockup body = 16.5px */
  /* mockup h2 = 1.85rem */
  /* divider heading ("Why Smart Planners…") — 20% smaller than the hero h1
     (#banner_landing_wrap.explorer-page .primary-heading clamp(36.8,6.2vw,68.8) × 0.8),
     fluid so it holds the proportion at every screen size. (0,4,0) beats the .secondary-heading ramp. */
  /* mockup .lead = 1.03rem, Regular (site body defaults to Light 300) */
  /* explorer mockup: hero-tag margin 20px 0 0 (size/weight from shared .qa-restyle .hero-tag) */
  /* mockup .checks li = .93rem */
  /* mockup .flist li = .92rem */
  /* mockup .call-big = 1.5rem */
  /* mockup .btn = .97rem (Message us) */
  /* mockup .micro = .83rem */
  /* re-assert the global cascade (_global.scss p{1.3} / a{color:$blue}) per
     [[project_restyle_lineheight_cascade]] — restyled body copy is 1.6, links brand-red */
  /* the Explorer mockup uses EQUAL, top-aligned split columns (1fr 1fr) for every
     two-up row — UNLIKE the shared .split (1.25fr .75fr, centered) and the geoSmart
     .split.rev (.75fr 1.25fr). Override both here. This selector (0,3,0) out-specifies
     the shared @980 `.split{1fr}` collapse (0,2,0), so re-declare the collapse, and
     drop the figure below the text on rev rows (mockup .split.rev figure{order:2}). */
  /* intro line above a .flist / .numlist (mockup .list-intro) — not in the shared layer */
  /* downloads — centred bold label + centred button row (mockup) */
  /* shared .fig ships no figcaption styling — Explorer content figures carry captions */
  /* net-new, page-scoped: red-numbered ordered list (mockup .numlist) for the
     Audience-Finder workflow steps — the shared layer ships only .flist / .checks */
}
.explorer-page.qa-restyle section {
  font-size: 16.5px;
}
.explorer-page.qa-restyle .secondary-heading {
  font-size: 29.6px;
}
.explorer-page.qa-restyle .secondary-heading.divider-heading {
  font-size: clamp(29.44px, 4.96vw, 55.04px);
  font-weight: 300;
}
.explorer-page.qa-restyle .section-lead {
  font-size: 16.48px;
  font-weight: 400;
}
.explorer-page.qa-restyle .hero-tag {
  margin-top: 20px;
}
.explorer-page.qa-restyle .checks li {
  font-size: 14.88px;
}
.explorer-page.qa-restyle .flist li {
  font-size: 14.72px;
}
.explorer-page.qa-restyle .call-big {
  font-size: 24px;
}
.explorer-page.qa-restyle .rda_btn {
  font-size: 15.52px;
}
.explorer-page.qa-restyle .micro {
  font-size: 13.28px;
}
.explorer-page.qa-restyle p {
  line-height: 1.6;
}
.explorer-page.qa-restyle a {
  color: var(--brand-dark);
}
.explorer-page.qa-restyle .split,
.explorer-page.qa-restyle .split.rev {
  align-items: start;
  grid-template-columns: 1fr 1fr;
}
@media (max-width: 980px) {
  .explorer-page.qa-restyle .split,
  .explorer-page.qa-restyle .split.rev {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 980px) {
  .explorer-page.qa-restyle .split.rev figure {
    order: 2;
  }
}
.explorer-page.qa-restyle .list-intro {
  margin-top: 16px;
  margin-bottom: 2px;
  color: var(--muted);
  font-size: 15.2px; /* mockup .list-intro = .95rem */
}
.explorer-page.qa-restyle .downloads {
  text-align: center;
}
.explorer-page.qa-restyle .downloads .cta-row {
  justify-content: center;
}
.explorer-page.qa-restyle .fig figcaption {
  font-style: italic;
  color: var(--muted);
  font-size: 13.76px; /* mockup figcaption = .86rem */
  line-height: 1.5;
  margin-top: 10px;
}
.explorer-page.qa-restyle .form { /* mockup .form label = .85rem */
  /* mockup .form input = .95rem */
  /* mockup .micro = .83rem */
}
.explorer-page.qa-restyle .form .field-label label:not(.error) {
  font-size: 13.6px;
}
.explorer-page.qa-restyle .form input, .explorer-page.qa-restyle .form textarea {
  font-size: 15.2px;
}
.explorer-page.qa-restyle .form .micro {
  font-size: 13.28px;
}
.explorer-page.qa-restyle .numlist {
  list-style: decimal;
  margin: 12px 0 0 1.4em;
}
.explorer-page.qa-restyle .numlist li {
  padding: 0 0 11px 0.3em;
  font-size: 14.72px; /* mockup .numlist li = .92rem */
  line-height: 1.5;
}
.explorer-page.qa-restyle .numlist li::marker {
  color: var(--brand);
  font-weight: 700;
}
/* Content gutter for every worked (.qa-restyle) page at/below 1200px. The .container
   on these pages is max-width:1200 and goes full-width (100vw) at ≤1200px, so hero
   taglines, headings and body copy ran flush to the screen edges. Re-assert a 24px
   gutter on the four product-page heroes (#banner_landing_wrap.qa-restyle is itself
   the .container) and every restyled body .container (Intelligence / Living Insights /
   Segments / About / Home; the Home hero .home-banner-wrap is OUTSIDE the wrapper so
   it is untouched).

   Per design: at ≤1200px ONLY the banner image and the section dividers may touch the
   walls — everything else (incl. .fig.full content figures) keeps the gutter.
     • Section dividers are the section's border-top, painted on the full-width
       border-box, so padding leaves them full-bleed automatically — no rule needed.
     • The hero banner image is a direct child of the padded hero container, so it
       would otherwise inset with the text; pull it back out to full-bleed with a
       negative inline margin.
   Above 1200px the container centres in its 1200 box and supplies its own gutter. */
@media (max-width: 1200px) {
  #banner_landing_wrap.qa-restyle,
  .qa-restyle .container {
    padding-inline: 24px;
  }
  /* hero banner image stays edge-to-edge (the one element, with the dividers,
     allowed to hit the walls) */
  #banner_landing_wrap.qa-restyle > img {
    width: calc(100% + 48px);
    max-width: none;
    margin-inline: -24px;
  }
}
/* geoTribes home-page product-vignettes mockup ramp + components — page-scoped to
   .home-page (the five product vignettes on index.php only) so it honours the
   home-vignettes mockup precisely without touching the shared layer or the other
   rolled-out pages. px = mockup_rem × 16 (F = 1.0); body 16.5px like the LI/segments
   ramps. Reuses the shared .qa-restyle section divider, .split grid, .section-lead /
   .flist bases; defines the components the shared layer lacks (.eyebrow, .figure,
   .hlinks and the Quick Append .qa-image creative). The compound
   .home-page.qa-restyle (0,2,0) out-specifies the shared .qa-restyle (0,1,0) regardless
   of source order. See [[project_intelligence_fontscale]] — by formula, NOT fontscale.py. */
.home-page.qa-restyle {
  /* ---- type ramp (px = mockup_rem × 16) ---- */
  /* mockup body = 16.5px (matches the LI/segments ramps) */
  /* Postcode Profiler form's "Top geoTribes Segments" heading — keep on one line
     (it sits in a narrow .col-right and otherwise wraps to two); sized down so the
     nowrap line fits the column without overflowing the panel. */
  /* eyebrow / catalogue index ("↳ 0N/") — small, lightly tracked ink (mockup .eyebrow) */
  /* blue lead — override the shared .section-lead size to the home mockup (.lead = 1.12rem);
     colour/blue inherited from the shared .section-lead base. */
  /* body-copy paragraph — inherits the section 16.5px (mockup body) */
  /* red-check capability list — override the shared 1-col .flist to the mockup's
     2-col grid; the ✓ ::before (content + colour + the font-synthesis-weight:auto
     exception @ ".qa-restyle .flist li::before") is inherited from the shared .flist. */
  /* home-page text links — red, right chevron, hairline rule (mockup .hlinks / .hlink) */
  /* figure cell (Intelligence, Living Insights, Explorer) */
  /* Quick Append creative — hero figures on cream + How-it-works overlay in dark ink */
  /* inline body links red (mockup a{color:var(--brand-dark)}); the global a{color:$blue}
     (_global.scss) would otherwise win. .hlink (0,3,0) stays brand-red over this (0,2,1). */
  /* single-column flatten — mirror the shared 980px breakpoint for the home-only grids
     (.split already collapses via the shared .qa-restyle @media). */
}
.home-page.qa-restyle section {
  font-size: 16.5px;
}
.home-page.qa-restyle h2,
.home-page.qa-restyle .secondary-heading {
  font-size: 42px; /* section heading (35px × 1.2) */
  font-weight: 500;
  line-height: 1.25;
  margin-bottom: 10px; /* mockup h2 */
}
.home-page.qa-restyle .profile-finder-wrap .secondary-heading {
  font-size: 16px;
  white-space: nowrap;
}
.home-page.qa-restyle .eyebrow {
  margin-bottom: 16px;
  color: var(--ink);
  font-size: 15.2px; /* mockup .eyebrow = .95rem */
  font-weight: 400;
  letter-spacing: 0.04em;
}
.home-page.qa-restyle .section-lead {
  max-width: 46em;
  margin-bottom: 12px;
  font-size: 22px;
}
.home-page.qa-restyle .body-copy {
  max-width: 42em;
  color: var(--muted);
}
.home-page.qa-restyle .flist {
  margin: 18px 0 22px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 28px;
}
.home-page.qa-restyle .flist li {
  padding: 0 0 0 26px;
  font-size: 15.04px; /* mockup .flist li = .94rem */
  line-height: 1.45;
}
.home-page.qa-restyle .hlinks {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
  margin-top: 10px;
  /* single links (non-Segments vignettes) sit to the right */
}
.home-page.qa-restyle .hlinks.right {
  align-items: flex-end;
}
.home-page.qa-restyle .hlink {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 10px 0;
  border-bottom: 1px solid var(--line); /* quickappend row separator */
  color: var(--brand);
  font-size: 16px; /* mockup .hlink = 1rem */
  font-weight: 600;
  line-height: 1.3;
  text-decoration: none;
}
.home-page.qa-restyle .hlink:hover {
  color: var(--brand-dark);
}
.home-page.qa-restyle .hlink .chev {
  flex: none;
  font-weight: 700;
}
.home-page.qa-restyle .figure {
  margin: 0;
  /* standardised 371/201 product images (Intelligence, Explorer) */
  /* Living Insights photo sits borderless */
}
.home-page.qa-restyle .figure a {
  display: block;
}
.home-page.qa-restyle .figure img {
  width: 100%;
  height: auto;
  display: block;
  border: 1px solid var(--line);
  border-radius: 4px;
}
.home-page.qa-restyle .figure.std img {
  aspect-ratio: 371/201;
  object-fit: cover;
  height: auto;
}
.home-page.qa-restyle .figure.no-border img {
  border: none;
}
.home-page.qa-restyle .qa-image {
  position: relative;
  width: 100%;
  aspect-ratio: 371/201;
  overflow: hidden;
  background: #f7f5f1;
  border: 1px solid var(--line);
  border-radius: 4px;
}
.home-page.qa-restyle .qa-image img {
  position: absolute;
  inset: 0;
  z-index: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.home-page.qa-restyle .qa-image .scrim {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: none;
}
.home-page.qa-restyle .qa-flow {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: clamp(8px, 1.4vw, 12px);
  padding: clamp(13px, 2.2vw, 18px);
}
.home-page.qa-restyle .qa-flow .cap {
  color: var(--ink, #1f1f1f);
  font-size: 12.16px; /* mockup .qa-flow .cap = .76rem */
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.62;
  text-shadow: none;
}
.home-page.qa-restyle .qa-steps {
  position: relative;
  flex: 1;
  list-style: none;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.home-page.qa-restyle .qa-steps::before {
  content: "";
  position: absolute;
  left: 12px;
  top: 13px;
  bottom: 13px;
  width: 2px;
  background: rgba(21, 32, 43, 0.16);
}
.home-page.qa-restyle .qa-steps li {
  position: relative;
  display: flex;
  align-items: center;
  gap: 13px;
}
.home-page.qa-restyle .qa-steps li.key .n {
  background: var(--brand);
  color: #fff;
  box-shadow: none;
}
.home-page.qa-restyle .qa-steps li.key .t {
  font-weight: 600;
}
.home-page.qa-restyle .qa-steps .n {
  flex: none;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #fff;
  color: var(--ink, #1f1f1f);
  font-size: 13.6px; /* mockup .qa-steps .n = .85rem */
  font-weight: 600;
  box-shadow: 0 0 0 1px rgba(21, 32, 43, 0.14), 0 1px 3px rgba(21, 32, 43, 0.1);
}
.home-page.qa-restyle .qa-steps .t {
  color: var(--ink, #1f1f1f);
  font-size: clamp(14.4px, 1.05vw, 16.96px); /* mockup .qa-steps .t = clamp(.9rem,1.05vw,1.06rem) */
  font-weight: 500;
  text-shadow: none;
}
.home-page.qa-restyle a {
  color: var(--brand-dark);
}
@media (width <= 980px) {
  .home-page.qa-restyle .flist {
    grid-template-columns: 1fr;
  }
}
/* ============================================================
   Ported to the SHARED .qa-restyle layer — additive; the
   .intelligence-page rules above are left intact (intelligence is the
   one approved page, kept untouched). Only line-height + letter-spacing
   are shared; font-SIZE is deliberately NOT ported, so each rolled-out
   page keeps its own hero size. All values are scale-relative
   (em / unitless), so they stay coherent at any size.
   ============================================================ */
.qa-restyle,
.qa-restyle p {
  line-height: 1.6; /* body copy — beats the global p{1.3} on every restyled page */
}
.qa-restyle p {
  font-weight: 300; /* Light body copy — Issue #10; beats global p + inherited */
}
#banner_landing_wrap.qa-restyle .primary-heading {
  letter-spacing: -0.015em;
  line-height: 1;
}
#banner_landing_wrap.qa-restyle .counter {
  letter-spacing: 0.04em;
}
#banner_landing_wrap.qa-restyle .banner-description {
  line-height: 1.18;
  letter-spacing: normal; /* removes the base -1px tracking on the other heroes' subs (mockup) */
}
@media screen and (width <= 464px) {
  #barChartSvg,
  .profile-finder-wrap {
    width: unset;
    max-width: 100%;
  }
  #livingInsightsUrl {
    left: 0.2vw;
    position: relative;
  }
  /**
   * hides certain login urls from footer and navbar login section as the login 
   * page for these are not optimised for small screen devices
   */
  #loginGroup .li-login-url,
  #loginGroup .sp-login-url,
  #loginGroup .explorer-login-url,
  #navbarLoginGroup .li-login-url,
  #navbarLoginGroup .sp-login-url,
  #navbarLoginGroup .explorer-login-url {
    display: none;
  }
}
@media screen and (width <= 400px) {
  .product-image {
    width: 100%;
  }
}
@media screen and (width <= 340px) {
  #geoSmartUrl::after {
    padding-left: 7rem;
  }
  #geoTribesUrl::after {
    padding-left: 2px;
  }
}
@media screen and (width <= 320px) {
  #geoSmartUrl::after,
  #geoTribesUrl::after {
    content: "";
    padding-left: 0;
  }
}
#profileChartWrap a.chart-img-url {
  /**
   * svg specific styling 
   */
}
#profileChartWrap a.chart-img-url text {
  fill: var(--highlighter-color-hexa);
  cursor: pointer;
  font-size: 1.5rem;
  font-family: "Sofia Pro", sans-serif;
  text-decoration: underline;
}
#profileChartWrap a.chart-img-url text:hover {
  font-size: 1.48rem;
  font-weight: bold;
  text-decoration: none;
}
/* ============================================================
   Quick Append / Living Insights restyle — SHARED component layer (Issue #10)
   Keyed on .qa-restyle, which every restyled product page carries
   alongside its own thin .<page>-page class. The tokens and component
   vocabulary are byte-identical across the Intelligence, Living Insights
   and Segments mockups, so they live here once rather than per page.
   Values lifted from the approved mockups
   (work-item/10/resources/html/*-restyled1200*.html).
   Additive — does NOT touch the old .geotribes-page,.intelligence-page
   block above, which segments.php still depends on.
   ============================================================ */
.qa-restyle {
  /* mockup tokens, shared by every page wearing .qa-restyle */
  --brand: #C4242B ;
  --brand-dark: #A31D24 ;
  --brand-tint: #F9EEEC ;
  --blue: #4A90C2 ;
  --ink: #222222 ;
  --muted: #4A5258 ;
  --line: #DDDDD8 ;
  /* section dividers replace the old <hr class="container">; the
     border tracks the .container width so it aligns with the hero.
     Only matches body <section>s nested under the wrapper div — the
     hero itself carries .qa-restyle (not a descendant) so it is
     left untouched. */
  /* CTA — reuse the site .rda_btn, recoloured to the mockup red.
     !important on color is required to beat the base rules
     .rda_btn{color:#fff!important} and .rda_btn:hover{color:#000!important}. */
  /* hero tagline row (mockup .hero-tag-row): the banner tagline and the
     "Book a demo" CTA share one line, button pushed to the right; the
     tagline drops the big .banner-description clamp for the mockup's
     1.06rem. Resolves under the hero, which carries .qa-restyle. */
  /* p.hero-tag (0,2,1) so line-height beats the per-page `p{line-height:1.6}`
     re-assertions (.<page>.qa-restyle p, also (0,2,1)) on source order. */
  /* blue lead paragraph (mockup .lead, renamed to avoid the
     Bootstrap .lead collision) */
  /* trailing explanatory paragraph under a list/grid */
  /* fine-print footnote (mockup .micro). The form-scoped .micro below is more
     specific (.living-insights-page .form .micro) so it still wins in the form. */
  /* divider list with run-in leads */
  /* feature / simulation card grids */
  /* enrichment-channel card header — icon row + title. Placed AFTER .dcard so
     .chan-head h3 (equal 0,2,1 specificity) wins on source order over .dcard h3. */
  /* checkmark list inside the channel cards (model: .checks). Run-in <b> leads
     stay inline — no display:block, unlike .checks b. */
  /* blush callout panel */
  /* red-check list (2-col grid) */
  /* sub-section heading above a checks / card grid (mockup .subhead) */
  /* numbered step list (run-in) */
  /* two-up text + figure */
  /* right-align the fixed-width Postcode Profiler form within its grid cell */
  /* equal-height columns in the profiler section: bring the left content up to the
     height of the Postcode Profiler form (overrides the shared .split align-items:center) */
  /* profiler cross-sell CTA (mockup .pp-cta) — sits under the .section-lead in the
     left text column, divided off by a hairline rule */
  /* contact — Talk to us */
  /* button row (mockup .cta-row) — needs no breakpoint of its own (flex-wrap) */
}
.qa-restyle section {
  border-top: 1px solid #BBBBB4; /* quickappend section divider */
  padding-block: 56px;
  font-size: 15.675px; /* mockup body; site root is 62.5% (1rem=10px) so px is used to hit the mockup's pixels */
  line-height: 1.6;
}
.qa-restyle section p {
  color: var(--muted);
}
.qa-restyle section h2,
.qa-restyle section .secondary-heading {
  font-size: 29.6px; /* section heading standardised to 29.6px across all pages (homepage .home-page h2 overrides to 42px) */
  font-weight: 500;
  line-height: 1.25;
}
.qa-restyle .rda_btn {
  padding: 12px 26px;
  font-size: 14.74px; /* mockup .btn = .921rem @16px */
  font-weight: 600; /* mockup .btn — boldface CTA */
  color: #fff !important;
  background: var(--brand);
  border-color: var(--brand);
  border-radius: 4px;
}
.qa-restyle .rda_btn:hover {
  color: #fff !important;
  background: var(--brand-dark);
  border-color: var(--brand-dark);
}
.qa-restyle .hero-tag-row {
  display: flex;
  gap: 24px;
  margin-top: 20px;
  align-items: center;
}
.qa-restyle p.hero-tag {
  margin: 0;
  max-width: 52em;
  color: var(--ink);
  font-size: 25.16px; /* bottom tagline: 85% of section title (29.6px × 0.85) */
  line-height: 3.5rem; /* bottom tagline line-height */
  font-weight: 300; /* mockup postface = Regular; real 'Sofia Pro' wired in _header @font-face */
}
.qa-restyle .hero-tag-row .rda_btn {
  flex: none;
  margin-left: auto;
  white-space: nowrap;
}
.qa-restyle .section-lead {
  max-width: 54em;
  color: var(--blue);
  font-size: 15.65px; /* mockup .lead = 0.978rem @16px */
}
.qa-restyle .section-note {
  max-width: 54em;
  margin-top: 20px;
}
.qa-restyle .micro {
  color: var(--muted);
  font-size: 13.28px; /* mockup .micro = .83rem @16px */
}
.qa-restyle .what-list {
  max-width: 58em;
  list-style: none;
  padding-left: 0;
}
.qa-restyle .what-list li {
  padding: 0 0 12px;
  color: var(--muted);
  font-size: 14.59px; /* mockup .what-list li = .912rem @16px */
}
.qa-restyle .what-list b {
  color: var(--ink);
}
.qa-restyle .card-grid {
  gap: 18px;
  margin-top: 26px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}
.qa-restyle .chan-grid {
  gap: 18px;
  margin-top: 26px;
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.qa-restyle .dcard {
  padding: 22px;
  background: #fff;
  border: 1px solid var(--line);
  border-top: 3px solid var(--brand);
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
  box-shadow: 2px 3px 10px rgba(0, 0, 0, 0.06);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.qa-restyle .dcard h3 {
  margin-bottom: 6px;
  color: var(--brand);
  font-size: 15.95px; /* mockup .dcard h3 = .997rem @16px */
  font-weight: 500; /* mockup h1,h2,h3 */
  line-height: 1.25;
}
.qa-restyle .dcard h3 a {
  color: inherit;
  text-decoration: none;
}
.qa-restyle .dcard h3 a:hover {
  text-decoration: underline;
}
.qa-restyle .dcard p {
  color: var(--muted);
  font-size: 13.98px; /* mockup .dcard p = .874rem @16px */
}
.qa-restyle .dcard:hover {
  transform: translateY(-2px);
  box-shadow: 3px 6px 16px rgba(0, 0, 0, 0.1);
}
.qa-restyle .chan-head {
  display: flex;
  gap: 12px;
  margin-bottom: 4px;
  align-items: center;
}
.qa-restyle .chan-head .icos {
  display: flex;
  gap: 8px;
}
.qa-restyle .chan-head img {
  height: 30px;
  width: auto;
}
.qa-restyle .chan-head h3 {
  margin: 0;
  color: var(--brand);
  font-size: 18.88px; /* mockup .chan-head h3 = 1.18rem @16px */
}
.qa-restyle .chan-sub {
  margin: 0 0 6px;
  color: var(--muted);
  font-size: 15.2px; /* mockup .chan-sub = .95rem @16px */
}
.qa-restyle .chan-lab {
  margin-top: 16px;
  color: var(--muted);
  font-size: 12.16px; /* mockup .chan-lab = .76rem @16px */
  font-weight: 600;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}
.qa-restyle .flist {
  margin: 8px 0 0;
  list-style: none;
  padding-left: 0; /* site has no *{padding:0} reset; kill the default ul indent (mockup is flush) */
}
.qa-restyle .flist li {
  position: relative;
  padding: 0 0 10px 24px;
  color: var(--ink);
  font-size: 14.4px; /* mockup .flist li = .9rem @16px */
  line-height: 1.5;
}
.qa-restyle .flist li::before {
  content: "✓";
  position: absolute;
  top: 0;
  left: 0;
  color: var(--brand);
  font-weight: 700;
}
.qa-restyle .flist li:last-child {
  padding-bottom: 0;
}
.qa-restyle .flist li b {
  color: var(--brand);
  font-weight: 600;
}
.qa-restyle .panel {
  padding: 24px 26px;
  margin-top: 24px;
  background: var(--brand-tint);
  border: 1px solid #E9D6D3;
  border-radius: 4px;
  box-shadow: 2px 3px 10px rgba(0, 0, 0, 0.07);
}
.qa-restyle .panel p {
  color: var(--ink);
}
.qa-restyle .panel p b {
  color: var(--brand);
  font-weight: 600;
}
.qa-restyle .checks {
  gap: 16px 30px;
  margin-top: 22px;
  list-style: none;
  padding-left: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.qa-restyle .checks li {
  position: relative;
  padding-left: 28px;
  color: var(--ink);
  font-size: 14.13px; /* mockup .checks li = .883rem @16px */
  line-height: 1.5;
}
.qa-restyle .checks li::before {
  content: "✓";
  position: absolute;
  top: 0;
  left: 0;
  color: var(--brand);
  font-weight: 700;
}
.qa-restyle .checks b {
  display: block;
  margin-bottom: 2px;
  color: var(--brand);
  font-weight: 600;
}
.qa-restyle .subhead {
  margin: 26px 0 2px;
  color: var(--ink);
  font-size: 16.64px; /* mockup .subhead = 1.04rem @16px */
  font-weight: 600;
}
.qa-restyle .subhead + .checks {
  margin-top: 14px;
}
.qa-restyle .steps {
  list-style: none;
  counter-reset: step;
  padding-left: 0;
}
.qa-restyle .steps li {
  position: relative;
  padding: 0 0 16px 40px;
  color: var(--muted);
  font-size: 14.43px; /* mockup .steps li = .902rem @16px */
  line-height: 1.55;
}
.qa-restyle .steps li::before {
  counter-increment: step;
  content: counter(step);
  position: absolute;
  top: 1px;
  left: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  font-size: 12.91px; /* mockup .steps li::before = .807rem @16px */
  font-weight: 600;
}
.qa-restyle .steps li:last-child {
  padding-bottom: 0;
}
.qa-restyle .steps b {
  color: var(--ink);
}
.qa-restyle .split {
  gap: 40px;
  margin-top: 8px;
  display: grid;
  align-items: center;
  grid-template-columns: 1.25fr 0.75fr;
}
.qa-restyle .split.img-lg {
  grid-template-columns: 1.05fr 0.95fr;
}
.qa-restyle .split .profile-finder-wrap {
  justify-self: end;
}
.qa-restyle #segmentationSection .split {
  align-items: stretch;
}
.qa-restyle .pp-cta {
  max-width: 30em;
  color: var(--muted);
  font-size: 15.36px; /* mockup .pp-cta = .96rem @16px */
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
}
.qa-restyle .pp-cta b {
  color: var(--ink);
}
.qa-restyle .pp-cta a {
  color: var(--brand-dark);
  font-weight: 600;
  text-decoration: none;
}
.qa-restyle .pp-cta a:hover {
  text-decoration: underline;
}
.qa-restyle .fig {
  margin: 0;
  text-align: center;
  /* crop the washed-out left of the photo and let the subject
     on the right fill (and enlarge to) the column */
}
.qa-restyle .fig img {
  height: auto;
  max-width: 100%;
  border-radius: 4px;
}
.qa-restyle .fig.full img {
  width: 100%;
}
.qa-restyle .fig.crop-right {
  overflow: hidden;
  border-radius: 4px;
}
.qa-restyle .fig.crop-right img {
  display: block;
  width: 222.22%;
  max-width: none;
  margin-left: -122.22%;
}
.qa-restyle .demo-grid {
  gap: 48px;
  margin-top: 8px;
  display: grid;
  align-items: start;
  grid-template-columns: 1.15fr 0.85fr;
}
.qa-restyle .call-big {
  color: var(--ink);
  font-size: 22.8px; /* mockup .call-big = 1.425rem @16px */
  font-weight: 700;
}
.qa-restyle .call-big a {
  color: var(--ink);
  text-decoration: none;
}
.qa-restyle .cta-row {
  display: flex;
  gap: 14px;
  align-items: center;
  flex-wrap: wrap;
}
@media (width <= 980px) {
  .qa-restyle {
    /* stacked contact form: message line under Send takes space only while it
       shows a message (success / error class; script drops both when it fades
       out), and the 48px column gap shrinks to a 24px row gap, so Send to
       "Or Call Us" lands near 25px. Desktop keeps the reserved line. */
    /* stacked: "Or Call Us" + number one line, never wrapping, same rule every
       page. Number at shared 22.8px (per-page 24px kept above 980px). Pair text
       at full size 304.23px on site fonts; full size from ~370px wide, below that
       both scale with viewport: 100vw - 48px section padding - 16px gap - 2px
       spare = 100vw - 66px. Factors = font size / 304.23. */
    /* .split.img-lg (0,3,0) out-specifies the plain .split collapse above, so it
       is listed explicitly — without it the Postcode Profiler split (home +
       segments, both .split.img-lg) and the Intelligence steps+image split stayed
       2-column and shrank instead of stacking. Once stacked, drop the form's
       justify-self:end so it sits at the left edge below the text, not floating
       right. */
    /* once stacked, the .split 40px column gap would become a tall vertical gap;
       20px read too tight at 769–980, so settle on a consistent 40px across the
       whole stacked range (paired with the margin-top:0 reset above). */
  }
  .qa-restyle section {
    padding-block: 40px;
  }
  .qa-restyle .card-grid,
  .qa-restyle .chan-grid,
  .qa-restyle .checks,
  .qa-restyle .split,
  .qa-restyle .split.img-lg,
  .qa-restyle .demo-grid {
    grid-template-columns: 1fr;
  }
  .qa-restyle #contact .demo-grid {
    row-gap: 24px;
  }
  .qa-restyle #contact .form .global-message:not(.success, .error) {
    margin-block-start: 0;
    min-block-size: 0;
    block-size: 0;
    overflow: hidden;
  }
  .qa-restyle #contact .call-us {
    display: flex;
    align-items: baseline;
    column-gap: 16px;
    white-space: nowrap;
    /* no bottom margins in the row: section's 40px bottom padding alone
       spaces the number from the footer. !important beats .mb-3 utility */
  }
  .qa-restyle #contact .call-us h2 {
    font-size: min(29.6px, (100vw - 66px) * 0.0973);
    margin-bottom: 0 !important;
  }
  .qa-restyle #contact .call-big {
    font-size: min(22.8px, (100vw - 66px) * 0.0749);
    margin-bottom: 0;
  }
  .qa-restyle .split .profile-finder-wrap {
    justify-self: start;
    /* a legacy global rule adds margin-top:5rem to .profile-finder-wrap at
       <=768px (scss ~1228), so the stacked gap jumped from 20px (769–980) to
       70px (<=768). Neutralise it so row-gap alone controls the gap at every
       stacked width. */
    margin-top: 0;
  }
  .qa-restyle .split.img-lg {
    row-gap: 40px;
  }
  .qa-restyle .hero-tag-row {
    gap: 14px;
    flex-direction: column;
    align-items: flex-start;
  }
  .qa-restyle .hero-tag-row .rda_btn {
    margin-left: 0;
  }
}
/* ============================================================
   Intelligence — inline "Talk to us" form
   Page-specific layer (NOT shared .qa-restyle yet: Intelligence is the
   only Stage-1 page carrying the inline form). Font sizes are explicit px
   at the mockup-raw ramp (px = mockup_rem × 16, i.e. F = 1.0),
   computed by formula — NOT via fontscale.py, which is non-idempotent.
   See [[project_intelligence_fontscale]].
   .error/.success/.global-message/.spinner are lifted here because
   contact.scss scopes them under #myContactModal, which is absent on this
   page (contact module dropped in _footer.php).
   ============================================================ */
.intelligence-page .form,
.living-insights-page .form,
.geotribes-page .form,
.about-page .form,
.geosmart-page .form,
.explorer-page .form {
  /* label + its validation message share one line above the field; the
     message (jQuery-validate) is the conditional "required" signal and
     only takes space once populated */
  /* right padding mirrors the button's left padding so the label centres;
     the left padding doubles as the spinner's lane (see .spinner below) */
  /* The spinner is pulled OUT of flow so it can't shove the label off
     centre and can't shift it when it toggles on at submit time (an
     in-flow spinner did both). It floats in the button's left padding,
     clear of the centred label. fa-spinner is circular, so fa-spin's
     rotation doesn't grow its box into the label. Vertical centring uses
     top + margin (NOT transform — fa-spin owns transform). Initially
     hidden: no modal-open event here to pre-hide it, and the shared
     submit handler reveals it via showUncollapsed(). */
}
.intelligence-page .form .field-label,
.living-insights-page .form .field-label,
.geotribes-page .form .field-label,
.about-page .form .field-label,
.geosmart-page .form .field-label,
.explorer-page .form .field-label {
  margin: 14px 0 4px;
  /* the field's own label only — NOT the injected <label class="error">
     validation message, which must keep its red .error colour */
}
.intelligence-page .form .field-label label:not(.error),
.living-insights-page .form .field-label label:not(.error),
.geotribes-page .form .field-label label:not(.error),
.about-page .form .field-label label:not(.error),
.geosmart-page .form .field-label label:not(.error),
.explorer-page .form .field-label label:not(.error) {
  color: var(--ink);
  font-weight: 600;
  font-size: 12.91px; /* mockup .form label = .807rem @16px */
}
.intelligence-page .form .field-label .error:not(:empty),
.living-insights-page .form .field-label .error:not(:empty),
.geotribes-page .form .field-label .error:not(:empty),
.about-page .form .field-label .error:not(:empty),
.geosmart-page .form .field-label .error:not(:empty),
.explorer-page .form .field-label .error:not(:empty) {
  margin-left: 8px;
}
.intelligence-page .form input,
.intelligence-page .form textarea,
.living-insights-page .form input,
.living-insights-page .form textarea,
.geotribes-page .form input,
.geotribes-page .form textarea,
.about-page .form input,
.about-page .form textarea,
.geosmart-page .form input,
.geosmart-page .form textarea,
.explorer-page .form input,
.explorer-page .form textarea {
  width: 100%;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 0; /* square per restyle (mockup used var(--radius)) */
  background: #ffffff;
  color: var(--ink);
  font-family: inherit;
  font-size: 14.43px; /* mockup .form input = .902rem @16px */
  box-sizing: border-box; /* no global border-box reset on this site */
}
.intelligence-page .form textarea,
.living-insights-page .form textarea,
.geotribes-page .form textarea,
.about-page .form textarea,
.geosmart-page .form textarea,
.explorer-page .form textarea {
  min-height: 104px;
  resize: vertical;
}
.intelligence-page .form .g-recaptcha,
.living-insights-page .form .g-recaptcha,
.geotribes-page .form .g-recaptcha,
.about-page .form .g-recaptcha,
.geosmart-page .form .g-recaptcha,
.explorer-page .form .g-recaptcha {
  margin-top: 14px;
}
.intelligence-page .form .micro,
.living-insights-page .form .micro,
.geotribes-page .form .micro,
.about-page .form .micro,
.geosmart-page .form .micro,
.explorer-page .form .micro {
  margin-top: 10px;
  color: var(--muted);
  font-size: 12.61px; /* mockup .micro = .788rem @16px */
}
.intelligence-page .form .rda_btn,
.living-insights-page .form .rda_btn,
.geotribes-page .form .rda_btn,
.about-page .form .rda_btn,
.geosmart-page .form .rda_btn,
.explorer-page .form .rda_btn {
  margin-top: 14px;
  position: relative; /* anchor the absolutely-placed .spinner */
}
.intelligence-page .form .spinner-on-left,
.living-insights-page .form .spinner-on-left,
.geotribes-page .form .spinner-on-left,
.about-page .form .spinner-on-left,
.geosmart-page .form .spinner-on-left,
.explorer-page .form .spinner-on-left {
  padding-inline-end: 2.7rem;
}
.intelligence-page .form .spinner,
.living-insights-page .form .spinner,
.geotribes-page .form .spinner,
.about-page .form .spinner,
.geosmart-page .form .spinner,
.explorer-page .form .spinner {
  position: absolute;
  left: 0.3em;
  top: 50%;
  margin-top: -0.5em;
  visibility: hidden;
}
.intelligence-page .form .error,
.intelligence-page .form .success,
.living-insights-page .form .error,
.living-insights-page .form .success,
.geotribes-page .form .error,
.geotribes-page .form .success,
.about-page .form .error,
.about-page .form .success,
.geosmart-page .form .error,
.geosmart-page .form .success,
.explorer-page .form .error,
.explorer-page .form .success {
  font-size: 12.61px;
}
.intelligence-page .form .error,
.living-insights-page .form .error,
.geotribes-page .form .error,
.about-page .form .error,
.geosmart-page .form .error,
.explorer-page .form .error {
  color: red;
  text-transform: lowercase;
}
.intelligence-page .form .success,
.living-insights-page .form .success,
.geotribes-page .form .success,
.about-page .form .success,
.geosmart-page .form .success,
.explorer-page .form .success {
  color: green;
}
.intelligence-page .form .global-message,
.living-insights-page .form .global-message,
.geotribes-page .form .global-message,
.about-page .form .global-message,
.geosmart-page .form .global-message,
.explorer-page .form .global-message {
  margin-top: 10px;
  min-height: 1.2em;
  visibility: hidden;
}
/* The floating "Talk to us" slidebox button is removed on Intelligence — the
   inline form is the sole contact path. #slidebox lives in the footer (outside
   .intelligence-page), so this is body-scoped. The slidebox module stays loaded
   (_footer.php) so its scroll-to-top positioning script survives. */
body.intelligence #slidebox {
  display: none;
}
/* same for Living Insights — the inline form is the sole contact path.
   NB: get_body_class() (config.php) maps CURRENT_PAGE hyphens to underscores,
   so the body class is 'living_insights', not 'living-insights'. */
body.living_insights #slidebox {
  display: none;
}
/* same for Segments — the inline form is the sole contact path. CURRENT_PAGE
   'segments' has no hyphen, so get_body_class() leaves the body class as
   'segments' (no underscore mapping). */
body.segments #slidebox {
  display: none;
}
/* same for About — the inline "Talk to us" form is the contact path; the floating
   slidebox button is hidden. CURRENT_PAGE 'about' has no hyphen, so the body class
   stays 'about'. Modal + slidebox module stay loaded (_footer.php). */
body.about #slidebox {
  display: none;
}
/* same for geoSmart — the inline "Talk to us" form is the contact path; the floating
   slidebox button is hidden. CURRENT_PAGE 'geosmart' has no hyphen, so the body class
   stays 'geosmart'. Modal + slidebox module stay loaded (_footer.php). */
body.geosmart #slidebox {
  display: none;
}
/* same for Explorer — the inline "Talk to us" form is the sole contact path; the
   floating slidebox button is hidden at all screen sizes. CURRENT_PAGE 'explorer' has
   no hyphen, so the body class stays 'explorer'. Modal + slidebox module stay loaded. */
body.explorer #slidebox {
  display: none;
}
/* Quick Append design system (.qa-design pages) + Human Insights Data layer stack —
   last, so it follows the shared .qa-restyle layer as in the restyle mockups. */
/* Quick Append design system for restyled product pages (wrapper .qa-design), plus
   Human Insights Data layer stack (.qa-hs, .qa-dp, .qa-tip under .qa-restyle).
   Generated from restyle mockup style blocks by vault claude/scripts/qa-design-scss.py.
   Px values: site root font size is 10px, so mockup rem sizes are given in px.
   Rules shared by every mockup stay verbatim under .qa-design; a rule only one page's
   mockup carries is scoped with :where(.<page>) — no added specificity, no bleed. */
.qa-design.qa-restyle {
  --brand: #a9342c ;
  --brand-dark: #8c2a24 ;
  --brand-tint: #f7f5f1 ;
  --ink: #222 ;
  --muted: #4a5258 ;
  --line: #ddddd8 ;
  --qa-navy: #15202b ;
  --qa-cream: #f7f5f1 ;
  --qa-card-shadow: 2px 4px 14px rgba(0, 0, 0, 0.08) ;
}
.qa-design section p {
  font-weight: 300;
}
.qa-design:where(.geotribes-page) section p a {
  color: var(--brand);
}
.qa-design:where(.geotribes-page) section p a:hover {
  color: var(--brand-dark);
}
.qa-design.qa-restyle:where(.intelligence-page) section p a {
  color: var(--brand);
}
.qa-design.qa-restyle:where(.intelligence-page) section p a:hover {
  color: var(--brand-dark);
}
/* Section label, heading and lead */
.qa-design .qa-eyebrow {
  margin: 0 0 10px;
  color: var(--brand);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.14em;
  line-height: 1.3;
  text-transform: uppercase;
}
.qa-design section h2.qa-h2a {
  margin: 0 0 20px;
  color: var(--qa-navy);
  font-size: clamp(25.6px, (100vw - 48px) * 0.0438, 37.04px);
  font-weight: 400;
  line-height: 1.12;
  letter-spacing: -0.01em;
  text-wrap: balance;
}
.qa-design section p.qa-lead-sub {
  max-width: 857px;
  margin: 0 0 8px;
  color: var(--qa-navy);
  font-size: 16.48px;
  font-weight: 300;
  line-height: 1.6;
}
.qa-design .section-note {
  color: var(--muted);
  font-size: 14px;
}
.qa-design:where(.geotribes-page) .qa-built-note {
  margin-top: 26px;
}
/* Quick Append buttons */
.qa-design a.rda_btn {
  padding: 9px 20px;
  color: #fff !important;
  background: var(--brand);
  border: 1.5px solid var(--brand);
  border-radius: 4px;
  font-size: 14px;
  font-weight: 600;
}
.qa-design a.rda_btn:hover,
.qa-design a.rda_btn:focus {
  color: #fff !important;
  background: var(--brand-dark);
  border-color: var(--brand-dark);
}
/* What it is: Quick Append's "What it is" cards */
.qa-design .qa-fgrid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 36px 34px;
  margin: 26px 0 6px;
}
.qa-design:where(.geotribes-page) .qa-ticks {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px 44px;
  margin-top: 24px;
}
.qa-design:where(.geotribes-page) section .qa-ticks p {
  position: relative;
  margin: 0;
  padding-left: 30px;
  color: var(--muted);
  font-size: 15.2px;
  font-weight: 300;
  line-height: 1.55;
}
.qa-design:where(.geotribes-page) .qa-ticks p::before {
  content: "";
  position: absolute;
  left: 6px;
  top: 4px;
  width: 7px;
  height: 13px;
  border: solid var(--brand);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.qa-design:where(.geotribes-page) .qa-ticks b {
  color: var(--qa-navy);
  font-weight: 600;
}
@media (max-width: 880px) {
  .qa-design:where(.geotribes-page) .qa-ticks {
    grid-template-columns: minmax(0, 1fr);
    gap: 14px;
  }
}
.qa-design:where(.geotribes-page) .qa-fnode {
  position: relative;
  padding: 14px;
  text-align: left;
  background: #fff;
  border: 1px solid var(--line);
  border-left: 4px solid var(--brand);
  border-radius: 4px;
  box-shadow: var(--qa-card-shadow);
  transition: transform 0.22s ease, box-shadow 0.22s ease, background-color 0.22s ease;
}
.qa-design:where(.geotribes-page) .qa-fnode h3 {
  margin: 17px 0 10px;
  color: var(--qa-navy);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.3;
  text-align: center;
  transition: color 0.22s ease;
}
.qa-design:where(.geotribes-page) section .qa-fnode p {
  margin: 0 0 8px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.4;
}
.qa-design:where(.geotribes-page) .qa-fnode:hover {
  transform: translateY(-4px);
  background-color: #fffdfa;
  box-shadow: 4px 12px 26px rgba(0, 0, 0, 0.12);
}
.qa-design:where(.geotribes-page) .qa-fnode:hover h3 {
  color: var(--brand);
}
.qa-design:where(.intelligence-page) .qa-fgrid .qa-fnode {
  position: relative;
  padding: 14px;
  text-align: left;
  background: #fff;
  border: 1px solid var(--line);
  border-left: 4px solid var(--brand);
  border-radius: 4px;
  box-shadow: var(--qa-card-shadow);
  transition: transform 0.22s ease, box-shadow 0.22s ease, background-color 0.22s ease;
}
.qa-design:where(.intelligence-page) .qa-fgrid .qa-fnode h3 {
  margin: 17px 0 10px;
  color: var(--qa-navy);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.3;
  text-align: center;
  transition: color 0.22s ease;
}
.qa-design:where(.intelligence-page) section .qa-fgrid .qa-fnode p {
  margin: 0 0 8px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.4;
}
.qa-design:where(.intelligence-page) .qa-fgrid .qa-fnode:hover {
  transform: translateY(-4px);
  background-color: #fffdfa;
  box-shadow: 4px 12px 26px rgba(0, 0, 0, 0.12);
}
.qa-design:where(.intelligence-page) .qa-fgrid .qa-fnode:hover h3 {
  color: var(--brand);
}
/* What sets it apart: Quick Append's "Privacy and security" icon grid */
.qa-design .qa-trust-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 40px;
  margin: 36px 0 0;
}
.qa-design .qa-trust-item {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  grid-template-rows: 48px auto;
  align-items: center;
  align-content: start;
  column-gap: 14px;
  padding-top: 22px;
  border-top: 1px solid var(--line);
}
.qa-design .qa-trust-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  color: var(--brand);
  background: #fff;
  border-radius: 50%;
  box-shadow: var(--qa-card-shadow);
}
.qa-design .qa-trust-item h3 {
  margin: 0;
  color: var(--qa-navy);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.3;
}
.qa-design:where(.geotribes-page) .qa-trust-item h3 a {
  color: inherit;
  text-decoration: none;
}
.qa-design:where(.geotribes-page) .qa-trust-item h3 a:hover {
  color: var(--brand);
}
.qa-design section .qa-trust-item p {
  grid-column: 1/-1;
  margin: 14px 0 0;
  color: var(--muted);
  font-size: 14.4px;
  line-height: 1.55;
}
/* Numbered rows (Quick Append's application lists): Human Insights dimensions and the simulation tabs */
.qa-design .qa-role-item {
  display: grid;
  grid-template-columns: 56px minmax(0, 1fr);
  gap: 4px;
  padding: 18px 0;
  border-bottom: 1px solid var(--line);
}
.qa-design .qa-role-item:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}
.qa-design .qa-role-num {
  color: var(--brand);
  font-size: 30.4px;
  font-weight: 400;
  line-height: 1;
}
.qa-design .qa-role-item h4 {
  margin: 2px 0 6px;
  color: var(--qa-navy);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.6;
}
.qa-design section .qa-role-item p {
  max-width: 46em;
  margin: 0;
  color: var(--muted);
  font-size: 15.2px;
  line-height: 1.55;
}
.qa-design:where(.geotribes-page) .qa-feature {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 40px;
  margin-top: 40px;
  padding: 30px 36px;
  background: #fff;
  border: 1px solid var(--line);
  border-left: 4px solid var(--brand);
  border-radius: 4px;
  box-shadow: var(--qa-card-shadow);
}
.qa-design:where(.geotribes-page) .qa-feature h3 {
  margin: 0 0 10px;
  color: var(--qa-navy);
  font-size: 20.8px;
  font-weight: 500;
  line-height: 1.3;
}
.qa-design:where(.geotribes-page) section .qa-feature-text p {
  margin: 0;
  color: var(--ink);
  font-size: 16px;
  line-height: 1.6;
}
.qa-design:where(.geotribes-page) .qa-feature-points > div {
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
}
.qa-design:where(.geotribes-page) .qa-feature-points > div:first-child {
  padding-top: 0;
}
.qa-design:where(.geotribes-page) .qa-feature-points > div:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}
.qa-design:where(.geotribes-page) .qa-feature-points h4 {
  margin: 0 0 4px;
  color: var(--qa-navy);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.4;
}
.qa-design:where(.geotribes-page) section .qa-feature-points p {
  margin: 0;
  color: var(--muted);
  font-size: 15.2px;
  line-height: 1.55;
}
.qa-design:where(.geotribes-page) .qa-dl-head {
  margin: 0 0 14px;
  color: var(--qa-navy);
  font-size: 20.8px;
  font-weight: 500;
  line-height: 1.25;
}
.qa-design:where(.geotribes-page) .qa-dl-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  max-width: 880px;
}
.qa-design:where(.geotribes-page) a.qa-dl-item {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  color: var(--qa-navy);
  text-decoration: none;
  background: var(--qa-cream);
  border: 1px solid transparent;
  border-radius: 4px;
  transition: border-color 0.2s, background 0.2s;
}
.qa-design:where(.geotribes-page) a.qa-dl-item:hover,
.qa-design:where(.geotribes-page) a.qa-dl-item:focus-visible {
  color: var(--qa-navy);
  background: #fff;
  border-color: var(--brand);
}
.qa-design:where(.geotribes-page) .qa-dl-icon {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  color: var(--brand);
  background: #fff;
  border-radius: 50%;
}
.qa-design:where(.geotribes-page) .qa-dl-title {
  flex: 1;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.3;
}
.qa-design:where(.geotribes-page) .qa-dl-meta {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 6px;
  color: var(--brand);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.1em;
}
.qa-design:where(.geotribes-page) .qa-demo h2.qa-subhead {
  margin: 0 0 12px;
}
/* Human Insights: dimensions and note on the left, the example panel on the right */
/* Panels: a white card with the brick edge */
.qa-design:where(.intelligence-page) aside.panel {
  margin-top: 28px;
  padding: 24px 28px;
  background: #fff;
  border: 1px solid var(--line);
  border-left: 4px solid var(--brand);
  border-radius: 4px;
  box-shadow: var(--qa-card-shadow);
}
.qa-design:where(.intelligence-page) section aside.panel p {
  margin: 0;
  color: var(--qa-navy);
  font-size: 16px;
  line-height: 1.6;
}
.qa-design:where(.intelligence-page) section aside.panel p b {
  color: var(--brand);
  font-weight: 600;
}
.qa-design:where(.intelligence-page) .qa-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 34px;
  margin-top: 30px;
}
.qa-design:where(.intelligence-page) .qa-option {
  padding: 28px 34px 30px;
  background: #fff;
  border: 1px solid var(--line);
  border-left: 4px solid var(--brand);
  border-radius: 4px;
  box-shadow: var(--qa-card-shadow);
}
.qa-design:where(.intelligence-page) .qa-option h3 {
  margin: 0 0 10px;
  color: var(--qa-navy);
  font-size: 20.8px;
  font-weight: 500;
  line-height: 1.3;
}
.qa-design:where(.intelligence-page) section .qa-option p {
  margin: 0;
  color: var(--muted);
  font-size: 15.2px;
  line-height: 1.6;
}
/* Buyer Simulation Suite: Quick Append's "How it works" flow, the last step highlighted as on Quick Append */
.qa-design:where(.intelligence-page) .qa-flow {
  display: flex;
  align-items: stretch;
  margin: 30px 0 6px;
}
.qa-design:where(.intelligence-page) .qa-flow .qa-fnode {
  flex: 1 1 0;
  min-width: 0;
  padding: 18px 16px 16px;
  text-align: center;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 4px;
  box-shadow: var(--qa-card-shadow);
}
.qa-design:where(.intelligence-page) .qa-flow .qa-fnode .num {
  display: inline-block;
  width: 26px;
  height: 26px;
  margin-bottom: 8px;
  color: var(--brand);
  background: var(--qa-cream);
  border-radius: 50%;
  font-size: 13.6px;
  font-weight: 700;
  line-height: 26px;
}
.qa-design:where(.intelligence-page) .qa-flow .qa-fnode h3 {
  margin: 0 0 6px;
  color: var(--qa-navy);
  font-size: 17px;
  font-weight: 600;
  line-height: 1.3;
}
.qa-design:where(.intelligence-page) section .qa-flow .qa-fnode p {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.45;
}
.qa-design:where(.intelligence-page) .qa-flow .qa-fnode.key {
  background: var(--qa-cream);
  border: 1.5px solid var(--brand);
}
.qa-design:where(.intelligence-page) .qa-flow .qa-fnode.key .num {
  color: #fff;
  background: var(--brand);
}
.qa-design:where(.intelligence-page) .qa-flow + .section-note {
  margin-top: 32px;
}
.qa-design:where(.intelligence-page) .qa-farrow {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 8px;
  color: var(--brand);
  font-size: 17.6px;
  font-weight: 700;
}
/* Popular simulations: Quick Append's application tabs and detail panel */
.qa-design .qa-roles {
  display: grid;
  grid-template-columns: 300px minmax(0, 1fr);
  align-items: stretch;
  margin-top: 30px;
}
.qa-design .qa-role-tabs {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 0 0 8px;
}
.qa-design .qa-role-tab {
  all: unset;
  position: relative;
  display: block;
  box-sizing: border-box;
  padding: 16px 22px 16px 20px;
  border-radius: 4px 0 0 4px;
  cursor: pointer;
  transition: background 0.2s;
}
.qa-design .qa-role-tab:hover {
  background: rgba(247, 245, 241, 0.8);
}
.qa-design .qa-role-tab:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: -2px;
}
.qa-design .qa-role-name {
  display: block;
  margin-bottom: 3px;
  color: var(--muted);
  font-size: 18.4px;
  line-height: 1.6;
  transition: color 0.2s;
}
.qa-design .qa-role-desc {
  display: block;
  color: #6b6560;
  font-size: 14px;
  line-height: 1.4;
}
/* Paragraph text in Sofia Pro Light (300), as it renders on the Quick Append page, whose only font face is Sofia Pro Light */
.qa-design .qa-role-desc {
  font-weight: 300;
}
.qa-restyle:where(.geotribes-page) .pp-cta b {
  font-weight: 600;
}
.qa-design .qa-role-tab.is-active {
  background: #fff;
  box-shadow: -2px 4px 14px rgba(0, 0, 0, 0.05);
}
.qa-design .qa-role-tab.is-active .qa-role-name {
  color: var(--qa-navy);
  font-weight: 600;
}
.qa-design .qa-role-tab.is-active::after {
  content: "";
  position: absolute;
  left: 0;
  top: 14px;
  bottom: 14px;
  width: 3px;
  border-radius: 2px;
  background: var(--brand);
}
.qa-design .qa-role-panels {
  padding: 30px 36px;
  background: #fff;
  border-radius: 0 4px 4px 4px;
  box-shadow: var(--qa-card-shadow);
}
.qa-design .qa-roles.js-tabs .qa-role-panels {
  display: grid;
}
.qa-design .qa-roles.js-tabs .qa-role-panel {
  grid-area: 1/1;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.25s ease, visibility 0s linear 0.25s;
}
.qa-design .qa-roles.js-tabs .qa-role-panel.is-active {
  visibility: visible;
  opacity: 1;
  transition: opacity 0.25s ease, visibility 0s;
}
.qa-design .qa-roles:not(.js-tabs) .qa-role-panel + .qa-role-panel {
  margin-top: 28px;
}
.qa-design section p.qa-role-for {
  margin: 0 0 6px;
  color: var(--brand);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.14em;
  line-height: 1.6;
  text-transform: uppercase;
}
.qa-design:where(.intelligence-page) .qa-roles + .section-note {
  margin-top: 24px;
}
/* Who uses it: label and headline in the text column */
.qa-design:where(.intelligence-page) .split .qa-lead-sub {
  margin-bottom: 14px;
}
/* Message us: Quick Append's "Book a Demo" section */
.qa-design:where(.intelligence-page) section h2.qa-subhead {
  margin: 0 0 12px;
  color: var(--qa-navy);
  font-size: 29.6px;
  font-weight: 400;
  line-height: 1.25;
}
.qa-design .qa-demo .call-big {
  color: var(--muted);
}
.qa-design .qa-demo .call-big a {
  color: var(--ink);
}
@media (prefers-reduced-motion: reduce) {
  .qa-design:where(.geotribes-page) .qa-fnode,
  .qa-design:where(.geotribes-page) .qa-roles .qa-role-panel {
    transition: none;
  }
  .qa-design:where(.geotribes-page) .qa-fnode:hover {
    transform: none;
  }
  .qa-design:where(.intelligence-page) .qa-fgrid .qa-fnode,
  .qa-design:where(.intelligence-page) .qa-roles .qa-role-panel {
    transition: none;
  }
  .qa-design:where(.intelligence-page) .qa-fgrid .qa-fnode:hover {
    transform: none;
  }
}
@media (max-width: 991px) {
  .qa-design .qa-fgrid,
  .qa-design .qa-trust-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .qa-design:where(.intelligence-page) .qa-fgrid.qa-fgrid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
  }
  .qa-design:where(.intelligence-page) .split .fig.crop-right {
    max-width: 600px;
  }
}
@media (max-width: 880px) {
  .qa-design:where(.intelligence-page) .qa-fgrid.qa-fgrid-3 {
    grid-template-columns: minmax(0, 1fr);
    gap: 26px;
  }
  .qa-design:where(.intelligence-page) .qa-flow {
    flex-direction: column;
  }
  .qa-design:where(.intelligence-page) .qa-farrow {
    padding: 4px 0;
    transform: rotate(90deg);
  }
  .qa-design:where(.intelligence-page) .qa-options {
    grid-template-columns: minmax(0, 1fr);
    gap: 26px;
  }
  .qa-design:where(.intelligence-page) .qa-option {
    padding: 24px 22px;
  }
  .qa-design .qa-roles {
    grid-template-columns: minmax(0, 1fr);
  }
  .qa-design .qa-role-tabs {
    flex-direction: row;
    gap: 8px;
    padding: 0 0 12px;
    overflow-x: auto;
  }
  .qa-design .qa-role-tab {
    flex: 0 0 auto;
    padding: 9px 16px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid var(--line);
    border-radius: 999px;
  }
  .qa-design .qa-role-tab.is-active {
    background: var(--qa-navy);
    border-color: var(--qa-navy);
    box-shadow: none;
  }
  .qa-design .qa-role-tab.is-active .qa-role-name {
    color: #fff;
  }
  .qa-design .qa-role-tab.is-active::after,
  .qa-design .qa-role-desc {
    display: none;
  }
  .qa-design .qa-role-name {
    margin: 0;
    font-size: 15.2px;
  }
  .qa-design .qa-role-panels {
    padding: 22px 20px;
    border-radius: 4px;
  }
  .qa-design .qa-role-item {
    grid-template-columns: 42px minmax(0, 1fr);
  }
  .qa-design .qa-role-num {
    font-size: 24px;
  }
  .qa-design:where(.geotribes-page) .qa-feature {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
    padding: 24px 22px;
  }
}
@media (max-width: 700px) {
  .qa-design:where(.geotribes-page) .qa-dl-list {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (max-width: 600px) {
  .qa-design .qa-fgrid,
  .qa-design .qa-trust-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 26px;
  }
}
.qa-restyle .qa-subhead {
  margin: 28px 0 10px;
  color: #15202b;
  font-size: 29.6px;
  font-weight: 400;
  line-height: 1.25;
}
.qa-restyle .qa-subhead.qa-subhead-gap {
  margin: 40px 0 12px;
}
.qa-restyle .qa-measure {
  max-width: 857px;
}
.qa-restyle section p.qa-measure-strong {
  color: #15202b;
  font-size: 16.48px;
  font-weight: 300;
  line-height: 1.6;
}
.qa-restyle .qa-hs {
  display: grid;
  grid-template-columns: 360px minmax(0, 1fr);
  grid-template-rows: auto auto;
  margin: 6px 0 26px;
  align-items: start;
}
.qa-restyle .qa-hs-stack {
  position: relative;
  grid-column: 1;
  grid-row: 1/span 2;
  width: 360px;
  height: 604px;
}
.qa-restyle .qa-hs-svg {
  display: block;
  width: 360px;
  height: 590px;
  font-family: inherit;
}
.qa-restyle .qa-hs-cap {
  position: absolute;
  left: 0;
  color: var(--muted);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
}
.qa-restyle .qa-hs-cap.top {
  top: 6px;
}
.qa-restyle .qa-hs-cap.bottom {
  top: 570px;
}
.qa-restyle .qa-hs-layers {
  display: grid;
  grid-column: 2;
  grid-row: 1;
  grid-template-rows: repeat(4, 92px) auto;
  align-items: center;
  padding-top: 58px;
}
.qa-restyle .qa-hs-layer {
  --c: #a9342c ;
  padding: 10px 16px 11px 15px;
  background: #fff;
  border: 1px solid var(--line);
  border-left: 4px solid var(--c);
  border-radius: 0 4px 4px 0;
  box-shadow: 2px 4px 14px rgba(0, 0, 0, 0.08);
}
.qa-restyle .qa-hs-layer.l1 {
  --c: #a9342c ;
  align-self: start;
  margin-top: 12px;
}
.qa-restyle .qa-hs-layer.l2 {
  --c: #bf4f44 ;
}
.qa-restyle .qa-hs-layer.l3 {
  --c: #d2766b ;
}
.qa-restyle .qa-hs-layer.l4 {
  --c: #e3a198 ;
}
.qa-restyle .qa-hs-layer.l5 {
  --c: #ebbab2 ;
}
.qa-restyle .qa-hs-head {
  display: flex;
  align-items: center;
  gap: 10px;
}
.qa-restyle .qa-hs-num {
  color: var(--c);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.05em;
  line-height: 22.4px;
}
.qa-restyle .qa-hs-layer.l5 .qa-hs-num {
  color: #c0675c;
}
.qa-restyle .qa-hs-layer h4 {
  margin: 0;
  color: #15202b;
  font-size: 17px;
  font-weight: 600;
  line-height: 1.3;
}
.qa-restyle .qa-hs-layer p {
  margin: 3px 0 0;
  color: var(--ink);
  font-size: 14.08px;
  font-weight: 300;
  line-height: 1.45;
}
.qa-restyle .qa-dp {
  position: relative;
  cursor: help;
  outline: none;
  white-space: nowrap;
}
.qa-restyle .qa-dp-i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 13px;
  height: 13px;
  margin-left: 4px;
  border: 1px solid #a9b1b7;
  border-radius: 50%;
  color: #6b747b;
  font: italic 600 9px/1 Georgia, serif;
  vertical-align: 1px;
}
.qa-restyle .qa-dp:hover .qa-dp-i,
.qa-restyle .qa-dp:focus .qa-dp-i {
  border-color: #a9342c;
  color: #a9342c;
}
.qa-restyle .qa-tip {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 9px);
  z-index: 40;
  width: max-content;
  max-width: 280px;
  padding: 8px 11px;
  background: #15202b;
  color: #fff;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.45;
  text-align: left;
  white-space: normal;
  border-radius: 4px;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateX(-50%);
  transition: opacity 0.12s ease;
}
.qa-restyle .qa-tip::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 100%;
  margin-left: -6px;
  border: 6px solid transparent;
  border-top-color: #15202b;
}
.qa-restyle .qa-dp:hover .qa-tip,
.qa-restyle .qa-dp:focus .qa-tip {
  opacity: 1;
  visibility: visible;
}
@media (max-width: 991px) {
  .qa-restyle .qa-hs {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: none;
  }
  .qa-restyle .qa-hs-stack {
    display: none;
  }
  .qa-restyle .qa-hs-layers {
    position: relative;
    grid-column: 1;
    grid-row: auto;
    grid-template-rows: none;
    gap: 10px;
    padding: 22px 0 0 26px;
  }
  .qa-restyle .qa-hs-layer.l1 {
    margin-top: 0;
  }
  .qa-restyle .qa-hs-layers::before {
    content: "";
    position: absolute;
    left: 7px;
    top: 6px;
    bottom: 30px;
    width: 2px;
    background: linear-gradient(0deg, #a9342c, #f1cdc6);
  }
  .qa-restyle .qa-hs-layers::after {
    content: "";
    position: absolute;
    left: 2px;
    top: 0;
    border-bottom: 10px solid #f1cdc6;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
  }
}
@media (max-width: 600px) {
  .qa-restyle .qa-hs-layer {
    position: relative;
  }
  .qa-restyle .qa-dp {
    position: static;
  }
  .qa-restyle .qa-tip {
    left: 10px;
    right: 10px;
    bottom: calc(100% - 6px);
    width: auto;
    max-width: none;
    transform: none;
  }
  .qa-restyle .qa-tip::after {
    display: none;
  }
}
@media (max-width: 575px) {
  .qa-restyle .qa-hs-layers {
    padding-left: 20px;
  }
  .qa-restyle .qa-hs-layers::before {
    left: 4px;
  }
  .qa-restyle .qa-hs-layers::after {
    left: -1px;
  }
}
/* Global `button:focus` (_custom.scss) forces `border-radius: 0 !important` and a 1px
   black outline, squaring a tab the moment it is clicked. Focused tabs keep their own
   shape; mouse focus drops the black ring (mockup has none); keyboard focus keeps the
   mockup's brand ring. !important only because the global rule carries it. */
.qa-design .qa-role-tab:focus {
  border-radius: 4px 0 0 4px !important;
}
.qa-design .qa-role-tab:focus:not(:focus-visible) {
  outline: none !important;
}
.qa-design .qa-role-tab:focus-visible {
  outline: 2px solid var(--brand) !important;
}
/* Site fix over the generated layer (mockup scrolls its pill tabs sideways): on phones
   the three tab pills share one row and wrap their captions instead of pushing the
   third pill off screen. Pills shrink only down to their longest word. At <=700px
   pills share the row equally at one 44px height and type, padding and gap trim, so
   no caption passes two lines and each pill stays at least twice as wide as tall
   (capsule, not oval) from 360px up (measured on site font metrics). */
@media (max-width: 880px) {
  .qa-design .qa-role-tab {
    display: flex;
    flex: 0 1 auto;
    align-items: center;
    justify-content: center;
    text-align: center;
  }
  /* focused pill keeps its capsule shape (focus block above) */
  .qa-design .qa-role-tab:focus {
    border-radius: 999px !important;
  }
  .qa-design .qa-role-name {
    text-wrap: balance;
  }
  /* tab panels share one grid cell (generated layer), so the box keeps the
     tallest panel's height; narrow text wraps more, leaving a blank band under
     shorter panels. Here only the active panel takes space */
  .qa-design .qa-roles.js-tabs .qa-role-panel:not(.is-active) {
    display: none;
  }
}
@media (max-width: 700px) {
  .qa-design .qa-role-tabs {
    gap: 4px;
  }
  .qa-design .qa-role-tab {
    flex: 1 1 0;
    min-block-size: 44px;
    padding: 6px 8px;
  }
  .qa-design .qa-role-name {
    font-size: 12.8px;
    line-height: 1.15;
  }
}
/* Phones (<=575px): every page button spans the content width, section gutters kept
   (restyled .qa-restyle sections 24px a side). Buttons sharing a CTA row stack one per
   line; hero CTA, inline contact form Send, Home hero CTA and Home Blog "See more"
   stretch alone. Postcode FIND stays inside its input row. */
@media (max-width: 575px) {
  .qa-restyle .cta-row > .rda_btn,
  .qa-restyle .cta-row > .btn-outline {
    flex: 1 1 100%;
    text-align: center;
  }
  .qa-restyle .hero-tag-row .rda_btn,
  .qa-restyle #contact .rda_btn,
  .home-banner-wrap .cta-button-wrap .cta-button,
  #rdanews_wrap .btn-outline,
  #myContactModal .modal-footer .rda_btn {
    display: block;
    inline-size: 100%;
    text-align: center;
  }
  /* Home hero sits outside .qa-restyle wrapper (no section gutter): button row
     padded 24px a side like restyled sections, so "Talk to us" keeps page margin
     instead of running edge to edge */
  .home-banner-wrap .cta-button-wrap {
    padding-inline: 24px;
  }
  /* contact page form and Talk to us popup (same modal markup, both #myContactModal): footer sits 1rem
     less inset than body fields, so Send keeps 1rem side margin, lining up with
     inputs. Width explicit: a <button> with auto width stays fit-content even as
     block. #id selector beats base .rda_btn{width:max-content} */
  #myContactModal .modal-footer .rda_btn {
    inline-size: calc(100% - 2rem);
    margin-inline: 1rem;
  }
}
/* stacked: restyled pages wrapped in legacy .page-content div (explorer, geosmart,
   consumer-data) drop its 4rem bottom padding, else footer gap runs 40px taller
   than on other restyled pages. div only: contact page's section carries the class */
@media (width <= 980px) {
  div.qa-restyle.page-content {
    padding-block-end: 0;
  }
}