/* Final Public Surface coherence layer.
   Native components own the current design system. Captured Elementor pages
   keep their quarantined layout CSS and receive only shared chrome/action fixes. */

html {
  color-scheme: light only;
}

body.sh-native-page {
  background: var(--colour-cream);
  color: var(--colour-text);
  font-family: var(--font-body);
}

body.sh-native-page :is(h1, h2, h3, h4, h5, h6),
body.sh-native-page :is(button, label, legend),
body .sh-site-header,
body .sh-footer__services,
body .sh-footer__care {
  font-family: var(--font-heading);
}

body .sh-site-header .sh-navbar,
body .sh-footer {
  background: var(--colour-slate-navy) !important;
}

body.sh-native-page :is(.sh-article-hero, .sh-trust-bar, .sh-review-trust, .sh-related-services) * {
  -webkit-text-fill-color: currentcolor;
}

body.sh-native-page .sh-article-hero {
  border-bottom: 1px solid var(--colour-border);
  background: var(--colour-cream);
}

body.sh-native-page .sh-trust-bar :is(.trust-item, .trust-badge) {
  color: var(--colour-charcoal);
}

body.sh-native-page .sh-trust-bar .trust-item svg.trust-icon {
  fill: var(--colour-brand-green);
}

body :is(.sh-navbar__cta, .sh-panel__cta),
body.sh-native-page :is(.sh-inline-cta__button, .sh-page-form__submit, .sh-button),
body.sh-has-captured-page .sh-captured-page :is(.sh-hero-cta, button[type="submit"], input[type="submit"], .ff-btn-submit) {
  min-height: 48px;
  border-color: var(--colour-brand-green);
  border-radius: var(--radius-medium);
  background: var(--colour-brand-green);
  color: var(--colour-white);
  font-family: var(--font-heading);
  font-weight: 600;
}

body :is(.sh-navbar__cta, .sh-panel__cta):hover,
body :is(.sh-navbar__cta, .sh-panel__cta):focus-visible,
body.sh-native-page :is(.sh-inline-cta__button, .sh-page-form__submit, .sh-button):hover,
body.sh-native-page :is(.sh-inline-cta__button, .sh-page-form__submit, .sh-button):focus-visible,
body.sh-has-captured-page .sh-captured-page :is(.sh-hero-cta, button[type="submit"], input[type="submit"], .ff-btn-submit):hover,
body.sh-has-captured-page .sh-captured-page :is(.sh-hero-cta, button[type="submit"], input[type="submit"], .ff-btn-submit):focus-visible {
  border-color: var(--colour-brand-green-dark);
  background: var(--colour-brand-green-dark);
  color: var(--colour-white);
}

body.sh-native-page :is(
  .sh-related__card,
  .sh-related-grid__card,
  .sh-icon-grid__card,
  .sh-faq-list__item,
  .sh-differentiator-grid__card,
  .sh-hub-topics-grid__item,
  .sh-case-card,
  .sh-customer-care__step,
  .sh-customer-care__assurance,
  .sh-sidebar-cta__card
) {
  border: 1px solid var(--colour-border);
  border-radius: var(--radius-large);
  background: var(--colour-white);
  box-shadow: none;
}

body.sh-native-page :is(.sh-related__card, .sh-related-grid__card, .sh-hub-topics-grid__item) {
  border-top: 4px solid var(--colour-stone-blue);
}

body.sh-native-page :is(.sh-page-form, .sh-enquiry__intro, .sh-enquiry__form fieldset, .sh-enquiry__success) {
  border-color: var(--colour-border);
  border-radius: var(--radius-large);
  background: var(--colour-white);
}

body.sh-native-page :is(input, select, textarea) {
  border-color: rgba(74, 74, 74, 0.48);
  border-radius: var(--radius-medium);
  background: var(--colour-white);
  color: var(--colour-text);
}

body.sh-native-page :is(.sh-inline-cta, .sh-page-form) {
  background: var(--colour-white);
}

body.sh-consent-open :is(.sh-floating-contact, .sh-sticky-call) {
  visibility: hidden;
  pointer-events: none;
}

#sh-site :is(a[href], button, input, select, textarea, summary, [tabindex]):focus,
#sh-site :is(a[href], button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid var(--colour-white) !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 5px var(--colour-brand-green) !important;
}

@media (max-width: 400px) {
  body.home.sh-has-captured-page .sh-captured-page .elementor-button.elementor-button-link {
    width: 100%;
    max-width: 100%;
    padding-inline: 16px;
    white-space: normal;
  }


  body.home.sh-has-captured-page .sh-captured-page .elementor-button.elementor-button-link .elementor-button-text {
    white-space: normal !important;
    overflow-wrap: anywhere;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.home.sh-has-captured-page .sh-captured-page *,
  body.home.sh-has-captured-page .sh-captured-page *::before,
  body.home.sh-has-captured-page .sh-captured-page *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-delay: 0s !important;
    transition-duration: 0.01ms !important;
  }
}
