/* J3D — grille, alignements et rythme communs. */
:root{--gutter:clamp(24px,5.5vw,80px);--section-space:clamp(48px,6vw,80px)}
.wrap{width:100%;max-width:1440px;margin-inline:auto;padding-inline:var(--gutter)}
.site-header header{height:96px;gap:32px}
.site-header header>a{display:flex;align-items:center;gap:28px;min-width:0;line-height:1}
.site-header .logo{display:block;width:120px;height:auto;flex:none}
.site-header .brand-caption{margin:0;max-width:none;font-size:.75rem;line-height:1.5;letter-spacing:.1em}
.site-header nav{align-items:center;gap:32px;flex:none}
.site-header nav a{display:flex;align-items:center;min-height:44px;white-space:nowrap}
.site-header nav a:last-child{border:0;text-decoration:underline;text-decoration-color:var(--orange);text-underline-offset:8px}
html{scroll-padding-top:120px}
.hero{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:48px;min-height:0;padding:64px 0}
.hero>div,.hero figure{min-width:0}
.hero h1{font-size:clamp(3.3rem,6vw,5.7rem);margin:24px 0 28px}
.hero .intro{max-width:540px;font-size:1.0625rem;line-height:1.65;margin:0 0 20px}
.hero .button{margin-top:8px;min-height:52px}
.hero img{width:100%;height:auto;max-width:600px;margin:0 auto;object-fit:contain}
.hero figcaption{font-size:.75rem;gap:12px;flex-wrap:wrap;line-height:1.5}
.index-bar{align-items:center;padding:20px 0;line-height:1.5;gap:24px}
#expertise,#materiaux,#contact{padding-block:var(--section-space)}
#expertise>h2,.mat-heading h2,.project-brief h2{font-size:clamp(2rem,3.5vw,3.4rem);line-height:1.15;letter-spacing:-.04em}
#expertise>h2{margin:0 0 32px;max-width:1000px}
.activity-overview{gap:32px}
.activity-overview>div:first-child>h3{margin:8px 0 0;font-size:1.5rem}
.activity-services{gap:24px 48px;margin:24px 0 0}
.activity-services dd{line-height:1.55;margin-top:6px;max-width:510px}
.activity-overview .urgent-note{grid-template-columns:minmax(180px,.65fr) minmax(0,2fr);align-items:center;padding:28px 32px;gap:32px}
.urgency-label{line-height:1.5;gap:8px}
.urgent-note p{margin:0;line-height:1.55}
.application-heading{margin-top:48px;padding-top:32px}
.application-heading h3{margin:12px 0;font-size:clamp(1.7rem,2.5vw,2.3rem)}
#expertise .principles{margin-top:32px;gap:12px 32px;grid-template-columns:repeat(4,minmax(0,1fr))}
.principle{display:grid;grid-template-rows:subgrid;grid-row:span 3;gap:12px;align-content:start;min-width:0}
.principle .number{font-size:.875rem;line-height:1.5}
.principle h3{margin:0;font-size:1.25rem;line-height:1.35}
.principle p{line-height:1.6;margin:0}
.mat-heading{margin-bottom:32px}
.mat-heading .section-label{margin-bottom:20px}
.mat-row{grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:40px;padding:24px 0}
.mat-row p{line-height:1.55;max-width:400px}
.mat-tags{gap:8px}
.mat-tags li{padding:9px 14px}
.mat-uses{margin-top:40px}
.mat-use-grid{gap:24px 32px}
.mat-use-grid dd{line-height:1.55}
.mat-ultra{grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);padding:32px;gap:40px;margin-top:40px}
.mat-ultra h3{margin:16px 0 12px}
.mat-ultra p{line-height:1.6}
.project-layout{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(32px,5vw,64px);margin-top:28px}
.project-brief h2{margin:0 0 24px}
.project-intro{line-height:1.65;margin-bottom:32px}
.project-details>div{grid-template-columns:120px minmax(0,1fr);gap:20px;padding:18px 0}
.project-support{line-height:1.6;margin-top:24px}
.project-contact{padding:32px;min-width:0}
.project-contact h3{font-size:1.65rem;line-height:1.3;margin:20px 0 16px}
.project-contact>p{line-height:1.6;margin-bottom:24px}
.project-email,.project-phone,.project-location{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;padding:18px 0}
.project-email strong,.project-phone strong,.project-location strong{font-size:clamp(1.2rem,2vw,1.6rem);line-height:1.35;font-weight:500}
.project-urgent{padding-top:24px;margin-top:8px}
#partenaires{padding:0 0 56px}
#partenaires .wrap{border-top:0;padding-top:0}
#partenaires h2{border-top:1px solid var(--line);padding-top:40px;font-size:clamp(1.8rem,3vw,2.8rem)}
#partenaires .partners-list{max-width:none;margin-top:24px;gap:24px}
#partenaires .partner-card{padding:12px 16px}
#partenaires .partner-name{min-height:44px;margin-bottom:16px}
.confidential-mark span{font-size:.75rem}
.foot{display:grid;grid-template-columns:auto 1fr auto;gap:32px;padding:32px 0}
.foot>a{display:flex;align-items:center;line-height:1}
.foot .logo{display:block;width:100px;height:auto}
.foot .footer-meta{text-align:right;max-width:360px}
.legal-links{gap:24px;padding-bottom:28px}
.legal-links a{min-height:36px;display:flex;align-items:center}
.legal-main{max-width:960px;padding:48px var(--gutter) 72px;overflow-wrap:anywhere}
.legal-main h1{line-height:1.15}
.legal-main h2{line-height:1.3;margin-top:36px}
.legal-nav{gap:12px 24px;border-bottom:1px solid var(--line);padding-bottom:24px}
.legal-data{grid-template-columns:190px minmax(0,1fr);gap:16px 24px}
@media(max-width:1000px){
 .site-header .brand-caption{display:none}
 .hero{gap:32px}.hero h1{font-size:clamp(3rem,6vw,4.7rem)}
 #expertise .principles{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:16px}
 .principle:nth-child(n+3){margin-top:16px}
 .mat-use-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .project-contact{padding:24px}
 .project-details>div{grid-template-columns:1fr;gap:6px}
 .foot{grid-template-columns:auto 1fr}.foot .footer-meta{grid-column:1/-1;text-align:left;max-width:none}
}
@media(max-width:760px){
 .hero{grid-template-columns:1fr;padding:40px 0;gap:32px}
 .hero .intro{max-width:100%}.hero figure{max-width:480px;width:100%;margin:auto}
 .hero h1{font-size:clamp(3.1rem,8vw,4.7rem)}
 .activity-overview .urgent-note{grid-template-columns:1fr;gap:16px;padding:24px}
 .urgency-label{flex-direction:row;gap:16px}
 .project-layout{grid-template-columns:1fr;gap:32px}
 .project-intro,.project-support{max-width:none}
 .mat-ultra{grid-template-columns:1fr;gap:24px;padding:24px}
 .mat-row{gap:24px}
}
@media(max-width:560px){
 .site-header header{height:80px;gap:12px}
 .site-header .logo{width:84px}
 .site-header nav{gap:14px;font-size:.875rem}
 html{scroll-padding-top:104px}
 .hero figcaption{flex-direction:column;gap:4px}
 .index-bar{flex-direction:column;align-items:flex-start;gap:8px;font-size:.75rem}
 .activity-services{grid-template-columns:1fr;gap:22px}
 #expertise .principles{grid-template-columns:1fr;row-gap:12px}
 .principle:not(:first-child){margin-top:20px}
 .mat-row{grid-template-columns:1fr;gap:16px;padding:22px 0}
 .mat-use-grid{grid-template-columns:1fr;gap:24px}
 .project-email strong,.project-phone strong,.project-location strong{font-size:1.35rem}
 #partenaires{padding-bottom:32px}
 #partenaires .partners-list{gap:0}
 #partenaires .partner-card{padding:20px 0;gap:20px}
 #partenaires .partner-name{min-height:0;margin:0}
 .foot{gap:20px}.foot .footer-meta{border:0;padding:0}
 .legal-data{grid-template-columns:1fr;gap:6px}.legal-data dd{margin-bottom:12px}
}
@media(max-width:360px){.site-header nav{gap:10px;font-size:.8125rem}.site-header .logo{width:66px}}

/* Reverse engineering : même grille et même hiérarchie que les autres sections. */
#reverse-engineering{padding:0 0 var(--section-space)}
.reverse-heading{border-top:1px solid var(--line);padding-top:var(--section-space);max-width:none}
.reverse-heading .section-label{margin-bottom:20px}
.reverse-heading h2{font-size:clamp(2rem,3.5vw,3.4rem);line-height:1.15;letter-spacing:-.04em;margin:0 0 20px}
.reverse-heading p{font-size:1.0625rem;line-height:1.65;color:var(--muted);max-width:850px;margin:0}
.reverse-film{margin:32px 0 0}
.reverse-film video{display:block;width:100%;height:auto;aspect-ratio:16/9;background:var(--bg)}
.reverse-film figcaption{display:flex;flex-wrap:wrap;gap:16px 32px;padding:16px 0;border-bottom:1px solid var(--line);color:var(--muted);font-size:.875rem;letter-spacing:.08em}
@media(max-width:560px){.reverse-film{margin-top:24px}.reverse-film figcaption{gap:12px 20px;font-size:.75rem}}

.reference-company{display:flex;flex-direction:column;justify-content:center;min-height:90px;margin:0;font-size:1rem;line-height:1.5;color:var(--ink);font-weight:500}

#partenaires .partner-heading{display:flex;flex-direction:column;justify-content:flex-end;min-height:82px;margin-bottom:16px}
#partenaires .partner-sector{display:block;color:var(--orange);font-size:.75rem;line-height:1.5;letter-spacing:.09em;text-transform:uppercase;margin-bottom:6px}
#partenaires .partner-heading .partner-name{margin:0;min-height:44px}
@media(max-width:560px){#partenaires .partner-heading{min-height:0;margin:0;align-items:flex-start;text-align:left}#partenaires .partner-heading .partner-name{min-height:0}}
