/* CM — Prefabbricazione. Una griglia editoriale, fotografie documentate, dati leggibili.
   Colori ereditati dai token del tema, anche nella variante ?tema=logo. */

/* Gerarchia e ritmo comuni alle tre famiglie. */
.prefab-section-heading { display:block; max-width:940px; margin-bottom:32px; }
.prefab-section-heading h2 { font-size:var(--type-section); font-weight:400; line-height:1.16; letter-spacing:-.035em; margin:0; text-wrap:balance; }
.prefab-section-heading > p:not(.eyebrow) { max-width:65ch; margin:18px 0 0; font-size:var(--type-body); line-height:1.65; }
.prefab-section-heading > .eyebrow { margin:0 0 16px; font-size:var(--type-label); }
.prefab-feature { padding-block:clamp(40px,5.5vw,80px); }
.prefab-feature + .prefab-feature { border-top:1px solid var(--line); }
.prefab-feature:has(> .prefab-feature-copy) { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); align-items:center; gap:clamp(32px,6vw,88px); }
.prefab-feature-copy h2 { font-size:var(--type-section); line-height:1.13; letter-spacing:-.035em; font-weight:400; margin:16px 0 26px; }
.prefab-feature-copy p { font-size:var(--type-body); line-height:1.65; max-width:48ch; }
.prefab-feature-copy .prefab-uses { font-size:var(--type-ui); margin-block:24px 32px; }
.prefab-feature-photo { display:block; text-decoration:none; }
.prefab-feature-photo img { display:block; width:100%; height:auto; aspect-ratio:1; object-fit:contain; }
.prefab-feature-photo > span { display:flex; justify-content:space-between; gap:20px; padding-top:14px; font-size:var(--type-ui); }
body:has(.prefab-family-nav) .page-hero,body:has(.prefab-feature-copy) .page-hero { padding-block:24px 28px; }
body:has(.prefab-family-nav) .page-hero .eyebrow,body:has(.prefab-feature-copy) .page-hero .eyebrow { display:none; }
body:has(.prefab-family-nav) .page-hero h1,body:has(.prefab-feature-copy) .page-hero h1 { margin-block:16px 20px; }
body:has(.prefab-family-nav) .page-lead,body:has(.prefab-feature-copy) .page-lead { margin-bottom:0; }
.prefab-detail-content > .prefab-feature:first-child,.industrial-realizations { padding-top:30px; }

/* Navigazione diretta, senza livelli annidati. */
.prefab-family-nav,.prefab-hub-index { display:flex; align-items:center; gap:8px 28px; flex-wrap:wrap; padding-block:12px; border-block:1px solid var(--line); }
.prefab-family-nav a,.prefab-hub-index a { font-size:var(--type-ui); line-height:1.5; padding:8px 0; text-decoration:none; }
.prefab-family-nav a[aria-current],.prefab-family-nav a:is(:hover,:focus-visible),.prefab-hub-index a:is(:hover,:focus-visible) { text-decoration:underline; text-underline-offset:6px; }
.prefab-family-nav a:first-child { margin-right:auto; }
/* Le tre famiglie sono accessi diretti, subordinati al titolo del settore. */
.site-navigation .nav-group > a { padding-bottom:6px; min-height:56px; }
.nav-family-links { grid-column:1/-1; display:flex; align-items:center; gap:0 16px; list-style:none; padding:0 0 10px; margin:0; }
.nav-family-links a { display:flex; align-items:center; min-height:40px; padding:0; font-size:15px; font-weight:400; line-height:1.4; white-space:nowrap; text-decoration:none; }
.nav-family-links a:is(:hover,:focus-visible) { text-decoration:underline; text-underline-offset:4px; }
@media(max-width:600px) {
  .nav-family-links { display:block; padding:0 0 8px 12px; }
  .nav-family-links a { min-height:36px; white-space:normal; }
}
.prefab-hub-section { padding-block:clamp(44px,5vw,76px); scroll-margin-top:calc(var(--cm-header-bottom,140px) + 24px); }
.prefab-hub-section + .prefab-hub-section { border-top:1px solid var(--line); }

/* Fotografie: didascalie sotto le immagini, nessun bordo colorato. */
.prefab-visual-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:26px 22px; margin-block:30px 12px; }
.prefab-visual-tile { display:flex; flex-direction:column; margin:0; min-width:0; text-decoration:none; }
.prefab-visual-tile > a { display:block; }
.prefab-visual-tile img { display:block; width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; }
.prefab-visual-tile figcaption,.prefab-visual-tile > span { display:flex; justify-content:space-between; gap:16px; padding-top:12px; font-size:var(--type-ui); line-height:1.45; }
.prefab-visual-caption > span { flex:none; }
.prefab-visual-grid--two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.prefab-visual-grid--two .prefab-visual-tile img { aspect-ratio:16/10; }
.prefab-mosaic { grid-template-columns:repeat(3,minmax(0,1fr)); }
.prefab-mosaic > :first-child { grid-column:span 2; grid-row:span 2; }
.prefab-mosaic > :first-child img { flex:1; min-height:0; aspect-ratio:auto; height:100%; object-position:50% 50%; }
.prefab-mosaic > :nth-child(2) img,.prefab-mosaic > :nth-child(3) img { aspect-ratio:16/10; }
.prefab-story-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr); gap:24px; }
.prefab-story-grid > :first-child { grid-column:span 2; grid-row:span 2; align-self:center; }
.prefab-story-grid > :first-child > a { display:block; }
.prefab-story-grid > :first-child img { height:auto; aspect-ratio:auto; object-fit:contain; }
.prefab-story-grid > :not(:first-child) img { aspect-ratio:16/10; }
.prefab-visual-grid--portrait { grid-template-columns:repeat(3,minmax(0,1fr)); }
.prefab-visual-grid--portrait .prefab-visual-tile img { aspect-ratio:3/4; object-fit:contain; }
.prefab-feature .page-video { max-height:560px; margin-block:30px; }

/* Sistema modulare: disegno e applicazioni sullo stesso piano di lettura. */
.industrial-custom-heading { max-width:850px; }
.industrial-system { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr); align-items:center; gap:clamp(32px,6vw,88px); }
.industrial-system-figure { margin:0; min-width:0; }
.industrial-system-drawing { display:block; width:100%; height:auto; color:var(--ink); }
.industrial-system-figure figcaption,.industrial-model-geometry figcaption { font-size:var(--type-label); line-height:1.5; margin:10px 0 0; }
.industrial-system-copy { min-width:0; }
.industrial-system-copy > .eyebrow { margin:0 0 20px; }
.industrial-applications { list-style:none; padding:0; display:grid; gap:0; margin:0; }
.industrial-application { display:grid; grid-template-columns:28px minmax(0,1fr); align-items:baseline; gap:18px; border-top:1px solid var(--line); padding:18px 0; min-width:0; }
.industrial-application > span { font-size:var(--type-label); font-variant-numeric:tabular-nums; }
.industrial-application h3 { font-size:var(--type-card); line-height:1.3; font-weight:400; margin:0; }
.industrial-custom-note { font-size:var(--type-body); line-height:1.65; margin:24px 0 0; max-width:44ch; }

/* Esempi industriali: ogni fotografia è affiancata alle proprie dimensioni. */
.industrial-model-grid { display:grid; gap:0; margin-top:40px; }
.industrial-model { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:clamp(28px,5vw,72px); align-items:center; border-top:1px solid var(--line); padding-block:40px; min-width:0; }
.industrial-model-photo { display:block; min-width:0; text-decoration:none; }
.industrial-model-photo img { display:block; width:100%; height:auto; aspect-ratio:1; object-fit:contain; }
.industrial-model-photo > span { display:flex; justify-content:space-between; padding-top:12px; gap:20px; font-size:var(--type-label); }
.industrial-model-copy { min-width:0; }
.industrial-model-copy > .eyebrow { margin:0 0 10px; font-size:var(--type-label); }
.industrial-model h3 { font-size:var(--type-section); line-height:1.1; letter-spacing:-.035em; font-weight:400; margin:0 0 18px; }
.industrial-model-copy > p:not(.eyebrow) { font-size:var(--type-body); line-height:1.65; max-width:49ch; margin:0 0 24px; }
.industrial-model-dimensions { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:0; padding-block:20px; border-block:1px solid var(--line); }
.industrial-model-dimensions dt { font-size:var(--type-label); line-height:1.4; margin:0 0 8px; }
.industrial-model-dimensions dd { margin:0; font-size:clamp(20px,2vw,28px); line-height:1.2; letter-spacing:-.03em; font-variant-numeric:tabular-nums; white-space:nowrap; }
.industrial-model-dimensions dd span { font-size:var(--type-label); letter-spacing:0; }
.industrial-model-geometry { display:flex; align-items:center; gap:20px; margin:20px 0 0; }
.model-technical-sketch { display:block; width:190px; max-width:55%; height:auto; flex:none; color:var(--ink); }
.industrial-model-geometry figcaption { max-width:16ch; margin:0; }
.industrial-model-edi { grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); padding-block:44px; }
.industrial-model-edi .industrial-model-geometry { display:block; margin:0; }
.industrial-model-edi .model-technical-sketch { width:100%; max-width:420px; margin-inline:auto; }
.industrial-model-edi figcaption { max-width:none; text-align:center; }
.industrial-process { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; margin-top:28px; }
.prefab-process-step { border-top:1px solid var(--line); padding-top:24px; }
.prefab-process-step h3 { font-size:var(--type-card); line-height:1.3; font-weight:500; margin:0 0 16px; }
.prefab-process-step p { font-size:var(--type-body); line-height:1.65; }
.prefab-process-step > .eyebrow { font-size:var(--type-label); margin:0 0 14px; }

/* Le altre famiglie conservano i propri contenuti e la propria identità. */
.prefab-family-feature { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:center; gap:clamp(28px,5vw,72px); padding-block:56px; border-top:1px solid var(--line); }
.prefab-family-feature h2 { font-size:var(--type-section); line-height:1.16; letter-spacing:-.035em; font-weight:400; margin:16px 0 24px; }
.prefab-family-feature p { font-size:var(--type-body); line-height:1.65; }
.prefab-family-feature .text-link { margin-top:18px; }
.prefab-family-photo img { width:100%; display:block; aspect-ratio:16/10; height:auto; object-fit:cover; }
.prefab-family-caption { display:block; font-size:var(--type-label); line-height:1.5; padding-top:12px; }
.prefab-family-residential .prefab-family-photo { order:2; }
.prefab-archive-link { display:flex; justify-content:space-between; align-items:center; gap:28px; padding-block:40px; border-top:1px solid var(--line); }
.prefab-archive-link h2 { font-size:var(--type-card); font-weight:400; margin:0; }
.prefab-copy-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 48px; padding-block:32px; }
.prefab-copy-grid:has(> :nth-child(3)) { grid-template-columns:repeat(3,minmax(0,1fr)); }
.prefab-copy-grid h2,.prefab-copy-grid h3,.prefab-facts h3,.prefab-facts h4 { font-size:var(--type-card); font-weight:500; line-height:1.3; margin:0 0 18px; }
.prefab-copy-grid p,.prefab-facts p,.prefab-facts li { font-size:var(--type-body); line-height:1.65; }
.prefab-facts { display:block; padding-block:28px; margin-block:28px; border-top:1px solid var(--line); }
.prefab-facts > * { border:0; padding-top:0; }
.prefab-process-drawing { display:block; width:120px; max-width:100%; height:100px; margin-bottom:24px; color:var(--ink); }
.prefab-graphic-card { min-width:0; }

/* Schede di navigazione esistenti. */
.prefab-card-grid { display:grid; gap:clamp(24px,3vw,44px); }
.prefab-card-grid-three,.prefab-model-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.prefab-card-grid-two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.prefab-card { display:flex; flex-direction:column; min-width:0; text-decoration:none; color:inherit; }
.prefab-photo-card > img { display:block; width:100%; aspect-ratio:16/10; height:auto; object-fit:cover; }
.prefab-card-copy { display:flex; flex:1; flex-direction:column; padding-top:24px; }
.prefab-card h3,.prefab-model h3 { font-size:var(--type-card); font-weight:500; line-height:1.25; letter-spacing:-.025em; margin:0 0 16px; }
.prefab-card p,.prefab-model p { font-size:var(--type-body); line-height:1.65; margin:0 0 24px; }
.prefab-card-action { display:flex; justify-content:space-between; align-items:baseline; gap:20px; margin-top:auto; padding-top:8px; font-size:var(--type-ui); line-height:1.45; }
.prefab-text-card { border-top:1px solid var(--line); padding-bottom:8px; }
.prefab-card:is(:hover,:focus-visible) h3 { text-decoration:underline; text-underline-offset:.18em; text-decoration-thickness:1px; }
.prefab-model-grid { display:grid; gap:clamp(24px,3vw,44px); }
.prefab-model { min-width:0; border-top:1px solid var(--line); padding-top:24px; }
.prefab-model .prefab-model-size { font-size:var(--type-ui); margin:0 0 24px; }
.prefab-model .page-photo { margin:0 0 24px; width:100%; background:transparent; }
.prefab-model .page-photo img { width:100%; height:auto; aspect-ratio:4/3; object-fit:contain; background:transparent; }
.prefab-model .page-photo::before,.prefab-model .page-photo::after { content:none; }
.prefab-model .page-photo figcaption { display:none; }

/* Ingrandimento: lo stesso comportamento per tutte le fotografie. */
.prefab-image-dialog { width:min(1120px,94vw); max-height:94dvh; padding:18px; background:var(--paper,#f2f1e8); color:var(--ink,#163730); border:0; }
.prefab-image-dialog::backdrop { background:rgb(7 22 27 / .82); backdrop-filter:blur(5px); }
.prefab-image-dialog img { display:block; max-width:100%; width:auto; height:auto; max-height:72dvh; object-fit:contain; margin:auto; }
.prefab-image-dialog header { display:flex; justify-content:space-between; gap:24px; align-items:center; margin-bottom:16px; }
.prefab-image-dialog p { font-size:var(--type-ui); margin:0; }
.prefab-image-dialog button { background:transparent; color:inherit; border:1px solid currentColor; min-width:44px; min-height:44px; cursor:pointer; }
.prefab-image-controls { display:flex; justify-content:center; gap:20px; align-items:center; margin-top:14px; }
:is(.prefab-card,.prefab-hub-index a,.prefab-family-nav a,.prefab-visual-tile,.prefab-visual-tile > a,.industrial-model-photo):focus-visible { outline:2px solid currentColor; outline-offset:6px; }

@media (max-width:999px) {
  .industrial-model { gap:32px; }
  .industrial-model-geometry { margin-top:16px; }
  .model-technical-sketch { width:155px; }
  .industrial-system { gap:32px; }
  .industrial-application h3 { font-size:22px; }
  .industrial-model-dimensions dd { font-size:22px; }
}
@media (max-width:849px) {
  .prefab-feature:has(> .prefab-feature-copy) { grid-template-columns:1fr; }
  .prefab-feature-photo img { max-height:580px; }
  .prefab-card-grid-three,.prefab-model-grid { grid-template-columns:1fr; }
  .prefab-photo-card { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
  .prefab-photo-card .prefab-card-copy { padding-top:0; }
  .prefab-photo-card > img { align-self:start; }
  .industrial-model { grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:28px; }
  .industrial-model-dimensions { gap:8px; }
  .industrial-model-dimensions dd { font-size:20px; }
  .industrial-model-dimensions dd span { display:block; margin-top:4px; }
  .industrial-model-geometry { gap:10px; }
  .industrial-system { grid-template-columns:1fr 1fr; gap:24px; }
  .industrial-system-drawing text { font-size:20px; }
  .prefab-copy-grid,.prefab-copy-grid:has(> :nth-child(3)) { gap:24px; }
  .industrial-process { gap:24px; }
}
@media (max-width:699px) {
  .prefab-feature { padding-block:40px; }
  .prefab-section-heading { margin-bottom:26px; }
  .prefab-family-feature { grid-template-columns:1fr; gap:24px; padding-block:36px; }
  .prefab-family-residential .prefab-family-photo { order:0; }
  .industrial-system { grid-template-columns:1fr; gap:30px; }
  .industrial-system-drawing text { font-size:24px; }
  .industrial-system-figure { max-width:500px; }
  .industrial-system-copy { display:grid; grid-template-columns:1fr; }
  .industrial-applications { grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:24px; }
  .industrial-application { gap:10px; grid-template-columns:22px minmax(0,1fr); padding-block:16px; }
  .industrial-application h3 { font-size:18px; }
  .industrial-custom-note { max-width:60ch; }
  .industrial-model,.industrial-model-edi { grid-template-columns:1fr; gap:28px; padding-block:30px; }
  .industrial-model-copy > p:not(.eyebrow) { max-width:none; }
  .industrial-model-dimensions dd { font-size:26px; }
  .industrial-model-dimensions dd span { display:inline; }
  .industrial-model-geometry { gap:24px; }
  .model-technical-sketch { width:190px; }
  .industrial-model-edi .model-technical-sketch { max-width:340px; }
  .industrial-process { grid-template-columns:1fr; gap:26px; margin-top:16px; }
  .prefab-copy-grid,.prefab-copy-grid:has(> :nth-child(3)) { grid-template-columns:1fr; }
  .prefab-story-grid { grid-template-columns:1fr; gap:26px; }
  .prefab-story-grid > :first-child { grid-column:auto; grid-row:auto; }
  .prefab-story-grid > :first-child img,.prefab-story-grid > :not(:first-child) img { height:auto; aspect-ratio:auto; }
  .prefab-mosaic { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px 16px; }
  .prefab-mosaic > :first-child { grid-column:1/-1; grid-row:auto; }
  .prefab-mosaic > :first-child img { height:auto; aspect-ratio:4/3; }
  .prefab-mosaic > :last-child { grid-column:1/-1; }
  .prefab-mosaic > :last-child img { aspect-ratio:16/9; }
  .prefab-mosaic > :nth-child(2) img,.prefab-mosaic > :nth-child(3) img { aspect-ratio:4/3; }
  .prefab-visual-grid--portrait { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:599px) {
  .prefab-card-grid-two { grid-template-columns:1fr; gap:28px; }
  .prefab-photo-card { display:flex; gap:0; }
  .prefab-photo-card .prefab-card-copy { padding-top:20px; }
  .prefab-visual-grid--two { grid-template-columns:1fr; }
  .prefab-visual-tile figcaption,.prefab-visual-tile > span { font-size:var(--type-label); }
  .prefab-feature-photo img { max-height:none; }
  .prefab-family-nav { gap:4px 18px; }
  .prefab-family-nav a:first-child { flex-basis:100%; }
  .prefab-archive-link { align-items:start; flex-direction:column; }
  .industrial-model-dimensions dd { font-size:23px; }
  .industrial-model-geometry figcaption { font-size:var(--type-label); }
}
@media (max-width:399px) {
  .prefab-mosaic { grid-template-columns:1fr; }
  .prefab-mosaic > :first-child,.prefab-mosaic > :last-child { grid-column:auto; }
  .prefab-mosaic > .prefab-visual-tile img { aspect-ratio:4/3; }
  .industrial-applications { grid-template-columns:1fr; }
  .industrial-model-dimensions dd { font-size:22px; }
  .industrial-model-dimensions dd span { display:block; }
  .industrial-model-geometry { gap:16px; }
  .model-technical-sketch { width:165px; }
}
