/* Independent scales: 390–1440px preserves the approved visual hierarchy.
   rem bounds respect browser font preferences; vw only interpolates between them. */
:root {
  --text-body: clamp(1rem, .977rem + .095vw, 1.125rem);
  --text-list: clamp(1.0625rem, 1.039rem + .095vw, 1.25rem);
  --text-label: clamp(.9375rem, .914rem + .095vw, 1.0625rem);
  --text-display: clamp(2rem, 1.629rem + 1.524vw, 4rem);
  --text-section: clamp(1.875rem, 1.689rem + .762vw, 3rem);
  --text-card: clamp(1.25rem, 1.157rem + .381vw, 1.875rem);
  --text-action: clamp(1rem, .814rem + .762vw, 1.75rem);
  --text-menu-contact: clamp(1.0625rem, 1rem + .2vw, 1.25rem);
  --text-request: clamp(1.125rem, 1.0785rem + .1905vw, 1.375rem);
  --space-section: clamp(4.5rem, 2.457rem + 8.381vw, 12rem);
  --space-content: clamp(3rem, .214rem + 11.43vw, 12rem);
  --space-gap: clamp(1.5rem, 1.314rem + .762vw, 2.5rem);
  --page-gutter: clamp(1.25rem, 1.018rem + .952vw, 3rem);
  --page-inset: max(var(--page-gutter), calc((100% - 120rem) / 2));
  --brand-width: clamp(11.25rem, 8.55rem + 3vw, 14.25rem);
  --brand-gap: clamp(1.5rem, 8vw, 8rem);
  --header-gap: clamp(1.5rem, 3vw, 4rem);
  --header-height: 4.625rem;
}
body { font-size: var(--text-body); }
/* Header measures its own content rather than borrowing the remaining width. */
.site-header .header-bar {
  gap: var(--brand-gap);
  min-height: var(--header-height);
  padding: .9375rem var(--page-inset);
  flex-wrap: nowrap;
}
.site-header .header-brand.layout { flex: 0 1 var(--brand-width); width: var(--brand-width); }
.site-header-bar .brand-mark svg, .header-brand .site-logo { width: 100%; height: auto; }
.site-header .header-actions { width: auto; flex: 1 1 auto; gap: var(--header-gap); flex-wrap: nowrap; }
.site-header .header-navigation { padding: 0; width: auto; flex: 1 1 auto; }
.site-header .header-navigation .nav-list { width: 100%; justify-content: space-between; gap: clamp(1rem, 1.9vw, 2.75rem); }
.site-header .header-navigation .nav-list > li { margin: 0; flex: 0 0 auto; }
.site-header .header-navigation .nav-list > li > a { font-size: clamp(.875rem, .65rem + .25vw, 1rem); }
.site-header .header-navigation .nav-list > li:not(.phone-link) > a { max-width: 10.5em; }
.site-header .header-navigation .phone-link > a { white-space: nowrap; padding: .375rem 1rem; }
.site-header .menu-control { flex: none; }
.site-header .menu-control .menu-open { width: 2.75rem; height: 2.75rem; padding: .75rem; font-size: 1rem; justify-content: center; }
@media (max-width: 79.999rem) { .site-header .header-navigation { display: none; } }
/* Full-width backgrounds remain full width; their content has bounded insets. */
:is(.page-home, .page-production, .page-smoke, .page-ventilation) .hero {
  min-height: 100svh;
  padding-inline: var(--page-inset);
  padding-top: calc(var(--header-height) + 2.5rem);
}
:is(.page-home, .page-production, .page-smoke, .page-ventilation) .hero-main {
  gap: var(--space-gap);
  margin-bottom: clamp(3rem, .214rem + 6.429vw, 7rem);
}
.site-main .hero-primary-heading { max-width: 22ch; }
.site-main :is(.hero-guarantees, .intro-copy-heading-2, .service-item-description) { line-height: 1.5; }
.hero-guarantees ul { padding: clamp(1.25rem, 1.02rem + .952vw, 2.5rem); }
.services-summary ul { margin-inline: calc(-1 * var(--page-inset)); padding-inline: var(--page-inset); }
.site-main .hero-facts ul { padding-left: 1.5em; }
.site-main .rich-text { font-size: var(--text-body); }
.site-main .certificate-gallery { margin-bottom: var(--space-content); }
.site-main .section-heading { max-width: min(100%, 64rem); }
.site-main .clients-section-section-heading { width: min(100%, 38rem); max-width: 100%; }
.site-main .project-card .project-content { min-height: clamp(8rem, 3.5rem + 10vw, 14rem); }
.site-main .project-card .project-description { max-width: 65ch; }
.site-main .clients-section .client-logos.logo-list {
  column-gap: clamp(1.5rem, .8rem + 3vw, 4rem);
  row-gap: clamp(4.5rem, 2rem + 7vw, 10rem);
  padding-right: 0;
  padding-bottom: clamp(4.5rem, 2rem + 7vw, 10rem);
}
/* Listing-page heroes retain their scroll effect while allowing enlarged text. */
:is(.page-projects, .page-certificates) { --listing-height: max(65svh, 21rem); }
:is(.page-projects, .page-certificates) .hero {
  min-height: var(--listing-height);
  padding: calc(var(--header-height) + 2rem) var(--page-inset) 2.8125rem;
}
:is(.page-projects, .page-certificates) .intro-copy { width: min(100%, 70rem); }
:is(.page-projects, .page-certificates) .intro-copy-heading-2 { max-width: 65ch; padding-right: 0; }
:is(.page-projects, .page-certificates) .projects-section {
  margin-top: var(--listing-height);
  padding-inline: var(--page-inset);
  padding-top: clamp(3.75rem, 2rem + 4vw, 6rem);
}
.page-contact .hero { padding: 0 var(--page-inset) clamp(3rem, 2rem + 4vw, 6rem); }
.page-contact .contact-overview { padding-top: calc(var(--header-height) + var(--space-section) / 2); gap: var(--space-gap); }
.page-contact :is(.contact-phone-section-heading, .contact-email-section-heading, .contact-address-section-heading) .section-title { font-size: var(--text-card); }
:is(.page-privacy, .page-data-policy, .page-consent) .legal-body { padding: calc(var(--header-height) + 2rem) var(--page-inset) 3.75rem; }
:is(.page-privacy, .page-data-policy, .page-consent) .legal-body-rich-text { max-width: 75ch; }
:is(.page-privacy, .page-data-policy, .page-consent) main h1 { font-size: var(--text-display); }
.site-footer .footer-grid { padding-inline: var(--page-inset); }
.site-footer :is(.footer-copy, .footer-links a) { font-size: clamp(.75rem, .727rem + .095vw, .875rem); }
/* The existing menu appearance, map and right-hand animation are unchanged. */
.mega-menu-content .menu-columns { gap: var(--space-gap); }
.mega-menu-content .menu-navigation .nav-list > li > a { font-size: clamp(2rem, 1.8rem + .7vw, 3rem); }
.mega-menu-content .section-title { font-size: clamp(1.0625rem, 1rem + .2vw, 1.25rem); }
.mega-menu-content .section-eyebrow { font-size: var(--text-label); }
/* The calculator retains compact engineering controls and scrollable tables. */
.duct-page { padding: calc(var(--header-height) + 4.4375rem) var(--page-gutter) 5rem; }
.duct-page .duct-page__intro h1 { font-size: var(--text-display) !important; }
/* At browser zoom or in a short window, a fixed intro can exceed the viewport. */
@media (max-height: 34rem) {
  :is(.page-projects, .page-certificates) .hero { position: relative; top: auto; }
  :is(.page-projects, .page-certificates) .projects-section { margin-top: 0; }
}
@media (max-width: 63.999rem) {
  :is(.page-home, .page-smoke, .page-ventilation) .hero-main { flex-direction: column; }
  :is(.page-home, .page-smoke, .page-ventilation) :is(.hero-primary, .hero-secondary) { width: 100%; }
  .site-main :is(.licenses-heading, .projects-section-section-heading, .services-section-section-heading) { width: 100%; max-width: 100%; }
  .page-contact .contact-overview { flex-direction: column; }
  .page-contact :is(.contact-intro, .contact-details) { width: 100%; }
}
@media (max-width: 47.999rem) {
  :is(.page-home, .page-production, .page-smoke, .page-ventilation) .hero { padding-top: calc(var(--header-height) + 3rem); }
  :is(.page-home, .page-production, .page-smoke, .page-ventilation) .hero-main { margin-bottom: 0; }
  .hero-guarantees ul { margin-inline: calc(-1 * var(--page-inset)); padding: 3rem var(--page-inset); }
  .services-summary ul { padding-block: 3rem 4.5rem; }
  .site-main .project-card .project-content { min-height: 0; }
  .site-main .project-card .project-description { padding-bottom: 2rem; }
  .site-main .clients-section .client-logos.logo-list { column-gap: 0; }
  .page-certificates main h1 { font-size: var(--text-display) !important; }
  :is(.page-projects, .page-certificates) { --listing-height: max(65svh, 24rem); }
  .page-contact .contact-phone-row { flex-direction: column; gap: 0; }
  .duct-page { padding-top: calc(var(--header-height) + 2rem); padding-bottom: 2.8125rem; }
}
