@font-face{font-family:Manrope;src:url('/fonts/manrope-variable.ttf') format('truetype');font-weight:400 800;font-style:normal;font-display:swap}
:root{--ink:#193849;--muted:#526672;--paper:#f7fafb;--sky:#eaf0f3;--line:#d5e0e5;--accent:#b81363;--gutter:clamp(22px,4.4vw,88px);--chapter:clamp(64px,8vw,128px);--ease:cubic-bezier(.22,1,.36,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.75 Manrope,Arial,sans-serif;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote{margin:0}ul,ol{list-style:none;padding:0}a{color:inherit;text-decoration:none}img,video{display:block;max-width:100%;height:auto}svg{max-width:100%}button,summary{font:inherit;cursor:pointer}a,summary,button{-webkit-tap-highlight-color:transparent}h1,h2,h3{font-weight:500;letter-spacing:-.052em;text-wrap:balance}h1{font-size:clamp(40px,5vw,76px);line-height:1.07}h2{font-size:clamp(33px,3.85vw,58px);line-height:1.14;max-width:26ch}h3{font-size:clamp(22px,2.2vw,32px);line-height:1.25;letter-spacing:-.035em}p{color:var(--muted);text-wrap:pretty;max-width:70ch}p+p{margin-top:24px}h2+p,h3+p{margin-top:20px}a,button,summary,[tabindex]{outline-offset:6px}a:focus-visible,button:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent)}::selection{color:white;background:var(--accent)}.wrap{width:100%;max-width:1552px;margin-inline:auto;padding-inline:var(--gutter)}.chapter{padding-block:var(--chapter);position:relative}.chapter>.wrap>header{max-width:940px;margin-bottom:48px}.chapter>.wrap>header p:not(.eyebrow){max-width:65ch}.chapter>.wrap>p{margin-top:26px}.chapter:nth-child(3n+1){background:#edf3f5}.chapter.rule{border-top:0}.grid{display:grid;gap:40px}.grid>*{min-width:0}.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.split{grid-template-columns:1fr 1.25fr;gap:8vw}.spaced{margin-top:32px}.rule{border-top:1px solid var(--line);padding-top:24px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;color:var(--accent);margin-bottom:20px}.pre-line{white-space:pre-line}.sticky-copy{position:sticky;top:128px;align-self:start}.flex-list{display:flex;flex-wrap:wrap;gap:20px 36px}.button,.nav-contact{display:inline-flex;justify-content:center;align-items:center;gap:12px;border-radius:100px;padding:15px 25px;min-height:52px;background:var(--accent);color:white;font-size:14px;font-weight:600;line-height:1.5;transition:background .25s,transform .35s var(--ease)}.button:hover{background:#961150;transform:translateY(-2px)}.text-link{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:14px;font-weight:600;border-bottom:1px solid currentColor}.text-link:hover{color:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:200;top:8px;left:20px;background:white;color:var(--ink);padding:12px 20px;transform:translateY(-160%)}.skip-link:focus{transform:none}
/* One navigation component for both languages and every page family. */
.site-header{height:96px;position:sticky;top:0;z-index:50;background:#f7fafbf5;border-bottom:1px solid transparent;transition:background .3s,color .3s}.site-header.is-scrolled{border-color:var(--line);background:#f7fafbf5;color:var(--ink)}.header-bar{height:100%;display:flex;align-items:center;gap:32px}.brand{flex:0 0 155px}.brand img{width:155px;height:auto}.desktop-nav{margin-left:auto;font-size:12px;font-weight:600}.desktop-nav>ul{display:flex;gap:24px;align-items:center}.desktop-nav>ul>li{position:relative}.desktop-nav a{display:block;padding-block:12px}.desktop-nav a[aria-current=page]{color:var(--accent)}.desktop-nav>ul>li>a:after{content:'';height:1px;position:absolute;left:0;right:0;bottom:8px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .25s}.desktop-nav>ul>li>a:hover:after{transform:scaleX(1)}.dropdown{position:absolute;top:100%;left:50%;width:300px;padding:12px;transform:translate(-50%,8px);background:white;color:var(--ink);border:1px solid var(--line);border-radius:14px;box-shadow:0 16px 50px #19384914;visibility:hidden;opacity:0;transition:opacity .2s,transform .25s,visibility .2s}.dropdown a{padding:12px;border-radius:7px;line-height:1.45}.dropdown a:hover{background:var(--sky);color:var(--accent)}.desktop-nav li:hover>.dropdown,.desktop-nav li:focus-within>.dropdown{visibility:visible;opacity:1;transform:translate(-50%,0)}.header-actions{display:flex;gap:22px;align-items:center}.language{font-size:12px;font-weight:700;min-width:44px;min-height:44px;display:grid;place-items:center}.nav-contact{background:transparent;border:1px solid #9aabb5;color:inherit;font-size:12px;min-height:44px;padding:10px 20px;white-space:nowrap}.nav-contact:hover{background:var(--ink);color:white}.mobile-menu{display:none}.breadcrumbs{font-size:11px;color:var(--muted);padding-top:18px;padding-bottom:18px}.breadcrumbs ol,.breadcrumbs ul{display:flex;gap:20px;flex-wrap:wrap}.breadcrumbs li+li:before{content:'/';margin-right:20px;opacity:.4}.breadcrumbs a{padding-block:8px}.is-home .breadcrumbs{display:none}.is-home .site-header:not(.is-scrolled){position:absolute;width:100%;background:transparent;color:white}.is-home .site-header:not(.is-scrolled) .brand img{filter:brightness(0) invert(1)}.is-home .site-header.is-scrolled{position:fixed;width:100%}.is-home .site-header:not(.is-scrolled) .nav-contact{border-color:#ffffff70}
/* The approved film is the opening; information remains available while it scrubs. */
.home-hero{height:200svh;position:relative;background:var(--ink);color:white}.hero-stage{height:100svh;min-height:720px;position:sticky;top:0;overflow:clip;isolation:isolate}.hero-visual{position:absolute;inset:0;z-index:-2;transform:scale(calc(1 + var(--hero-p,0)*.045))}.hero-visual:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#102b4160,transparent 80%),linear-gradient(0deg,#10263890,transparent 40%)}.hero-visual picture,.hero-visual img,.hero-visual video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:78% center}.hero-visual video{opacity:0;transition:opacity .45s}.hero-visual.is-painted video{opacity:1}.hero-copy{padding-top:clamp(150px,19svh,210px);position:relative;z-index:1}.hero-title{max-width:18ch;font-size:clamp(42px,4.6vw,74px);font-weight:600;letter-spacing:-.055em}.hero-description{max-width:48ch;color:white;font-size:15px;line-height:1.65;margin-top:26px}.hero-actions{display:flex;align-items:center;gap:32px;margin-top:28px}.hero-actions .button{color:var(--ink);background:white;box-shadow:0 6px 25px #0c243812}.hero-actions .button:before{content:'';width:7px;height:7px;flex-shrink:0;border-radius:50%;background:var(--accent)}.hero-actions a:not(.button){font-size:13px;min-height:44px;display:flex;align-items:center}.hero-stats{position:absolute;bottom:36px;left:0;right:0}.hero-stats .wrap{padding-right:25vw}.stats{display:grid;gap:32px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.stats>div{padding-top:16px}.stats dd{font-size:clamp(42px,4.3vw,70px);line-height:1;letter-spacing:-.06em;font-weight:500;white-space:nowrap}.stats dt{font-size:12px;line-height:1.55;color:var(--muted);max-width:22ch;margin-top:14px}/* V8 : 5 chiffres au lieu de 3 (CA retiré, collaborateurs et pays ajoutés).
   Gardés sur UNE SEULE RANGÉE : .hero-stats est en position:absolute;bottom:36px,
   indépendant du flux de .hero-copy au-dessus. Sur 2 rangées (l'ancien
   repeat(3,...) qui bouclait un 4e et 5e élément sur une 2e ligne), le bloc
   devenait plus haut et remontait par-dessus le titre et les boutons sur les
   écrans larges — repéré à l'écran sur 1920px, invisible aux largeurs déjà
   testées. repeat(5,...) restaure la hauteur d'origine, calibrée pour
   .hero-stats .wrap{padding-right:25vw}. */
.hero-stats .stats{grid-template-columns:repeat(5,minmax(0,1fr));gap:20px}.hero-stats .stats>div{border:0;padding:0}.hero-stats .stats dd{font-size:clamp(30px,3.4vw,54px)}.hero-stats .stats dt{color:#f1f2f4;font-size:11px}.home-trust{text-align:center;background:var(--paper)}.home-trust h2,.home-trust p,.home-trust header{margin-inline:auto}.home-trust .wrap>header{margin-bottom:24px}.logo-strip{display:flex!important;gap:46px;align-items:center;overflow:auto;padding:25px 0;scrollbar-width:thin;scrollbar-color:#c2cfd6 transparent}.logo-strip li{flex:0 0 130px;height:64px;display:grid;place-items:center}.logo-wall img{width:auto;max-width:145px;max-height:55px;object-fit:contain}.logo-wall .client-logo{height:auto}.logo-cell{display:flex;justify-content:center;align-items:center;min-height:100px;padding:16px}.logo-wall{align-items:center}.logo-wall:not(.logo-strip){display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:28px}.logo-wall>li{min-height:90px;display:flex;align-items:center;justify-content:center}.logo-wall>li:has(span){flex-direction:column;gap:16px}.home-presence{background:var(--paper)!important;padding-top:48px}.home-presence .split{align-items:start}.home-presence ul{font-size:13px;gap:12px 24px}.home-presence li{cursor:default;border-bottom:1px solid transparent;min-height:36px}.home-presence li:hover,.home-presence li:focus-visible{color:var(--accent);border-color:var(--accent)}.home-presence li span{font-size:11px;margin-left:6px}.map-art{margin-top:50px;background:var(--sky);border-radius:18px;overflow:hidden}.presence-world{display:block;width:100%;height:auto;max-height:600px}.map-land{fill:#c5d2dc}.map-country-dots{fill:var(--accent);transition:opacity .2s}.map-location{color:var(--accent)}.map-callout-line{stroke:#a8bcc8;fill:none}.map-halo{fill:#b8136318;stroke:currentColor;stroke-width:.65}.map-point{fill:currentColor;stroke:white;stroke-width:1.8}.map-ping{fill:none;stroke:currentColor;opacity:0}.map-location.pending{color:var(--muted)}.map-location.pending .map-point{fill:var(--sky);stroke:currentColor}.map-location.is-active .map-halo{r:18;fill:#b8136328}.home-partners{background:#edf3f5!important}.home-partners .stats{margin-top:48px;margin-bottom:50px}.home-expertises{background:white!important}.expertise-scene{display:grid;grid-template-columns:.85fr 1.1fr;gap:8vw;margin-top:64px;align-items:start}.editorial-art{position:relative;overflow:hidden;border-radius:3px;aspect-ratio:4/5}.editorial-art img{width:100%;height:115%;object-fit:cover;position:absolute;top:-7.5%;object-position:60% center}.expertise-scene>.editorial-art{position:sticky;top:120px}.expertise-scene>ul{display:block;margin:0}.expertise-scene>ul>li{border-bottom:1px solid var(--line)}.expertise-scene a{display:block;padding:26px 0}.expertise-scene li:first-child a{padding-top:0}.expertise-scene a div{margin:0}.expertise-scene a h3{font-size:clamp(24px,2.6vw,37px);transition:color .3s,transform .4s var(--ease)}.expertise-scene a:hover h3{color:var(--accent);transform:translateX(6px)}.expertise-scene a p{font-size:14px;line-height:1.8;margin-top:14px}.expertise-scene a>span{display:none}.home-ai{background:#e6eef2!important}.home-ai>.wrap{display:grid;grid-template-columns:1fr 1fr;gap:60px 8vw;align-items:center}.home-ai .editorial-art{aspect-ratio:1.2}.home-ai ul{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px}.home-ai li{display:block;border-top:1px solid #adbdc7;padding-top:24px}.home-ai li h3{font-size:26px}.home-ai li p{font-size:14px}.home-reasons>.wrap{display:grid;grid-template-columns:.85fr 1.1fr;gap:8vw;align-items:start}.home-reasons header{position:sticky;top:125px}.home-reasons ol{display:block;margin:0}.home-reasons li{display:grid;grid-template-columns:36px 1fr;gap:22px;margin-bottom:36px}.home-reasons li>span{color:var(--accent);font-size:12px}.home-reasons li h3{font-size:29px}.home-reasons li p{font-size:15px}.home-services{background:#edf3f5!important}.home-services .wrap>div{margin-top:60px;padding-left:60px;border-left:1px solid #d4becb}.home-services ul{display:grid;grid-template-columns:1fr 1fr;gap:55px 80px}.home-services li{position:relative}.home-services li:before{content:'';position:absolute;width:9px;height:9px;top:9px;left:-26px;border:2px solid var(--accent);border-radius:50%;background:var(--paper)}.home-services a{display:block}.home-services a>span:first-child{font-size:11px;color:var(--accent)}.home-services h3{font-size:28px;margin-top:14px}.home-services p{font-size:14px}.home-services a>span:last-child{display:inline-block;margin-top:16px}.home-testimonials li{padding:28px 0;border-top:1px solid var(--line)}blockquote{color:var(--ink);font-size:17px;line-height:1.85}li>footer{margin-top:28px;font-size:12px}li>footer p+p{margin-top:0}.home-close{background:var(--ink)!important;color:white;padding-block:130px}.home-close h2{font-size:clamp(46px,6vw,88px);max-width:20ch}.home-close p{color:#d2dee5;margin-top:26px}.home-close .button{background:white;color:var(--ink)}
/* Interiors share the same horizon, with compositions tied to their task. */
.interior-hero{padding-block:48px 80px;background:var(--sky)}.interior-layout{display:grid;grid-template-columns:1.22fr .78fr;gap:7vw;align-items:center}.interior-copy{min-width:0}.interior-copy>p{max-width:57ch;font-size:17px;margin-top:30px}.interior-copy>nav{margin-top:32px}.interior-copy>nav>ol{display:grid;grid-template-columns:1fr 1fr;gap:10px 22px}.interior-copy nav a{display:block;font-size:12px;padding:10px 0;border-bottom:1px solid #c6d3dc}.interior-copy nav a span{color:var(--accent);font-size:10px;margin-right:10px}.interior-art{aspect-ratio:4/5;overflow:hidden;border-radius:180px 180px 8px 8px;position:relative}.interior-art img{width:100%;height:115%;object-fit:cover;object-position:58% center;position:absolute;top:-7.5%}.services .interior-art{aspect-ratio:3/4;object-position:70% center}.services .interior-hero h1,.expertise .interior-hero h1{font-size:clamp(54px,7.5vw,112px)}.about .interior-hero h1,.references .interior-hero h1,.partners .interior-hero h1{font-size:clamp(40px,4.25vw,64px)}.partners .interior-art{aspect-ratio:1;border-radius:50%}.references .interior-layout{grid-template-columns:1.3fr .7fr}.references .interior-art{aspect-ratio:3/5}.references .interior-copy .stats{margin-top:48px;gap:22px}.references .interior-copy .stats dd{font-size:clamp(38px,3.8vw,58px)}.technical-art{color:var(--accent);position:relative;aspect-ratio:1;background:linear-gradient(135deg,#f6f9fb,#dce7ed);border-radius:50%}.technical-art svg{width:100%;height:100%;padding:5%}.technical-art path{stroke-linecap:round;stroke-linejoin:round}.technical-art circle{fill:var(--sky)}.expertise-detail .interior-hero h1{font-size:clamp(40px,5vw,72px)}.expertise-chapter>.wrap{display:grid;grid-template-columns:1fr 1fr;gap:8vw;align-items:start}.expertise-chapter .wrap>header{margin:0}.expertise-chapter .wrap>p{margin:0;font-size:17px;line-height:1.9}.expertise-detail .chapter:has(.stats){background:var(--ink);color:white}.expertise-detail .chapter:has(.stats) dt,.expertise-detail .chapter:has(.stats) .eyebrow{color:#d2dfe6}.expertise-detail .chapter:has(ul) ul a{display:block;min-height:62px;padding:18px;border-bottom:1px solid var(--line);font-size:14px}.expertise-index{display:block;margin:0}.expertise-index>li{border-bottom:1px solid var(--line)}.expertise-index a{display:grid;grid-template-columns:1fr 1fr auto;gap:6vw;padding:42px 0;align-items:start}.expertise-index h2,.expertise-index h3{font-size:clamp(25px,3vw,44px)}.expertise-index a p{margin:0}.expertise-index a:hover h2,.expertise-index a:hover h3{color:var(--accent)}.expertise-index a>span{font-size:12px}.service-chapter{--progress:0;border-top:1px solid var(--line)}.service-chapter:before{content:'';position:absolute;top:0;left:var(--gutter);width:calc((100% - 2*var(--gutter))*var(--progress));height:2px;background:var(--accent)}.service-chapter:nth-child(odd){background:#edf3f5}.service-chapter .split{grid-template-columns:.85fr 1.15fr}.service-chapter .sticky-copy>p:first-child{font-size:12px;letter-spacing:.1em;color:var(--accent)}.service-chapter .sticky-copy h2{margin-top:20px}.service-chapter .sticky-copy>p:last-child{font-size:19px;color:var(--ink);margin-top:25px;max-width:31ch}.service-chapter .split>div:last-child>p{font-size:17px;line-height:1.9}.service-chapter ul{display:block;margin-top:42px}.service-chapter li{margin-top:30px}.service-chapter li h3{font-size:25px}.service-chapter li p{font-size:15px}.product-hero>.wrap{align-items:center;gap:6vw;grid-template-columns:1.2fr .8fr}.product-hero h1{font-size:clamp(38px,4.9vw,68px)}.product-hero p{max-width:55ch}.product-hero .source-art{padding:18px;background:#fff;border-radius:12px;overflow:hidden}.product-hero .source-art img{width:100%;border-radius:5px}.product-grid>li{padding-top:24px;border-top:1px solid var(--line)}.product-grid p{font-size:15px}.product-grid img{width:100%;aspect-ratio:1.55;object-fit:cover;border-radius:8px}.product-grid a{display:block}.product-grid h2,.product-grid h3{margin-top:24px}.products .product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:64px}.products .product-grid>li{border:0;padding:0}.products .product-grid a:hover img{transform:scale(1.025)}.products .product-grid img{transition:transform .5s var(--ease)}.products .product-grid a>div{margin-top:26px}.products .product-grid a h3{font-size:32px}.products .product-grid a>span{display:inline-block;margin-top:20px;font-size:13px}.products-detail .chapter:has(.stats){background:var(--sky)}.products-detail .chapter:has(.button){background:var(--ink);color:white}.products-detail .chapter:has(.button) p{color:#d2dfe6}.products-detail .chapter:has(.button) .button{background:white;color:var(--ink)}.products-detail .product-grid{row-gap:48px}.products-detail .chapter:last-child ul a{display:block;padding:20px;border-bottom:1px solid var(--line)}.about .chapter .cols-4{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 8vw}.about .chapter .cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.about .chapter:has(.stats){background:var(--ink);color:white}.about .chapter:has(.stats) dt,.about .chapter:has(.stats) .eyebrow{color:#d9e4e9}.about .chapter h3{font-size:29px}.about #presence ul li{border-top:1px solid var(--line);padding-top:22px}.about #presence ul li span{display:block}.about #presence ul li span:first-child{font-size:21px;font-weight:600}.about #presence dl>div{display:grid;grid-template-columns:240px 1fr;padding:20px 0;border-bottom:1px solid var(--line)}.about #presence dl dt{font-weight:600}.about #presence dl dd{font-size:14px}.reference-group{display:grid;grid-template-columns:.75fr 1.25fr;gap:7vw;border-top:1px solid var(--line);padding-block:60px}.reference-group header{position:sticky;top:125px;align-self:start}.reference-group header>p:first-child{color:var(--accent);font-size:11px;margin-bottom:18px}.reference-group header p:last-child{font-size:14px}.reference-group .logo-wall{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.reference-group .logo-cell{background:white;border-radius:8px}.reference-group .logo-cell img{max-width:125px;max-height:46px}.reference-group .logo-cell span{font-size:13px;text-align:center}.accreditation-list{display:block}.accreditation-list>li{display:grid;grid-template-columns:.7fr 1.3fr;gap:7vw;border-top:1px solid var(--line);padding:35px 0}.accreditation-list h2{font-size:31px}.accreditation-list p{margin:0;font-size:15px}.accreditation-list li>div>p{color:var(--accent);font-size:12px;font-weight:700;margin-top:12px}.partners .logo-wall img{max-height:100px}.partners .chapter:nth-child(3) .logo-wall{align-items:start}.certifications .grid{gap:32px 8vw}.certifications h3{font-size:27px}.contact .interior-hero h1{font-size:clamp(44px,6.75vw,100px);max-width:15ch}.contact .interior-hero p{font-size:18px;margin-top:32px;max-width:55ch}.contact-section .split{grid-template-columns:.8fr 1.2fr}.contact-section dl>div+div{margin-top:32px}.contact-section dt{font-size:11px;font-weight:700;color:var(--muted)}.contact-section dd{font-size:18px;line-height:1.9;margin-top:18px}.contact-section .split>div:last-child{border-radius:16px;background:#e9f0f3;padding:clamp(26px,4.5vw,70px)}.contact-section h2{font-size:clamp(32px,3.6vw,52px)}.contact-section a[href^="tel:"]{font-size:16px}
/* Calm ending, without a second visual identity. */
.site-footer{background:#142d3b;color:white;padding-block:76px 30px;font-size:12px}.site-footer .footer-content>div:first-child{display:grid;grid-template-columns:1.35fr 1fr 1fr .8fr;gap:48px}.site-footer img{width:155px;height:auto;margin-bottom:26px}.site-footer h2{font-size:13px;font-weight:600;letter-spacing:0;margin:0 0 24px}.site-footer a{display:inline-block;padding:6px 0;color:#d6e1e7}.site-footer a:hover{color:white;text-decoration:underline;text-underline-offset:5px}.site-footer p{color:#b9cbd5;font-size:12px}.site-footer ul{margin:0}.site-footer [aria-label="Réseaux sociaux"],.site-footer [aria-label="Social media"]{display:flex;gap:20px;margin-top:24px;color:#b9cbd5}.site-footer svg{width:17px;height:17px}.site-footer .footer-content>div:last-child{display:flex;justify-content:space-between;flex-wrap:wrap;gap:24px;border-top:1px solid #355260;padding-top:26px;margin-top:64px}.site-footer .footer-content>div:last-child p{display:flex;gap:24px}.site-footer .spaced{margin-top:18px}.site-footer .rule{border-color:#355260}
@view-transition{navigation:auto}::view-transition-old(root){display:none}::view-transition-new(root){animation:450ms var(--ease) both page-in}@keyframes page-out{to{opacity:0}}@keyframes page-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@media(min-width:1600px){.hero-copy{padding-top:170px}.hero-stats .wrap{padding-right:400px}}
@media(max-width:1150px){.desktop-nav{display:none}.header-actions{margin-left:auto}.mobile-menu{display:block}.mobile-menu summary{width:44px;height:44px;display:grid;place-items:center;list-style:none;border:1px solid #a8b9c4;border-radius:50%;position:relative;z-index:2}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu summary svg{width:18px;height:18px}.mobile-menu[open] summary{background:var(--ink);color:white}.mobile-panel{position:fixed;top:96px;left:0;right:0;height:calc(100dvh - 96px);overflow:auto;overscroll-behavior:contain;background:var(--paper);color:var(--ink);padding:28px var(--gutter) 70px}.mobile-panel>ul{display:grid;grid-template-columns:1fr 1fr;gap:10px 50px}.mobile-panel a{display:block;min-height:44px;padding:10px 0}.mobile-panel>ul>li>a{font-size:24px;letter-spacing:-.04em}.mobile-panel ul ul{padding-left:18px;border-left:1px solid var(--line);margin-block:15px}.mobile-panel ul ul a{font-size:13px;line-height:1.5}.site-header:has(.mobile-menu[open]){background:var(--paper)!important;color:var(--ink)!important}.site-header:has(.mobile-menu[open]) .brand img{filter:none!important}.cols-4,.cols-5{grid-template-columns:repeat(2,minmax(0,1fr))}.about .chapter .cols-5{grid-template-columns:repeat(3,minmax(0,1fr))}.interior-layout{gap:5vw}.site-footer .footer-content>div:first-child{grid-template-columns:1.3fr 1fr;gap:45px}.hero-title{font-size:clamp(44px,5.7vw,69px)}.hero-stage{min-height:760px}.home-ai ul{gap:28px}.reference-group .logo-wall{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){:root{--gutter:28px;--chapter:72px}.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}.interior-layout{grid-template-columns:1fr;gap:38px}.interior-art{aspect-ratio:1.8;max-height:400px;border-radius:140px 140px 8px 8px}.services .interior-art{aspect-ratio:1.8}.partners .interior-art{aspect-ratio:1.8;border-radius:180px}.references .interior-layout{grid-template-columns:1fr}.references .interior-art{aspect-ratio:2.1}.interior-hero h1{max-width:20ch}.technical-art{max-width:380px;width:100%;margin:auto}.expertise-chapter>.wrap{grid-template-columns:1fr;gap:28px}.expertise-scene{gap:40px;grid-template-columns:.75fr 1fr}.home-reasons>.wrap{grid-template-columns:1fr;gap:30px}.home-reasons header{position:static}.home-reasons ol{display:grid;grid-template-columns:1fr 1fr;gap:32px}.home-reasons li{display:block}.home-reasons li h3{margin-top:15px}.home-ai>.wrap{gap:40px}.home-ai h2{font-size:35px}.home-ai ul{grid-template-columns:1fr}.home-ai li{display:grid;grid-template-columns:.8fr 1.2fr;gap:30px}.home-ai li p{margin:0}.home-services ul{gap:40px}.home-testimonials .grid{grid-template-columns:1fr}.service-chapter .split{grid-template-columns:1fr;gap:30px}.service-chapter .sticky-copy{position:static}.service-chapter .sticky-copy>p:last-child{max-width:none}.reference-group{grid-template-columns:1fr;gap:30px}.reference-group header{position:static}.reference-group .logo-wall{grid-template-columns:repeat(3,minmax(0,1fr))}.contact-section .split{grid-template-columns:1fr}.product-hero>.wrap{grid-template-columns:1fr}.product-hero .source-art{max-width:600px}.accreditation-list>li{grid-template-columns:1fr 1.4fr;gap:32px}.expertise-index a{grid-template-columns:1fr 1fr;gap:24px}.expertise-index a>span{grid-column:2}.hero-stats .wrap{padding-right:var(--gutter)}.stats dd{font-size:42px}}
@media(max-width:600px){:root{--gutter:22px;--chapter:60px}body{font-size:15px}h1{font-size:38px}h2{font-size:34px}h3{font-size:25px}.site-header{height:80px}.header-bar{gap:14px}.brand{flex-basis:130px}.brand img{width:130px}.header-actions{gap:6px}.header-actions>.nav-contact{display:none}.mobile-panel{top:80px;height:calc(100dvh - 80px);padding-top:18px}.mobile-panel>ul{grid-template-columns:1fr;gap:5px}.mobile-panel>ul>li>a{font-size:26px}.mobile-panel ul ul a{font-size:14px}.breadcrumbs{font-size:10px;padding-top:14px;padding-bottom:14px}.breadcrumbs ol{gap:10px}.breadcrumbs li+li:before{margin-right:10px}.grid,.cols-2,.cols-3,.cols-4,.cols-5,.split{grid-template-columns:1fr;gap:30px}.home-hero{height:175svh}.hero-stage{height:100svh;min-height:760px}.hero-copy{padding-top:130px}.hero-title{font-size:clamp(36px,8.8vw,50px);max-width:18ch}.hero-description{font-size:14px;margin-top:24px;max-width:39ch}.hero-actions{gap:18px;flex-wrap:wrap;margin-top:25px}.hero-actions .button{font-size:12px;padding:13px 20px;min-height:48px}.hero-actions a:not(.button){font-size:12px}.hero-visual:after{background:linear-gradient(0deg,#102638bb,transparent 40%),linear-gradient(90deg,#102b4170,#102b4120)}.hero-stats{bottom:30px}.hero-stats .stats{gap:14px}.hero-stats .stats dd{font-size:clamp(31px,8.4vw,46px)}.hero-stats .stats dt{font-size:10px;line-height:1.5;margin-top:12px}.hero-stats .wrap{padding-inline:22px}.home-trust .logo-strip{gap:20px}.logo-strip li{flex-basis:100px}.logo-wall img{max-width:100px;max-height:42px}.logo-wall:not(.logo-strip){grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.home-presence .split{gap:24px}.home-presence .map-art{margin-inline:-12px;margin-top:32px;border-radius:10px}.presence-world{min-height:200px}.home-partners .stats{grid-template-columns:1fr 1fr;gap:30px}.home-partners .stats>div:last-child{grid-column:1/-1}.expertise-scene{display:block;margin-top:36px}.expertise-scene>.editorial-art{position:relative;top:auto;aspect-ratio:1.25;margin-bottom:35px}.expertise-scene a{padding:25px 0}.expertise-scene a h3{font-size:28px}.home-ai>.wrap{display:flex;flex-direction:column;align-items:stretch;gap:36px}.home-ai .editorial-art{aspect-ratio:1.2}.home-ai ul{display:block}.home-ai li{display:block;margin-top:28px}.home-ai li p{margin-top:18px}.home-reasons ol{display:block}.home-reasons li{display:grid;grid-template-columns:28px 1fr;gap:14px;margin-bottom:26px}.home-reasons li h3{margin-top:0;font-size:25px}.home-reasons li p{font-size:14px}.home-services .wrap>div{margin-top:38px;padding-left:26px}.home-services ul{grid-template-columns:1fr;gap:36px}.home-services li:before{left:-32px}.home-services h3{font-size:27px}.home-testimonials blockquote{font-size:16px}.home-close{padding-block:80px}.home-close h2{font-size:48px}.interior-hero{padding-block:36px 50px}.interior-copy>p,.contact .interior-hero p{font-size:16px;margin-top:26px}.interior-art{border-radius:100px 100px 6px 6px;aspect-ratio:1.25}.services .interior-art{aspect-ratio:1.3}.services .interior-hero h1,.expertise .interior-hero h1{font-size:clamp(46px,11.8vw,70px)}.about .interior-hero h1,.references .interior-hero h1,.partners .interior-hero h1{font-size:38px}.interior-copy>nav>ol{grid-template-columns:1fr}.interior-copy nav a{font-size:13px;padding-block:12px}.references .interior-copy .stats{grid-template-columns:1fr 1fr;gap:26px}.references .interior-copy .stats dd{font-size:40px}.technical-art{max-width:290px}.expertise-detail .interior-hero h1{font-size:38px}.expertise-index a{grid-template-columns:1fr;gap:20px}.expertise-index a>span{grid-column:auto}.expertise-chapter>.wrap{gap:24px}.expertise-chapter .wrap>p{font-size:16px}.expertise-detail .chapter:has(ul) ul{gap:10px}.product-hero h1{font-size:38px}.products .product-grid{grid-template-columns:1fr;gap:42px}.products-detail .product-grid{gap:30px}.about .chapter .cols-4{grid-template-columns:1fr;gap:34px}.about .chapter .cols-5{grid-template-columns:1fr 1fr;gap:30px}.about #presence dl>div{grid-template-columns:1fr;gap:12px}.reference-group{padding-block:38px}.reference-group .logo-wall{grid-template-columns:1fr 1fr}.reference-group .logo-cell img{max-width:105px}.accreditation-list>li{grid-template-columns:1fr;gap:20px}.partners .logo-wall img{max-width:120px}.contact .interior-hero h1{font-size:44px}.site-footer{padding-top:60px}.site-footer .footer-content>div:first-child{grid-template-columns:1fr 1fr;gap:36px 24px}.site-footer .footer-content>div:first-child>div:first-child{grid-column:1/-1}.site-footer .footer-content>div:last-child{display:block;margin-top:40px}.site-footer .footer-content>div:last-child p+p{margin-top:14px}.site-footer .footer-content>div:last-child p{flex-wrap:wrap;gap:12px 20px}}
@media(max-height:650px){.home-hero{height:auto}.hero-stage{position:relative;height:auto;min-height:800px}.hero-copy{padding-top:145px}.hero-stats{bottom:35px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.home-hero{height:auto}.hero-stage{position:relative;height:auto;min-height:820px}.hero-visual{transform:none}.editorial-art img,.interior-art img{transform:none!important}.sticky-copy,.home-reasons header,.expertise-scene>.editorial-art,.reference-group header{position:static}.service-chapter:before{width:calc(100% - 2*var(--gutter))}::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
/* Source certificates have equivalent table and mobile list representations. */
.certification-table{overflow-x:auto}.certification-table table{border-collapse:collapse;width:100%;font-size:14px;text-align:left}.certification-table th,.certification-table td{padding:20px 24px 20px 0;border-bottom:1px solid var(--line);vertical-align:top}.certification-table thead{background:var(--sky)}.certification-table thead th{font-size:10px;color:var(--muted)}.certification-table th[scope=rowgroup]{font-size:19px;font-weight:600;width:23%}.certification-table th span{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:8px}.certification-mobile{display:none}.technical-art path{stroke-width:2}.technical-art circle{stroke-width:2}
@media(max-width:767px){.certification-table{display:none}.certification-mobile{display:block}.certification-mobile>section+section{margin-top:46px}.certification-mobile .split{grid-template-columns:38px 1fr;gap:20px}.certification-mobile li{padding-block:24px}.certification-mobile li>span{font-size:30px;letter-spacing:-.04em;color:var(--accent)}.certification-mobile li p:first-child{font-size:19px;font-weight:600;color:var(--ink)}.certification-mobile li .eyebrow{margin-top:10px;font-size:10px}.certification-mobile li p:last-child{font-size:14px;margin-top:12px}}
.map-callout-line{display:none}
@media(max-width:600px){
  /* V8 : 5 chiffres au lieu de 3 (CA retiré, collaborateurs et pays ajoutés).
     L'ancien gabarit à 3 colonnes de largeurs inégales (.65fr 1.12fr 1.15fr)
     était calibré pour exactement 3 éléments : avec 5, le 4e (« 2 700+ »,
     white-space:nowrap) débordait de sa colonne la plus étroite et chevauchait
     visuellement le 5e (« 7 »), sans le moindre espace entre les deux. Deux
     colonnes égales évitent qu'une colonne soit plus étroite que son contenu. */
  .hero-stats .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 16px}
  .hero-stats .stats dd{font-size:clamp(29px,8.2vw,44px)}
}

.desktop-nav li.dismissed>.dropdown{opacity:0;visibility:hidden}
.site-header.is-scrolled{background:#f7fafb}.site-footer h2{color:#e6c3d4}.action-strip{padding-block:48px}.action-strip>.wrap>p{margin-top:0}

/* ==========================================================================
   V7 — corrections du client (9 octobre 2026)
   ========================================================================== */

/* 1. Le défilement automatique des clients revient (accueil). Deux rangées en
   sens opposé, vitesse constante (durée calculée par la source sur la longueur
   de chaque rangée), pause au survol. La seconde copie de chaque piste est
   aria-hidden : elle ne sert qu'à boucler sans couture. */
.logo-marquee{display:grid;gap:22px;margin-top:40px}
.logo-row{display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.logo-row .logo-strip{display:flex!important;flex:none;align-items:center;gap:64px;margin:0;padding:0 64px 0 0;overflow:visible;scrollbar-width:none}
.logo-row .logo-strip li{flex:0 0 auto;height:76px;display:flex;align-items:center;justify-content:center}
.logo-row .logo-strip img{max-width:none;max-height:none;object-fit:contain}
@media (prefers-reduced-motion:no-preference){
  .logo-row .logo-strip{animation:defile var(--duree,90s) linear infinite}
  .logo-row[data-sens="droite"] .logo-strip{animation-direction:reverse}
  .logo-row:hover .logo-strip{animation-play-state:paused}
}
@keyframes defile{from{transform:translateX(0)}to{transform:translateX(-100%)}}
@media (prefers-reduced-motion:reduce){
  /* Le bloc d'origine passe ce cadre en position:static pour annuler le collant ;
     son image, en absolu, en sortait alors et faisait déborder la page de 63 px. */
  .expertise-scene>.editorial-art{position:relative;top:auto}
  .logo-row{-webkit-mask-image:none;mask-image:none}
  .logo-row .logo-strip[aria-hidden="true"]{display:none!important}
  .logo-row .logo-strip{flex:1 1 auto;flex-wrap:wrap;justify-content:center;gap:24px 48px;padding:0}
}
/* Figé en mur sur téléphone, les 45 logos montaient à 2 000 px : on les resserre. */
@media (prefers-reduced-motion:reduce) and (max-width:700px){
  .logo-row .logo-strip{gap:4px 22px}
  .logo-row .logo-strip li{zoom:.66;height:64px}
}
@media print{
  .logo-row .logo-strip{animation:none!important;flex-wrap:wrap;justify-content:center}
  .logo-row .logo-strip[aria-hidden="true"]{display:none!important}
}

/* 2. Murs de logos : cases de LARGEUR FIXE (184 px, 6 au plus par rangée), donc
   le même espacement sur toutes les pages ; rangées équilibrées (le nombre de colonnes est
   calculé par le générateur pour qu'aucun logo ne reste seul sur sa ligne).
   Mêmes cases et même taille maximale sur l'accueil, les produits et les
   partenaires : c'est ce qui rend les espacements identiques partout. */
.logo-wall.balanced{display:grid!important;grid-template-columns:repeat(var(--cols),minmax(0,184px));justify-content:start;gap:12px 28px;align-items:center}
.logo-wall.balanced>li{min-height:96px;display:flex;align-items:center;justify-content:center;padding:8px}
.logo-wall.balanced>li:has(span){flex-direction:column;gap:14px}
.logo-wall.balanced img,.partners .logo-wall.balanced img{width:auto;height:auto;max-width:150px;max-height:58px;object-fit:contain}
.partners .logo-wall.balanced>li:has(span) img{max-height:84px}
@media (max-width:1100px){.logo-wall.balanced{grid-template-columns:repeat(var(--cols-md),minmax(0,184px))}}
@media (max-width:700px){
  .logo-wall.balanced{grid-template-columns:repeat(var(--cols-sm),minmax(0,1fr));gap:4px 12px}
  .logo-wall.balanced>li{min-height:76px}
  .logo-wall.balanced img,.partners .logo-wall.balanced img{max-width:96px;max-height:40px}
}

/* 3. « En savoir plus » à côté de la flèche des cartes. */
.more-link{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--accent);letter-spacing:0}
.more-link [aria-hidden]{display:inline-block!important;margin:0!important;transition:transform .3s var(--ease)}
/* La flèche héritait de la classe d'espacement de son ancienne place (bloc, 32 px au-dessus) : elle passait sous le libellé. */
a:hover .more-link [aria-hidden],a:focus-visible .more-link [aria-hidden]{transform:translateX(4px)}

/* 4. Photos des pages Expertise : même cadre que les autres pages intérieures. */
.expertise-photo img{object-position:50% 50%}

/* 5. Plan d'accès (page Contact). */
.contact-map{margin-top:clamp(40px,6vw,72px);border-radius:16px;overflow:hidden;background:var(--sky);aspect-ratio:16/7;min-height:320px}
.contact-map iframe{display:block;width:100%;height:100%;border:0}
@media (max-width:700px){.contact-map{aspect-ratio:4/5}}

/* 6. Voile de lisibilité de l'ouverture. Le texte blanc était posé sur des nuages
   et un soleil clairs : sur téléphone, 77 à 82 % des pixels du chapeau sortaient
   sous 4,5:1. Le voile assombrit seulement là où est le texte. */
.hero-visual::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;
  background:linear-gradient(90deg,rgb(16 36 48 / .76) 0%,rgb(16 36 48 / .55) 50%,rgb(16 36 48 / .4) 65%,rgb(16 36 48 / 0) 85%),linear-gradient(0deg,rgb(16 36 48 / .55) 0%,rgb(16 36 48 / 0) 34%)}
/* ⚠ Le voile n'avait été mesuré qu'à 390 et 1 440 px (CLAUDE.md). Entre 701 et
   ~900 px, le titre (max-width:18ch, font-size en clamp(42px,4,6vw,74px)) ne
   rétrécit pas aussi vite que le viewport : son bord droit atteint 58 à 64 % de
   la largeur, bien au-delà du palier à 58 % où le dégradé d'origine retombait
   déjà à 0,12 — le texte se retrouvait sur la montgolfière quasi sans voile.
   Les nouveaux paliers gardent au moins ~0,4 d'opacité jusqu'à 65 %, vérifié
   contre le bord réel du titre de 701 à 1 920 px. */
@media (max-width:700px){
  .hero-visual::after{background:linear-gradient(180deg,rgb(16 36 48 / .5) 0%,rgb(16 36 48 / .72) 30%,rgb(16 36 48 / .62) 62%,rgb(16 36 48 / .55) 100%)}
}

/* ==========================================================================
   V8 — corrections du client (16 octobre 2026)
   ========================================================================== */

/* 7. Carte du monde retirée de l'accueil (demande du client) : voir le
   commentaire de build_site.py sur l'essai, abandonné, des drapeaux emoji. */

/* 8. Le paragraphe d'ouverture défile sur les sept expertises. Chaque item
   occupe la même cellule de grille (grid-area:1/1) : c'est ce qui dimensionne
   le conteneur sur le PLUS LARGE des sept mots sans qu'aucun ne pousse les
   autres ni ne fasse sauter la largeur du paragraphe au fil du défilement. */
.hero-cycle{display:inline-grid;vertical-align:top;text-align:left}
.hero-cycle-track{display:grid}
.hero-cycle-item{grid-area:1/1;opacity:0;color:var(--accent);font-weight:600;animation:hero-cycle 14s infinite}
/* ⚠ Pas de style="--i" : clean() (build_site.py) jette tout style inline qui
   ne contient pas le mot « --duree » (réservé au défilement des logos), donc
   un --i posé ici disparaîtrait au build. Le décalage passe par nth-child. */
.hero-cycle-item:nth-child(1){animation-delay:0s}
.hero-cycle-item:nth-child(2){animation-delay:-2s}
.hero-cycle-item:nth-child(3){animation-delay:-4s}
.hero-cycle-item:nth-child(4){animation-delay:-6s}
.hero-cycle-item:nth-child(5){animation-delay:-8s}
.hero-cycle-item:nth-child(6){animation-delay:-10s}
.hero-cycle-item:nth-child(7){animation-delay:-12s}
@keyframes hero-cycle{0%,14.2%,100%{opacity:0}2%,12%{opacity:1}}
@media (prefers-reduced-motion:reduce),print{
  .hero-cycle-item{animation:none;opacity:0}
  .hero-cycle-item:first-child{opacity:1}
}

/* ==========================================================================
   V9 — retours de Christian sur Google Chat (16 octobre 2026)
   ========================================================================== */

/* 1. « système d'information » : couleur plutôt qu'italique. --accent est déjà
   vérifié sur cette même image (.hero-cycle-item l'y utilise). */
.hero-title em{font-style:normal;color:var(--accent)}

/* 2. KPI de chaque page d'expertise remontés en tête de page : déplacés dans
   la source (header, juste après le paragraphe d'ouverture), voir
   scripts/v9_corrections.py. Ils héritent de .interior-copy .stats, déjà
   utilisé par la page Références — aucune règle neuve nécessaire ici. */

/* 3. Logos partenaires par expertise sur case blanche fixe, pour qu'ils
   ressortent aussi bien en thème clair qu'en mode sombre forcé par le
   téléphone (Android, par ex.), qui inverse une page sans
   prefers-color-scheme. Scopé à .expertise-detail seul : ne touche ni le mur
   de la page Partenaires, ni le défilement de l'accueil. */
.expertise-detail .logo-wall.balanced>li{background:#fff;border:1px solid var(--line);border-radius:10px}
