/* Shared Gothic A1 hierarchy. Component roles remain explicit so utility,
   navigation and meta text do not inherit body-copy treatments accidentally. */
.rh-page {
  --type-h1: clamp(2.5rem, 4.7vw, 5rem);
  --type-h2: clamp(2rem, 3.6vw, 3.75rem);
  --type-h3: clamp(1.25rem, 1.5vw, 1.55rem);
  --type-body: clamp(1rem, .2vw + .96rem, 1.0625rem);
  --type-supporting: .875rem;
  --type-navigation: .8125rem;
  --type-utility: .7rem;
  --type-eyebrow: .73rem;
  --type-meta: .75rem;
  overflow-x: clip;
  font-size: var(--type-body);
  font-weight: 400;
  line-height: 1.72;
}

.rh-page main,
.rh-page section,
.rh-page [class*="__grid"] > * { min-width: 0; }

.rh-page h1,
.rh-inner-page .hero h1 {
  max-width: 920px;
  margin-bottom: clamp(20px, 2.5vw, 30px);
  font-size: var(--type-h1);
  font-weight: 800;
  letter-spacing: -.038em;
  line-height: 1.02;
  text-wrap: balance;
}

.rh-page h2,
.rh-inner-page .section-title,
.rh-inner-page .contact-card h2 {
  font-size: var(--type-h2);
  font-weight: 800;
  letter-spacing: -.035em;
  line-height: 1.06;
  text-wrap: balance;
}

.rh-page h3,
.rh-inner-page .card > h3,
.sp-capabilities article h3,
.rh-process h3 {
  font-size: var(--type-h3);
  font-weight: 700;
  letter-spacing: -.018em;
  line-height: 1.2;
  text-wrap: balance;
}

/* Body and supporting copy */
.rh-hero__lead,
.sp-hero__inner > p:not(.rh-eyebrow),
.sp-intro__grid > div > p:not(.rh-eyebrow),
.sp-story__grid > div > p:not(.rh-eyebrow),
.rh-about__copy .rh-intro,
.rh-inner-page .hero p,
.rh-inner-page .content-section p,
.rh-inner-page .mosaic-copy p,
.rh-inner-page .card p,
.rh-inner-page .media-copy > .copy > p {
  max-width: 72ch;
  font-size: var(--type-body);
}

.rh-service p,
.sp-service-card p,
.rh-why article p,
.rh-process li p,
.rh-heading > p,
.sp-heading > p,
.sp-contact__grid span {
  font-size: var(--type-supporting);
}

/* Footer type roles: one size for every navigation and contact action. */
.rh-footer__brand p {
  font-size: var(--type-supporting);
}

.rh-footer nav strong,
.rh-footer__contact > strong,
.rh-footer nav a,
.rh-footer__contact a {
  font-size: var(--type-navigation);
  line-height: 1.5;
}

.rh-footer__bottom p,
.rh-footer__bottom a {
  font-size: var(--type-meta);
  line-height: 1.5;
}

/* Restrained branded labels */
.rh-eyebrow {
  font-size: var(--type-eyebrow);
  font-weight: 800;
  letter-spacing: .15em;
  line-height: 1.4;
  text-transform: uppercase;
}

/* Header and navigation roles */
.rh-utility__inner,
.rh-utility__inner p,
.rh-utility__inner span,
.rh-utility__inner a {
  font-family: "Gothic A1", sans-serif;
  font-size: var(--type-utility);
  font-style: normal;
  font-weight: 800;
  letter-spacing: .08em;
  line-height: 1.25;
  text-transform: uppercase;
}

.rh-utility__inner > p,
.rh-utility__inner > div,
.rh-utility__inner > div > span,
.rh-utility__inner > div > a {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
}

.rh-navigation > a,
.rh-dropdown > button,
.rh-button,
.rh-text-link,
.rh-form label > span,
.rh-form button {
  font-size: var(--type-navigation);
  font-weight: 600;
  letter-spacing: .01em;
  text-transform: none;
}

.rh-dropdown__panel strong {
  font-size: var(--type-navigation);
  font-weight: 600;
  line-height: 1.4;
}

.rh-dropdown__panel small {
  font-size: var(--type-meta);
  line-height: 1.45;
}

/* Component-specific communication roles */
.rh-review-slider blockquote {
  font-size: clamp(1.15rem, 2vw, 1.65rem);
  font-weight: 500;
  line-height: 1.55;
}

.rh-review-slider figcaption,
.rh-google strong,
.rh-reviews__project strong,
.rh-form .form-note,
.rh-form .consent,
.rh-form .consent span,
.sp-enquiry__grid small {
  font-size: var(--type-meta);
}

.rh-review-slider figcaption span,
.rh-google small,
.rh-reviews__project span {
  font-size: var(--type-utility);
}

.rh-form input,
.rh-form textarea,
.sp-contact__grid strong,
.rh-enquiry__routes strong,
.rh-form__head strong {
  font-size: var(--type-body);
}

.rh-trust strong,
.rh-project strong,
.sp-contact__grid strong { font-weight: 700; }

@media (max-width: 1100px) {
  .rh-page { --type-h1: clamp(2.5rem, 6.2vw, 4.45rem); }
}

@media (max-width: 900px) {
  .rh-navigation { overscroll-behavior: contain; }

  .rh-navigation > a,
  .rh-dropdown > button,
  .rh-header.is-scrolled .rh-navigation > a,
  .rh-header.is-scrolled .rh-dropdown > button {
    display: flex;
    min-height: 52px;
    align-items: center;
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.35;
  }

  .rh-dropdown__panel a {
    min-height: 64px;
    justify-content: center;
    padding: 12px 10px;
  }

  .rh-dropdown__panel strong {
    font-size: .9375rem;
    font-weight: 600;
    line-height: 1.35;
  }

  .rh-dropdown__panel small {
    font-size: .8125rem;
    line-height: 1.4;
  }
}

@media (max-width: 760px) {
  .rh-page {
    --type-h1: clamp(2.2rem, 10vw, 3.5rem);
    --type-h2: clamp(1.85rem, 7.6vw, 2.65rem);
    --type-h3: 1.25rem;
    --type-body: 1rem;
    line-height: 1.68;
  }

  .rh-page h1,
  .rh-inner-page .hero h1 {
    max-width: 18ch;
    letter-spacing: -.032em;
    line-height: 1.05;
  }

  .rh-page h2,
  .rh-inner-page .section-title,
  .rh-inner-page .contact-card h2 { line-height: 1.1; }

  .rh-home-page .rh-hero h1 { max-width: 19ch; }
  .sp-hero h1 { max-width: 17ch; }

  .rh-navigation {
    width: 100%;
    max-width: 420px;
    padding: 16px 20px 28px;
  }

  .rh-navigation > a,
  .rh-dropdown > button,
  .rh-header.is-scrolled .rh-navigation > a,
  .rh-header.is-scrolled .rh-dropdown > button { padding: 14px 5px; }

  .rh-dropdown__panel a { padding: 12px 8px; }
  .rh-form input,
  .rh-form textarea,
  .rh-form button { min-height: 48px; }
}
