/* Content refresh: original company logos, larger services and craft galleries. */
body{font-family:'Open Sans',Arial,sans-serif;isolation:isolate}
h1,h2,h3{letter-spacing:-.045em}
.brand-watermark{position:fixed;top:50%;left:50%;width:min(65vw,850px);height:85vh;transform:translate(-50%,-50%);background:url('assets/logo-outline.jpg') center/contain no-repeat;opacity:.13;mix-blend-mode:multiply;pointer-events:none;z-index:-1}
.brand-logo{display:block;width:280px;height:auto;max-height:68px;object-fit:contain}
.site-header{gap:24px}.site-header nav{gap:22px}.site-header .brand{min-width:0}
.footer-brand .brand-logo{width:260px}
.hero-photo{inset:0 0 0 29%;background-position:center 53%}
.hero:before{background:linear-gradient(90deg,#081523 0%,#081523ef 30%,#08152366 61%,#08152310 100%)}
.hero h1 em{color:#dc4350}
.intro,.approach,.partners{position:relative}
.service-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.service-card{min-height:465px;padding:34px 30px 82px}
.service-card h3{font-weight:600;font-size:clamp(29px,2.8vw,42px);line-height:1.16}
.service-card p{font-size:17px;line-height:1.75;color:#c4d2dc}
.service-no{font-size:13px}.service-link{left:30px;font-size:15px}
.service-icon{width:78px;height:78px;margin:30px 0}
.renewable{position:relative;isolation:isolate;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:7%;padding:95px 0 120px}
.renewable-watermark{position:absolute;z-index:0;top:50%;right:-5%;width:min(45vw,560px);height:auto;transform:translateY(-50%);opacity:.22;mix-blend-mode:multiply;pointer-events:none}
.renewable-photo{position:relative;z-index:1;overflow:hidden;border-radius:32px;box-shadow:var(--glass-shadow);background:#dbe4d5}
.renewable-copy{position:relative;z-index:1}
.renewable-photo img{display:block;width:100%;height:580px;object-fit:cover;object-position:62% center}
.renewable-photo>span{position:absolute;left:22px;bottom:22px;padding:12px 18px;background:#132d20e8;color:#fff;border:1px solid #ffffff60;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.08em}
.renewable-copy .section-index{color:#35654b}.renewable-copy h2{margin:28px 0;font-size:clamp(42px,4.6vw,68px)}
.renewable-copy h2 span{color:#35654b}.renewable-copy .lead{font-size:24px;line-height:1.4;font-weight:600;color:var(--ink)}
.renewable-copy>p{color:var(--muted)}.renewable-copy .btn{margin-top:12px}
.partner-grid{grid-template-columns:repeat(6,minmax(0,1fr))}
.expertise-rows{display:flex;flex-direction:column;gap:18px}
.expertise-row{display:grid;grid-template-columns:70px 1fr 32%;gap:28px;align-items:center;padding:24px 24px 24px 32px;border:1px solid #fff;border-radius:30px;background:linear-gradient(130deg,#fff,#ffffffa6);box-shadow:0 12px 35px #08152308;transition:background .25s,box-shadow .25s}
.expertise-row h3{font-size:clamp(30px,3.7vw,52px);font-weight:600;margin-bottom:15px}
.expertise-row p{color:var(--muted);margin:0 0 24px;max-width:430px}
.expertise-row img{width:100%;height:230px;object-fit:cover;border-radius:22px}
.expertise-number{align-self:start;padding-top:12px;font-size:14px;color:var(--blue)}
.expertise-action{display:inline-flex;gap:20px;align-items:center;color:var(--blue);font-size:14px;font-weight:700}
.expertise-action>span{font-size:24px;transition:transform .25s}
.expertise-row:hover{background:#fff;box-shadow:0 18px 40px #08152314}.expertise-row:hover .expertise-action>span{transform:translate(3px,-3px)}
.gallery-nav{position:static;display:flex;flex-wrap:wrap;gap:12px;padding:0;margin-top:36px;background:none;box-shadow:none}
.gallery-nav a{display:inline-flex;padding:12px 20px;border-radius:999px;border:1px solid #b4cbd8;background:#fff;font-size:14px;font-weight:600}
.gallery-nav a:after{display:none}.gallery-nav a:hover{border-color:var(--blue);color:var(--blue)}
.project-gallery{scroll-margin-top:130px;padding:80px 0}.project-gallery .work-heading h2{font-size:clamp(38px,4.8vw,64px)}
.category-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}
.category-grid .work-card,.category-grid .work-card:first-child,.category-grid .work-card:nth-child(2){grid-column:auto;height:500px}
.category-grid .work-card img{object-position:center}
#sanitaire .category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
#lavabos .category-grid{grid-template-columns:minmax(0,850px)}
#lavabos .work-card{height:560px}#lavabos .work-card img{object-position:center 60%}
.work-card b{font-size:19px;line-height:1.4}
.reviews-section{padding:105px 0}.reviews-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin:32px 0 40px}
.reviews-heading p{color:var(--muted);margin:24px 0 0}.reviews-heading .btn{flex:none}
.reviews-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.review-card{display:flex;flex-direction:column;min-width:0;padding:32px;background:linear-gradient(145deg,#fff,#f1f6fae8);border:1px solid #fff;border-radius:28px;box-shadow:var(--glass-shadow)}
.review-author{display:flex;align-items:center;gap:14px}.review-avatar{display:flex;align-items:center;justify-content:center;flex:none;width:48px;height:48px;border-radius:50%;font-size:15px;font-weight:600;color:#fff;background:#24567e}
.review-card:nth-child(2) .review-avatar{background:#48785c}.review-card:nth-child(3) .review-avatar{background:#8d4b42}.review-card:nth-child(4) .review-avatar{background:#675486}
.review-author h3{font-size:18px;letter-spacing:-.02em;font-weight:600;margin:0 0 5px;line-height:1.3}.review-author div>span{font-size:12px;color:var(--muted)}
.google-letter{margin-left:auto;color:#4285f4;font-size:26px;font-weight:700}
.review-card blockquote{font-size:17px;line-height:1.8;margin:26px 0;color:#314b5b}
.review-card>a{margin-top:auto;padding-top:14px;border-top:1px solid #dce5e9;font-size:13px;font-weight:600;color:var(--blue);align-self:start}
.reviews-source{font-size:12px;color:var(--muted);margin:24px 0 0;max-width:680px}
.reviews-intro{padding-bottom:0}.reviews-intro+.reviews-section{padding-top:60px}
.map-section{display:grid;grid-template-columns:.75fr 1.25fr;overflow:hidden;border:1px solid white;border-radius:32px;background:#fff;box-shadow:var(--glass-shadow);margin-bottom:100px}
.map-info{padding:48px 36px;display:flex;flex-direction:column;align-items:start;justify-content:center}
.map-info h2{font-size:clamp(32px,3vw,44px);margin:26px 0}.map-info p{color:var(--muted);font-size:17px;line-height:1.9}
.map-section iframe{border:0;width:100%;height:100%;min-height:460px;background:#e4edf0}
.training{display:grid;grid-template-columns:96px 1fr auto;gap:28px;align-items:center;border-top:1px solid #ffffff26;padding:36px 0;color:#d8e4ee}
.training img{border-radius:18px}.training h2{font-size:24px;font-weight:600;margin:12px 0;letter-spacing:-.025em}
.training .section-index{font-size:10px;color:#a6ddf7}.training p{font-size:14px;max-width:620px;color:#afc1cf;margin:0}
.training>a{font-size:13px;font-weight:600;padding:12px 0;border-bottom:1px solid #ffffff40}
@media(max-width:1250px){.brand-logo{width:230px}.site-header{gap:18px;padding:0 24px}.site-header nav{gap:16px}.site-header nav a{font-size:13px}.header-cta{font-size:12px;padding:14px}.service-card{padding:30px 24px 80px}.service-link{left:24px}.renewable-photo img{height:530px}.expertise-row{grid-template-columns:35px 1fr 30%;gap:20px}.training{grid-template-columns:80px 1fr}.training>a{grid-column:2;justify-self:start}.training img{width:80px;height:80px}}
@media(min-width:851px) and (max-width:1050px){.site-header .header-cta{display:none}.site-header nav{margin-left:auto}}
@media(max-width:950px){.service-list{grid-template-columns:1fr}.service-card{min-height:340px;padding:30px 32px 75px;display:grid;grid-template-columns:90px 1fr;gap:10px 28px}.service-no{grid-column:1/-1}.service-icon{grid-column:1;margin:20px 0}.service-card>div:last-of-type{grid-column:2}.service-card h3{font-weight:600;font-size:36px}.service-link{left:150px}.renewable{gap:5%;padding:65px 0 85px}.renewable-photo img{height:500px}.renewable-copy h2{font-size:45px}.renewable-copy .lead{font-size:21px}.partner-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.map-section{grid-template-columns:1fr}.map-info{padding:36px}.map-section iframe{height:400px;min-height:400px}}
@media(max-width:850px){.site-header nav a{font-size:16px}.site-header .header-cta{display:inline-flex}.gallery-nav{display:flex;flex-direction:row;align-items:center}.gallery-nav a{width:auto}.renewable{grid-template-columns:1fr;gap:35px}.renewable-watermark{top:auto;right:50%;bottom:2%;width:min(90vw,520px);transform:translateX(50%);opacity:.18}.renewable-photo img{height:430px}.renewable-copy{max-width:650px}.expertise-row{grid-template-columns:26px 1fr 28%;gap:18px;padding:20px}.expertise-row img{height:230px}.expertise-row h3{font-size:34px}.expertise-row p{font-size:14px}.reviews-heading{align-items:start;flex-direction:column}.training{gap:20px}.brand-watermark{width:85vw;opacity:.1}}
@media(max-width:600px){.brand-logo{width:min(245px,65vw);max-height:58px}.site-header .header-cta{display:none}.footer-brand .brand-logo{width:235px}.hero-photo{inset:0;background-position:62% center}.hero:before{background:linear-gradient(90deg,#081523ef,#08152394)}.service-card{display:block;padding:28px 26px 85px;min-height:420px}.service-card h3{font-weight:600;font-size:36px}.service-card p{font-size:16px}.service-icon{margin:26px 0}.service-link{left:26px}.renewable{padding:50px 0 75px}.renewable-photo{border-radius:24px}.renewable-photo img{height:360px}.renewable-photo>span{left:16px;bottom:16px;font-size:10px}.renewable-copy h2{font-size:46px}.renewable-copy .btn{font-size:12px;padding:16px 20px}.partner-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.expertise-row{grid-template-columns:22px 1fr;gap:12px 16px;padding:22px;border-radius:24px}.expertise-row h3{font-size:31px;line-height:1.15}.expertise-row p{margin-bottom:12px}.expertise-row img{grid-column:1/-1;height:220px;margin-top:8px}.expertise-number{padding-top:5px}.project-intro h1{font-size:clamp(43px,12vw,65px)}.gallery-nav{gap:8px}.gallery-nav a{padding:10px 15px;font-size:12px}.project-gallery{padding:55px 0;scroll-margin-top:105px}.category-grid,#sanitaire .category-grid{grid-template-columns:1fr}.category-grid .work-card,.category-grid .work-card:first-child,.category-grid .work-card:nth-child(2){height:470px}#lavabos .work-card{height:390px}.reviews-section{padding:70px 0}.reviews-grid{grid-template-columns:1fr;gap:16px}.review-card{padding:25px 22px;border-radius:24px}.review-author h3{font-size:16px}.review-avatar{width:42px;height:42px;font-size:13px}.review-author{gap:10px}.review-card blockquote{font-size:16px}.reviews-heading{margin-top:28px}.reviews-heading h2{font-size:42px}.reviews-heading .btn{font-size:13px}.map-section{border-radius:24px;margin-bottom:70px}.map-info{padding:30px 24px}.map-info h2{font-size:34px}.map-info .section-index{font-size:10px}.map-section iframe{height:350px;min-height:350px}.training{grid-template-columns:64px 1fr;gap:18px;padding:30px 0}.training img{width:64px;height:64px}.training h2{font-size:20px;line-height:1.25}.training p{font-size:13px}.training>a{grid-column:1/-1}.training .section-index{font-size:9px}.project-end{align-items:start;flex-direction:column}.project-end h2{font-size:34px}}
@media(prefers-reduced-motion:reduce){.expertise-action>span{transition:none}.expertise-row:hover .expertise-action>span{transform:none}}

body.gallery-open{overflow:hidden}

/* Animated testimonials: a quiet reading surface inside a moving light field. */
.reviews-immersive{position:relative;isolation:isolate;width:calc(100% - 48px);max-width:none;margin:25px 24px 80px;padding:100px max(56px,calc((100% - 1320px)/2));border-radius:36px;overflow:hidden;color:#fff;background:#081523;box-shadow:0 30px 80px #08152322}
.reviews-immersive>*:not(.review-ambient){position:relative;z-index:1}
.review-ambient{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 90% 5%,#14648b66,transparent 55%),radial-gradient(ellipse at 5% 100%,#ad2b4233,transparent 60%)}
.review-ambient span{position:absolute;width:560px;height:560px;border:1px solid #67c8f42b;border-radius:50%;right:-120px;top:70px;animation:review-orbit 20s linear infinite}
.review-ambient span:nth-child(2){width:700px;height:700px;right:-190px;top:0;border-style:dashed;animation-direction:reverse;animation-duration:45s}
.review-ambient span:nth-child(3){width:340px;height:340px;right:0;top:180px;border-color:#ff7e8b40;box-shadow:0 0 100px #007eb014,inset 0 0 80px #007eb018;animation:review-breathe 8s ease-in-out infinite}
.review-ambient span:first-child:before{content:'';position:absolute;width:10px;height:10px;border-radius:50%;top:50%;left:-5px;background:#73d6ff;box-shadow:0 0 25px #73d6ff}
.review-kicker{display:flex;align-items:center;gap:12px;color:#a9dafa;font-size:11px;font-weight:700;letter-spacing:.16em}
.review-kicker>span{width:7px;height:7px;border-radius:50%;background:#79d8b6;box-shadow:0 0 0 5px #79d8b612;animation:review-pulse 3s ease-in-out infinite}
.reviews-immersive .reviews-heading{margin:30px 0 45px}.reviews-immersive h2{font-size:clamp(48px,6.3vw,88px);line-height:1.05;letter-spacing:-.055em}
.reviews-immersive h2>span{color:#acdafa;background:linear-gradient(100deg,#82cff6 10%,#e6f7ff 35%,#ec9aa6 55%,#82cff6 85%);background-size:240% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:review-title-shine 12s ease-in-out infinite}
.reviews-immersive .reviews-heading p{color:#b3c7d7;font-size:16px}.reviews-immersive .reviews-heading .btn{background:#ffffff0e;border-color:#ffffff42;box-shadow:inset 0 1px 0 #ffffff1c;color:#fff}
.reviews-immersive .review-card{position:relative;overflow:hidden;border-color:#ffffff30;background:linear-gradient(135deg,#ffffff15,#ffffff05);box-shadow:inset 0 1px 0 #ffffff30,0 20px 50px #0002;color:#fff}
.reviews-immersive .review-author h3{color:#fff;font-size:20px}.reviews-immersive .review-author div>span{color:#a9c1d3}.reviews-immersive .review-avatar{border:1px solid #ffffff30;box-shadow:0 8px 20px #0002}
.reviews-immersive .review-card blockquote{color:#e4eef5;position:relative;z-index:1}
.reviews-immersive .review-card>a{color:#a0defb;border-color:#ffffff35}.reviews-immersive .google-letter{color:#c2e8ff}
.review-quote-mark{position:absolute;right:36px;top:22px;font:180px/1 Georgia,serif;color:#a7dafc12;pointer-events:none;transition:transform .8s}
.reviews-immersive .reviews-source{color:#8faabd;font-size:11px;line-height:1.7}
.review-signature{display:flex;gap:24px;margin-top:40px;font-size:clamp(18px,2.7vw,34px);font-weight:600;letter-spacing:-.04em;color:#c7dfef}
.review-signature span{animation:review-word 7s ease-in-out infinite}.review-signature span:nth-child(2){animation-delay:1s}.review-signature span:nth-child(3){animation-delay:2s}
.reviews-enhanced .reviews-grid{display:flex;gap:0;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;border-radius:28px;outline-offset:5px;isolation:isolate}
.reviews-enhanced .reviews-grid::-webkit-scrollbar{display:none}
.reviews-enhanced .review-card{flex:0 0 100%;min-height:400px;padding:40px 44px;scroll-snap-align:start;scroll-snap-stop:always;transform:none;opacity:1;transition:border-color .4s;background:radial-gradient(600px circle at var(--review-light-x,70%) var(--review-light-y,20%),#6dc3ef17,transparent 70%),linear-gradient(135deg,#ffffff14,#ffffff04)}
.reviews-enhanced .review-card blockquote{max-width:940px;font-size:clamp(22px,2.55vw,34px);font-weight:500;line-height:1.65;letter-spacing:-.025em;margin:32px 0}
.reviews-enhanced .review-card>a{font-size:13px}.reviews-enhanced .review-quote-mark{font-size:250px;top:0;right:40px}
.review-controls{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:24px 0 20px}
.review-navigation{display:flex;align-items:center;gap:10px}.review-navigation button{display:grid;place-items:center;width:46px;height:46px;border:1px solid #ffffff40;border-radius:50%;background:#ffffff08;color:white;transition:background .25s,transform .25s}
.review-navigation button:hover{background:#ffffff20;transform:translateY(-2px)}.review-navigation .ui-icon{width:20px;height:20px}
.review-counter{font-size:13px;letter-spacing:.08em;color:#9eb9cc;margin-right:12px;min-width:52px}
.review-pause{display:inline-flex;align-items:center;gap:9px;border:0;background:none;color:#b9d3e4;font-size:12px;padding:12px 0;min-height:44px}
.review-pause svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.review-pagination{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.review-tab{position:relative;padding:20px 0 6px;text-align:left;border:0;background:none;color:#829db1;font-size:12px;line-height:1.5;transition:color .3s}
.review-tab:before,.review-tab:after{content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:2px;background:#ffffff1f}
.review-tab:after{right:auto;width:100%;background:linear-gradient(90deg,#64caff,#ff8292);transform:scaleX(0);transform-origin:left}
.review-tab[aria-current=true]{color:#fff}.review-tab[aria-current=true]:after{transform:scaleX(1)}
.reviews-autoplay .review-tab[aria-current=true]:after{animation:review-progress 7s linear both;animation-play-state:paused}
.reviews-playing .review-tab[aria-current=true]:after{animation-play-state:running}
.review-tab span{color:#6e96af;font-size:10px;display:block;margin-bottom:4px;letter-spacing:.12em}
@keyframes review-orbit{to{transform:rotate(360deg)}}
@keyframes review-breathe{0%,100%{transform:scale(.94);opacity:.5}50%{transform:scale(1.06);opacity:1}}
@keyframes review-pulse{50%{box-shadow:0 0 0 8px #79d8b608}}
@keyframes review-title-shine{0%,100%{background-position:0 50%}50%{background-position:100% 50%}}
@keyframes review-word{0%,70%,100%{opacity:.55;transform:translateY(0)}35%{opacity:1;transform:translateY(-4px)}}
@keyframes review-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media(max-width:850px){.reviews-immersive{padding:75px 32px}.reviews-enhanced .review-card{padding:34px;min-height:440px}.reviews-enhanced .review-card blockquote{font-size:25px}.reviews-immersive .reviews-heading{gap:28px}.review-ambient span{right:-300px}.review-ambient span:nth-child(2){right:-370px}.review-ambient span:nth-child(3){right:-190px}}
@media(max-width:600px){.reviews-immersive{width:calc(100% - 24px);margin:20px 12px 60px;padding:55px 20px;border-radius:28px}.reviews-immersive h2{font-size:clamp(41px,12vw,56px)}.reviews-immersive .reviews-heading p{font-size:14px}.reviews-immersive .reviews-heading{margin-bottom:30px}.reviews-immersive .reviews-heading .btn{font-size:12px;padding:14px 20px}.review-kicker{font-size:9px;letter-spacing:.1em}.reviews-enhanced .review-card{padding:26px 22px;min-height:490px;border-radius:24px}.reviews-immersive .review-author h3{font-size:16px}.reviews-immersive .review-author div>span{font-size:10px}.reviews-enhanced .review-card blockquote{font-size:21px;line-height:1.65;margin:28px 0}.reviews-enhanced .review-quote-mark{font-size:180px;right:14px;top:30px}.review-pagination{gap:12px}.review-tab{font-size:10px;padding-top:15px;overflow-wrap:anywhere}.review-controls{gap:8px;margin-top:18px}.review-counter{margin-right:4px;font-size:11px;min-width:44px}.review-navigation{gap:7px}.review-navigation button{width:42px;height:42px}.review-pause{font-size:10px;gap:5px}.review-signature{gap:14px;flex-wrap:wrap;font-size:21px;margin-top:32px}.reviews-immersive .reviews-source{font-size:10px}.reviews-intro+.reviews-section{padding-top:55px}}
@media(prefers-reduced-motion:reduce){.review-ambient span,.review-kicker>span,.reviews-immersive h2>span,.review-signature span,.reviews-autoplay .review-tab[aria-current=true]:after{animation:none}.review-tab[aria-current=true]:after{transform:scaleX(1)}.review-navigation button{transition:none}.review-navigation button:hover{transform:none}}
.review-controls{flex-wrap:wrap}.review-navigation,.review-pause{flex-shrink:0}
.reviews-immersive .review-author>div{min-width:0}.reviews-immersive .review-author h3{overflow-wrap:anywhere}
@media(max-width:600px){.reviews-intro h1{font-size:clamp(38px,11vw,60px);overflow-wrap:anywhere}}


/* Les cartes ajoutées depuis Firebase reprennent exactement le style des cartes existantes. */
.firebase-expertise-row{animation:firebase-card-in .65s cubic-bezier(.2,.65,.3,1) both}
@keyframes firebase-card-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.firebase-expertise-row{animation:none}}
