/* Public heading refinement, 2026-09-23.
   Load after styles.css. Opt-in only; administration and data remain untouched. */
body.headings-update:not(.admin-body) {
  --title-display: clamp(2.625rem, 1.75rem + 3.2vw, 4.5rem);
  --title-section: clamp(2rem, 1.45rem + 2vw, 3rem);
  --title-panel: clamp(1.625rem, 1.2rem + 1.1vw, 2.25rem);
  --title-card: 1.375rem;
  --title-utility: clamp(1.375rem, 1.2rem + .4vw, 1.625rem);
}

body.headings-update:not(.admin-body) :is(h1, h2, h3, h4) {
  font-family: inherit;
  font-style: normal;
  text-transform: none;
  text-wrap: balance;
  word-break: normal;
  overflow-wrap: break-word;
}

/* One display style, with a little more room between lines and letters. */
body.headings-update:not(.admin-body) .hero h1,
body.headings-update:not(.admin-body) .error-main h1 {
  font-size: var(--title-display);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -.04em;
}

/* Section headings share the same scale, weight and vertical rhythm. */
body.headings-update:not(.admin-body) .section-heading h2,
body.headings-update:not(.admin-body) .faq-heading h2,
body.headings-update:not(.admin-body) .contact-grid h2 {
  margin: 0;
  font-size: var(--title-section);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -.035em;
}

body.headings-update:not(.admin-body) .section-heading,
body.headings-update:not(.admin-body) .section-heading.centered {
  margin-bottom: 36px;
}

/* Supporting panels stay visually subordinate to the main sections. */
body.headings-update:not(.admin-body) .use-cases-main .use-cases-heading h2,
body.headings-update:not(.admin-body) .full-service-intro h3 {
  margin: 0;
  font-size: var(--title-panel);
  font-weight: 800;
  line-height: 1.18;
  letter-spacing: -.025em;
}

body.headings-update:not(.admin-body) .use-case-item h3,
body.headings-update:not(.admin-body) .step-card h3,
body.headings-update:not(.admin-body) .full-service-item h4,
body.headings-update:not(.admin-body) .empty-state h3 {
  font-size: var(--title-card);
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -.02em;
}

body.headings-update:not(.admin-body) .also-service-card h4,
body.headings-update:not(.admin-body) .quick-form h3,
body.headings-update:not(.admin-body) .operator-heading h2,
body.headings-update:not(.admin-body) .modal h2 {
  font-size: var(--title-utility);
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -.02em;
}

/* The form is a white card inside a dark section; its heading must stay dark. */
body.headings-update:not(.admin-body) .quick-form h3 {
  margin: 0 0 24px;
  color: var(--ink);
}

body.headings-update:not(.admin-body) .also-service-card h4 {
  margin: 0 0 12px;
}

body.headings-update:not(.admin-body) .operator-heading h2 {
  margin: 0;
  max-width: 100%;
  overflow-wrap: normal;
}

/* The original sale price is kept as supporting copy, not a giant headline.
   Rental amounts remain bound to the existing API-managed elements. */
body.headings-update:not(.admin-body) .pricing-sale-note {
  margin: 20px auto 0;
  color: var(--ink);
  font-size: var(--type-lead, 18px);
  line-height: 1.6;
  text-wrap: balance;
}

body.headings-update:not(.admin-body) .pricing-sale-note strong {
  font-weight: 700;
}

body.headings-update:not(.admin-body) .pricing-heading .section-lead {
  margin: 8px auto 0;
}

/* Existing orange accents remain a single emphasis, never a separate slogan. */
body.headings-update:not(.admin-body) :is(h1, h2, h3, h4) .heading-accent {
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  letter-spacing: inherit;
}

/* Reading pages use the same typographic language at an editorial scale. */
body.headings-update:not(.admin-body) .seo-article-page h1 {
  margin: 0 0 24px;
  font-size: var(--title-section);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -.035em;
}

body.headings-update:not(.admin-body) .seo-article-page h2 {
  margin: 36px 0 12px;
  font-size: var(--title-utility);
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -.02em;
}

@media (max-width: 700px) {
  body.headings-update:not(.admin-body) {
    --title-card: 1.25rem;
  }

  body.headings-update:not(.admin-body) .section-heading,
  body.headings-update:not(.admin-body) .section-heading.centered {
    margin-bottom: 28px;
  }

  body.headings-update:not(.admin-body) .pricing-sale-note {
    margin-top: 16px;
  }

  body.headings-update:not(.admin-body) .full-service-intro > p {
    margin-top: 16px;
  }
}

/* Keep short messages together instead of mixing the question and its answer. */
body.headings-update:not(.admin-body) .contact-grid h2 .heading-accent {
  display: block;
}

body.headings-update:not(.admin-body) .use-cases-main .use-cases-heading h2 {
  max-width: 18ch;
}
