/* CM — scala tipografica condivisa, indipendente dalla variante cromatica.
   Caricare dopo i fogli di composizione: titoli, testo e dettagli hanno ruoli stabili. */
:root {
  --type-hero: clamp(4rem, 5.2vw, 5rem);
  --type-display: clamp(3rem, 4vw, 3.75rem);
  --type-section: clamp(2.5rem, 3.2vw, 3rem);
  --type-card: clamp(1.5rem, 1.9vw, 1.75rem);
  --type-body: 1.125rem;
  --type-lead: 1.25rem;
  --type-ui: 1rem;
  --type-label: .875rem;
}

body { font-size: var(--type-body); line-height: 1.65; }
h2, h3 { text-wrap: balance; }
.page-lead, .prefab-section-heading > p { text-wrap: pretty; }
.hero h1 { font-size: var(--type-hero); line-height: 1.08; letter-spacing: -.045em; }
.page-hero h1, .with-image h1, .page-hero-company h1 {
  font-size: var(--type-display);
  line-height: 1.12;
  letter-spacing: -.04em;
  text-wrap: balance;
}
.manifesto h2, .competences h2, .projects h2,
.projects-heading h2, .inner-page .projects-heading h2,
.method h2, .company h2, .contact h2, .certifications h2,
.solution-intro h2, .portfolio-overview h2, .home-activities-heading h2,
.content-heading h2, .editorial-section .content-heading h2,
.company-fields h2, .page-hero-company + .company-fields h2,
.company-origin h2, .company-outlook h2, .company-mission h2,
.brochure-section h2, .page-next h2 {
  font-size: var(--type-section);
  line-height: 1.16;
  letter-spacing: -.035em;
}
.company-sector h3, .solution-copy h3,
.project h3, .project-secondary h3, .project-tertiary h3, .inner-page .project h3,
.method-steps h3, .certificate-copy h3, .certificate-dialog-heading h3,
.media-group-heading h3, .rfx-heading h3, .brochure-section h3,
.competence-row h3, .prefab-heading h3, .prefab-item h4,
.cm-search-result h2 {
  font-size: var(--type-card);
  line-height: 1.25;
  letter-spacing: -.025em;
}
.dialog-copy h3 { font-size: var(--type-section); line-height: 1.18; letter-spacing: -.035em; }
.sector-select { font-size: var(--type-card); line-height: 1.25; letter-spacing: -.025em; }

/* Stesso ruolo editoriale, stesso corpo in tutte le pagine. */
.hero-lede, .page-lead, .page-hero-company .page-lead,
.company-lede { font-size: var(--type-lead); line-height: 1.65; letter-spacing: 0; }
.content-body, .editorial-section > .content-body,
.content-body p, .content-body li, .cm-entry > p, .cm-entry > .wp-block-paragraph,
.manifesto-copy, .company-columns, .company-origin-copy,
.company-fields-heading > p, .page-hero-company + .company-fields .company-fields-heading > p,
.company-outlook p:not(.eyebrow), .sector-detail > p,
.solution-copy p, .company-sector p, .home-activities .company-sector p, .page-hero-company + .company-fields .company-sector p,
.reading-intro > p:first-child, .reading-detail-copy, .reading-facts,
.section-description, .rfx-heading p:not(.eyebrow), .certificate-copy p,
.dialog-copy > p:not(.eyebrow), .method-heading > p:last-child,
.method-steps p, .brochure-section article p,
.portfolio-overview-intro > p:not(.eyebrow) {
  font-size: var(--type-body);
  line-height: 1.65;
}
.mission-statement { font-size: var(--type-card); line-height: 1.5; letter-spacing: -.02em; }
.company-origins strong, .portfolio-overview-label { font-size: var(--type-card); line-height: 1.3; }
.company-origins span:not(.origin-join) { font-size: var(--type-ui); line-height: 1.6; }
.portfolio-overview-total > strong { font-size: var(--type-display); line-height: 1.1; }
.portfolio-overview-total > span { font-size: var(--type-ui); line-height: 1.5; }

/* Numeri, didascalie e microtesti leggibili: nessuna informazione in corpo 8–11 px. */
.eyebrow, .hero .eyebrow, .section-number, .content-heading .section-number,
.sector-no, .solution-number, .company-sector-code, .competence-id,
.section-client span, .method-steps li > span, .certifications li span,
.vertical-note, .stage-toolbar, .stage-wordmark, .stage-caption,
.gallery-status, .gallery-slide figcaption, .page-photo figcaption,
.company-outlook figcaption, .product-hero-drawing figcaption,
.project figcaption > p, .project figure > .gallery-count,
.portfolio-overview-count, .filter-status, .breadcrumbs,
.certifications .certificate-enlarge, .certificate-copy a,
.gallery-controls .gallery-autoplay, .motion-toggle, .video-toggle,
.site-footer p, .site-footer > a:last-child, .site-footer .footer-links,
.editorial-status {
  font-size: var(--type-label);
  line-height: 1.5;
}
.eyebrow, .hero .eyebrow, .section-number, .company-sector-code,
.stage-wordmark, .project figcaption > p { letter-spacing: .08em; }
.section-number, .sector-no, .solution-number, .company-sector-code,
.gallery-status, .portfolio-overview-count { font-variant-numeric: tabular-nums; }
.solution-number { min-width: 2rem; min-height: 2rem; display: inline-grid; place-items: center; }
.sector-no { min-width: 2rem; }

/* Azioni e navigazione: una sola scala, distinta dai testi editoriali. */
.text-link, .button, .hero-actions .text-link,
.content-links .text-link, .sector-page-links .text-link,
.sector-detail .text-link, .company-outlook-links .text-link,
.portfolio-more .text-link, .rfx-heading .text-link,
.certificate-dialog-heading .text-link, .brochure-section article a,
.solution-route, .project-filters button, .portfolio-overview-all,
.reading-detail summary, .submenu a, .contact-meta {
  font-size: var(--type-ui);
  line-height: 1.5;
}
.site-navigation > a:not(.nav-cta), .nav-group > a {
  font-size: var(--type-card);
  line-height: 1.3;
  letter-spacing: -.025em;
}
.site-navigation .nav-cta, .contact-link { font-size: var(--type-lead); line-height: 1.5; }
.preview-bar, .preview-bar nav { font-size: .8125rem; line-height: 1.4; }

/* I contenitori possono restringersi: niente tagli sui titoli lunghi o email. */
.company-sector h3, .solution-copy h3, .project h3,
.page-hero h1, .content-heading h2, .dialog-copy h3,
.contact-link, .site-navigation > a, .nav-group > a {
  min-width: 0;
  overflow-wrap: break-word;
}
.contact-link { max-width: 100%; }
.contact-meta { flex-wrap: wrap; }
.company-sector h3, .project h3 { text-wrap: pretty; }

@media (min-width: 601px) and (max-width: 1000px) {
  :root {
    --type-hero: clamp(3rem, 7vw, 4rem);
    --type-display: clamp(2.5rem, 5.5vw, 3rem);
    --type-section: clamp(2.125rem, 4.5vw, 2.5rem);
  }
}
@media (max-width: 600px) {
  :root {
    --type-hero: clamp(2.75rem, 11.5vw, 3rem);
    --type-display: clamp(2.375rem, 10vw, 2.5rem);
    --type-section: clamp(1.875rem, 8vw, 2.125rem);
    --type-card: 1.375rem;
    --type-body: 1rem;
    --type-lead: 1.125rem;
    --type-ui: 1rem;
    --type-label: .8125rem;
  }
  .hero-actions { flex-wrap: wrap; gap: 16px 24px; }
  .hero-actions .button { gap: 18px; }
  .contact-link { gap: 12px; }
  .contact-link:hover { gap: 16px; }
  .portfolio-overview-route { gap: .75rem; }
  .preview-bar nav { gap: 12px; }
}
