@font-face{font-family:"Public Sans Fallback";src:local("Arial"),local("Helvetica Neue"),local("Liberation Sans");size-adjust:100.8%;ascent-override:96%;descent-override:24%;line-gap-override:0%}
@font-face{font-family:"Bricolage Grotesque Fallback";src:local("Arial"),local("Helvetica Neue"),local("Liberation Sans");size-adjust:103.5%;ascent-override:95%;descent-override:24%;line-gap-override:0%}
:root{--bg:#F3F6FC;--surface:#fff;--ink:#061230;--muted:#4B5568;--line:#D5DAE5;--accent:#0B5CFF;--on-accent:#fff;--soft:#E1EBFF;--ok:#067647;--err:#B42318;color-scheme:light dark}
@media (prefers-color-scheme:dark){:root{--bg:#050B1E;--surface:#0C1633;--ink:#F5F7FB;--muted:#AEB8CF;--line:#1E2D57;--accent:#5B9BFF;--on-accent:#0B1020;--soft:#0F1D45;--ok:#6CE9A6;--err:#FDA29B}}
.dark{--bg:#050B1E;--surface:#0C1633;--ink:#F5F7FB;--muted:#AEB8CF;--line:#1E2D57;--accent:#5B9BFF;--on-accent:#0B1020;--soft:#0F1D45;background:var(--bg);color:var(--ink)}
*{box-sizing:border-box}html{scroll-padding-top:5rem;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.0625rem/1.6 "Public Sans","Public Sans Fallback",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:"Bricolage Grotesque","Bricolage Grotesque Fallback","Public Sans",sans-serif;line-height:1.05;letter-spacing:-.03em;margin:0 0 .5em}
h1{font-size:clamp(2.6rem,7.2vw,5.6rem)}h2{font-size:clamp(2rem,4.8vw,3.4rem)}h3{font-size:1.5rem;letter-spacing:-.02em}
p{margin:0 0 1em;max-width:65ch}a{color:var(--accent)}img,svg{max-width:100%}.pic-c{display:contents}.pic-c>source{display:none}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}
.wrap{width:min(1120px,100% - 2.5rem);margin-inline:auto}
.skip{position:absolute;left:-999px;background:var(--ink);color:var(--bg);padding:.8rem 1rem;z-index:30}.skip:focus{left:1rem;top:1rem}
/* En-tête translucide */
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 70%,transparent);-webkit-backdrop-filter:saturate(180%) blur(22px);backdrop-filter:saturate(180%) blur(22px);border-bottom:1px solid transparent;transition:border-color .3s}
.top.scrolled{border-color:var(--line)}
.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:4rem}
.brand{display:flex;align-items:center;gap:.6rem;color:var(--ink);text-decoration:none;font:700 1.05rem "Bricolage Grotesque",sans-serif}
.brand img{height:2.2rem;width:auto;flex:none}
nav a{color:var(--ink);text-decoration:none;padding:.7rem .9rem;display:inline-flex;align-items:center;min-height:44px;opacity:.85}
nav a:hover,nav a[aria-current]{opacity:1}nav a[aria-current]{text-decoration:underline;text-underline-offset:.45em;text-decoration-thickness:2px}
.btn,nav a.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.7rem 1.5rem;border-radius:980px;background:var(--accent);color:var(--on-accent);font:600 1rem inherit;font-family:inherit;text-decoration:none;border:2px solid var(--accent);cursor:pointer;opacity:1;transition:transform .25s,filter .25s}
.btn:hover,nav a.btn:hover{transform:scale(1.04);filter:brightness(1.1);color:var(--on-accent)}
.btn.alt{background:transparent;color:var(--accent)}.btn.alt:hover{color:var(--accent);background:var(--soft)}
.menu-btn{display:none;min-height:44px;padding:0 1.1rem;background:none;border:2px solid var(--line);border-radius:980px;color:var(--ink);font:inherit;cursor:pointer}
@media (max-width:760px){.menu-btn{display:block}.js nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--bg);border-bottom:1px solid var(--line);padding:.5rem 1.25rem 1rem;flex-direction:column;align-items:stretch}.js nav.open{display:flex}}
.actions{display:flex;gap:.8rem;flex-wrap:wrap}
/* Bandes plein écran */
.band{position:relative;overflow:hidden;padding:clamp(4rem,10vw,8rem) 0}
.center{text-align:center}.center p{margin-inline:auto}.center .actions{justify-content:center}
.lead{font-size:clamp(1.15rem,2vw,1.5rem);color:var(--muted)}
/* Hero + fond animé */
.hero{padding:clamp(4rem,9vw,7rem) 0 0}
.orb{position:absolute;border-radius:50%;filter:blur(90px);opacity:.5;pointer-events:none;translate:0 var(--py,0px)}
.o1{width:38rem;height:38rem;left:-10rem;top:-8rem;background:radial-gradient(circle,#0B5CFF,transparent 65%);animation:drift 16s ease-in-out infinite alternate}
.o2{width:34rem;height:34rem;right:-8rem;top:6rem;background:radial-gradient(circle,#00B8FF,transparent 65%);opacity:.32;animation:drift 20s ease-in-out infinite alternate-reverse}
.o3{width:30rem;height:30rem;left:35%;bottom:-14rem;background:radial-gradient(circle,#2B3FD6,transparent 65%);opacity:.35;animation:drift 18s ease-in-out infinite alternate}
@keyframes drift{to{transform:translate(4rem,3rem) scale(1.15)}}
.hero .wrap{position:relative}
.hero h1{max-width:15ch;margin-inline:auto}
/* Maquette : fenêtre + téléphone */
.stage{position:relative;max-width:980px;margin:clamp(3rem,6vw,5rem) auto 0;height:clamp(17rem,44vw,31rem);translate:0 var(--py,0px)}
.win{position:absolute;inset:0 16% 0 0;background:var(--surface);border:1px solid var(--line);border-radius:1.3rem 1.3rem 0 0;box-shadow:0 -10px 80px -20px rgba(47,91,255,.5);overflow:hidden}
.win-bar{display:flex;gap:.4rem;padding:.8rem 1rem;border-bottom:1px solid var(--line)}.win-bar i{width:.65rem;height:.65rem;border-radius:50%;background:var(--line)}
.sk{padding:1.2rem;display:grid;gap:.9rem}.sk .b1{height:clamp(5rem,15vw,11rem);border-radius:.9rem;background:linear-gradient(110deg,var(--accent),#00B8FF 55%,var(--accent));background-size:200% 100%;animation:sheen 7s linear infinite}
@keyframes sheen{to{background-position:-200% 0}}
.sk .row{display:grid;grid-template-columns:repeat(3,1fr);gap:.9rem}.sk .row i{height:3.6rem;border-radius:.7rem;background:var(--soft)}.sk .ln{height:.7rem;border-radius:.4rem;background:var(--line);width:55%}
.phone{position:absolute;right:0;bottom:0;width:min(31%,15rem);aspect-ratio:9/17;background:var(--surface);border:6px solid #1E2950;border-bottom:0;border-radius:2rem 2rem 0 0;padding:.9rem .7rem;display:flex;flex-direction:column;justify-content:flex-end;gap:.5rem;box-shadow:0 30px 70px -10px rgba(0,0,0,.6)}
.msg{max-width:90%;padding:.5rem .75rem;border-radius:.9rem;font-size:clamp(.65rem,1.5vw,.9rem);line-height:1.35}
.msg.bot{background:var(--soft);border-bottom-left-radius:.25rem}.msg.me{background:var(--accent);color:var(--on-accent);align-self:flex-end;border-bottom-right-radius:.25rem}
.js .msg{opacity:0;transform:translateY(8px);transition:opacity .4s,transform .4s}.js .msg.on{opacity:1;transform:none}
/* Apparitions au défilement (les éléments au-dessus de la ligne de flottaison restent peints dès la trame 1 pour un LCP optimal) */
.js [data-r]{opacity:0;transform:translateY(34px);transition:opacity 1s cubic-bezier(.2,.7,.2,1),transform 1s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i,0)*90ms)}
.js [data-r].in{opacity:1;transform:none;z-index: 9;}
.js main>.band:first-of-type [data-r]{opacity:1;transform:none;transition:none;animation:hero-in .55s cubic-bezier(.2,.7,.2,1) both}
@keyframes hero-in{from{transform:translateY(10px)}to{transform:none}}
@media (prefers-reduced-motion:reduce){.js main>.band:first-of-type [data-r]{animation:none}}
.crumbs-hero{font-size:.9rem;color:var(--muted);margin:0 auto 1.1rem;display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:.45rem}.crumbs-hero a{color:var(--muted);text-decoration:none}.crumbs-hero a:hover,.crumbs-hero a:focus-visible{color:var(--accent);text-decoration:underline}
/* Phrase qui se révèle mot à mot */
.scrub{font:700 clamp(1.8rem,4.6vw,3.6rem)/1.15 "Bricolage Grotesque",sans-serif;letter-spacing:-.03em;max-width:24ch}
.js .scrub span{opacity:.18;transition:opacity .35s}.js .scrub span.on{opacity:1}
/* Tuiles de services */
.tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:1rem;margin-top:3rem}
.tile{grid-column:span 3;position:relative;display:flex;flex-direction:column;min-height:23rem;padding:2rem;border-radius:2rem;overflow:hidden;color:var(--ink);text-decoration:none;background:linear-gradient(160deg,var(--soft),var(--surface));border:1px solid var(--line);transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.tile.dark{background:linear-gradient(160deg,#0F1D45,#050B1E);border-color:#1E2D57}
.tile:hover{transform:scale(1.015)}.tile h3{margin-bottom:.3em}.tile p{color:var(--muted);max-width:30ch}
.tile .tile-art{margin-top:auto;align-self:flex-end;width:min(62%,280px);height:auto;transition:transform .7s cubic-bezier(.2,.7,.2,1)}.tile:hover .tile-art{transform:scale(1.08) rotate(-1.5deg)}
.tile .photo{border-radius:1rem;object-fit:cover;aspect-ratio:4/3}
.t-web,.t-mobile,.t-ai{grid-column:span 4}.t-app,.t-shop,.t-data{grid-column:span 2}
@media (max-width:860px){.tiles{grid-template-columns:minmax(0,1fr)}.tile,.t-web,.t-mobile,.t-ai,.t-app,.t-shop,.t-data{grid-column:auto;min-height:19rem}}
/* Méthode avec ligne de progression */
.steps{--prog:0;position:relative;list-style:none;margin:3rem 0 0;padding:0 0 0 3.4rem;display:grid;gap:2.5rem;max-width:44rem}
.steps::before,.steps::after{content:"";position:absolute;left:1.15rem;top:.5rem;bottom:.5rem;width:3px;border-radius:3px;background:var(--line)}
.steps::after{background:var(--accent);transform-origin:top;transform:scaleY(var(--prog))}
.steps li{position:relative}.steps li::before{content:attr(data-n);position:absolute;left:-3.4rem;top:-.1rem;width:2.4rem;height:2.4rem;border-radius:50%;display:grid;place-items:center;background:var(--bg);border:2px solid var(--accent);color:var(--accent);font-weight:600}
.steps h3{margin:0 0 .15em}.steps p{margin:0;color:var(--muted)}
/* FAQ */
.faq{max-width:48rem;margin-inline:auto}.faq details{border-bottom:1px solid var(--line)}.faq details:first-child{border-top:1px solid var(--line)}
.faq summary{cursor:pointer;min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:1rem;font-weight:600;font-size:1.15rem;list-style:none}
.faq summary::-webkit-details-marker{display:none}.faq summary::after{content:"+";font-size:1.8rem;font-weight:400;color:var(--accent);transition:transform .3s}.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{color:var(--muted);margin:0 0 1.2rem}
/* Appel final */
.cta-band{background:radial-gradient(60% 120% at 20% 0%,#0B5CFF55,transparent),radial-gradient(60% 120% at 90% 100%,#2B3FD655,transparent),var(--bg)}
/* Pages internes */
.page-h{padding:clamp(3rem,7vw,5rem) 0 1rem}.page-h p{font-size:1.25rem;color:var(--muted)}
.svc .wrap{display:grid;grid-template-columns:1.2fr 1fr;gap:3rem;align-items:center}
.svc.rev .wrap>:first-child{order:2}

.illus{width:100%;max-width:380px;height:auto;justify-self:center}.svc .photo{border-radius:2rem;width:100%;aspect-ratio:4/3;object-fit:cover}
.about-banner{border-radius:2rem;width:100%;max-height:26rem;object-fit:cover;margin:1rem 0 2rem}
@media (max-width:860px){.svc .wrap{grid-template-columns:minmax(0,1fr);gap:1.5rem}.svc.rev .wrap>:first-child{order:0}.illus{max-width:260px;justify-self:start}}
.prose h2{margin-top:2rem;font-size:1.5rem}.about-illus{max-width:380px;margin:1.5rem 0}
/* Formulaire */
form{display:grid;gap:1.1rem;max-width:36rem}label{display:grid;gap:.35rem;font-weight:600}label small{font-weight:400;color:var(--muted)}
input:not([type=checkbox]):not([type=radio]),select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:2px solid var(--line);border-radius:.9rem;padding:.7rem .9rem;min-height:48px;width:100%}
:where(input[type=checkbox],input[type=radio]){flex:none;width:1.125rem;height:1.125rem;min-height:0;margin:0;padding:0;accent-color:var(--accent);cursor:pointer}
textarea{min-height:9rem}input:not([type=checkbox]):not([type=radio]):focus,select:focus,textarea:focus{outline:3px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
input[type=checkbox]:focus-visible,input[type=radio]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.invalid{border-color:var(--err)}.msg-err{color:var(--err);font-weight:500}
.notice{padding:1rem 1.2rem;border-radius:1rem;border:2px solid var(--ok)}.notice.err{border-color:var(--err)}
.check{display:flex;gap:.65rem;align-items:flex-start;font-weight:400}.check input{flex:none;width:1.125rem;height:1.125rem;min-height:0;margin:.18rem 0 0;padding:0}
.hp{position:absolute;left:-9999px;height:0;overflow:hidden}
.foot{border-top:1px solid var(--line);padding:3.5rem 0 0;color:var(--muted);font-size:.97rem;background:var(--surface)}
.foot a{color:var(--ink);text-decoration:none}.foot a:hover{color:var(--accent)}.foot a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
.foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1.2fr;gap:2.5rem 3rem;padding-bottom:2.5rem}
.foot-brand p{max-width:30ch;margin:0 0 1.25rem;line-height:1.55}
.foot-h{font-size:.78rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink);margin:0 0 .75rem}
.foot-col{display:flex;flex-direction:column}.foot-col>a{padding:.45rem 0}
.foot address{font-style:normal;display:grid;gap:.25rem}
.foot-line{display:flex;gap:.75rem;align-items:flex-start;padding:.45rem 0;line-height:1.5;color:var(--ink)}
.foot-line svg{flex:none;width:20px;height:20px;margin-top:.1rem;fill:none;stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.foot-social{display:flex;gap:.6rem;list-style:none;margin:0;padding:0}
.foot-social a{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:var(--bg);transition:background .2s,color .2s,border-color .2s,transform .2s}
.foot-social a:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent);transform:translateY(-2px)}
.foot-bar{border-top:1px solid var(--line)}
.foot-bar-in{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1.5rem;padding:1rem 0;font-size:.9rem}
.foot-bar-in p{margin:0}.foot-bar-in nav{display:flex;flex-wrap:wrap;gap:0 1.5rem}.foot-bar-in nav a{padding:.6rem 0;color:var(--muted)}.foot-bar-in nav a:hover{color:var(--accent)}
@media (max-width:900px){.foot-grid{grid-template-columns:1fr 1fr}.foot-brand{grid-column:1/-1}}
@media (max-width:560px){.foot-grid{grid-template-columns:minmax(0,1fr)}.foot-bar-in{flex-direction:column;align-items:flex-start}}
@media (prefers-reduced-motion:reduce){.foot-social a{transition:none}.foot-social a:hover{transform:none}}
@media (prefers-reduced-motion:reduce){.orb,.sk .b1{animation:none}.tile,.tile-art,.btn{transition:none}}
.tile .tile-art.photo{width:100%;max-width:none;align-self:stretch;margin-top:1.5rem;border-radius:1.2rem;aspect-ratio:4/3;object-fit:cover}
.tile:has(.photo){min-height:0}

.ico-s{width:1.5rem;height:1.5rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.flogo{width:160px;height:auto;margin-bottom:1rem}
.from{display:inline-block;margin:.6rem 0 0;font-weight:600;color:var(--accent)}.tile .from{position:relative}
.checks{list-style:none;padding:0;margin:0 0 1.6rem;display:grid;gap:.6rem}.checks li{padding-left:1.8rem;position:relative}
.checks li::before{content:"";position:absolute;left:0;top:.42em;width:1rem;height:.55rem;border-left:3px solid var(--accent);border-bottom:3px solid var(--accent);rotate:-45deg}
.feats{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem 2rem;margin-top:3rem}.feat p{color:var(--muted)}.feat .ic{width:3.4rem;height:3.4rem;border-radius:1.1rem;background:var(--soft);color:var(--accent);display:grid;place-items:center;margin-bottom:1rem}.feat .ic .ico-s{width:1.7rem;height:1.7rem}
@media (max-width:860px){.feats{grid-template-columns:1fr 1fr}}@media (max-width:560px){.feats{grid-template-columns:minmax(0,1fr)}}
.chip{position:absolute;z-index:2;display:flex;align-items:center;gap:.5rem;padding:.55rem .95rem;border-radius:980px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:#fff;font-weight:600;font-size:.95rem;translate:0 var(--py,0px);animation:bob 6s ease-in-out infinite alternate}
.c1{left:-2%;top:12%}.c2{right:4%;top:-7%;animation-delay:-2s}.c3{left:5%;bottom:10%;animation-delay:-4s}.c4{right:-1%;top:46%;animation-delay:-1s}
@keyframes bob{to{margin-top:-14px}}@media (max-width:700px){.c3,.c4{display:none}}@media (prefers-reduced-motion:reduce){.chip{animation:none}}
/* Image fixe : elle reste immobile à l'écran, la section (clip-path) la découpe et le contenu défile par-dessus */
.show,.cta-band{clip-path:inset(0)}
.bgimg{position:fixed;left:0;top:0;width:100%;height:100vh;height:100lvh;object-fit:cover;z-index:0}
.show,.cta-band{isolation:isolate}.show::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#050B1Ee6,#050B1E66);z-index:1}.show .wrap,.cta-band .wrap{position:relative;z-index:2}
.cta-band::before{content:"";position:absolute;inset:0;background:#050B1E99;z-index:1}
.show{padding:clamp(5rem,14vw,10rem) 0}.show .checks{font-size:1.2rem;margin:1.5rem 0 2rem}
.stage-img,.banner{display:block;width:100%;border-radius:2rem}.stage-img{max-width:900px;margin:3rem auto 0;border-radius:2rem 2rem 0 0;translate:0 var(--py,0px)}.banner{max-height:30rem;object-fit:cover}
.pills{position:sticky;top:4rem;z-index:15;display:flex;gap:.5rem;overflow-x:auto;padding:.7rem 1.25rem;background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--line);scrollbar-width:none}
.pill{min-height:44px;padding:.5rem 1.1rem;border-radius:980px;border:1px solid var(--line);color:var(--ink);text-decoration:none;white-space:nowrap;display:inline-flex;align-items:center;transition:background .25s}
.pill:hover{background:var(--soft)}.pill[aria-current="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.psec{padding:clamp(3rem,7vw,5rem) 0;border-top:1px solid var(--line)}.psec:first-of-type{border-top:0}.psec h2{margin-bottom:.3em}
.pcards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:2.5rem}
.pcard{position:relative;display:flex;flex-direction:column;padding:2rem;border-radius:2rem;background:var(--surface);border:1px solid var(--line);transition:transform .5s cubic-bezier(.2,.7,.2,1)}.pcard:hover{transform:translateY(-6px)}
.pcard.feat{border:2px solid var(--accent);background:linear-gradient(180deg,var(--soft),var(--surface))}
.pcard h3{margin-bottom:.2em}.pcard .checks{flex:1}.pcard .btn{align-self:stretch}
.badge{position:absolute;top:-.9rem;left:2rem;background:var(--accent);color:var(--on-accent);border-radius:980px;padding:.25rem .9rem;font-size:.85rem;font-weight:600}
.price{font:700 clamp(2.2rem,4vw,3rem)/1.05 "Bricolage Grotesque",sans-serif;letter-spacing:-.03em;margin:.4rem 0 .5rem}.price small{font:500 1rem "Public Sans",sans-serif;color:var(--muted);letter-spacing:0}
.delay{color:var(--muted);font-size:.97rem;margin-bottom:1.2rem}
@media (max-width:860px){.pcards{grid-template-columns:minmax(0,1fr)}}
@media (prefers-reduced-motion:reduce){.pcard{transition:none}}

/* Appareils réalistes */
.stage{height:auto;aspect-ratio:100/62;container-type:inline-size}
.links{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.lap{position:absolute;left:0;top:0;width:84%}
.lap-lid{position:relative;background:linear-gradient(#3b3f4c,#14161c);border-radius:1.6% 1.6% .6% .6%/2.6% 2.6% 1% 1%;padding:1.5% 1.5% 2%;box-shadow:inset 0 0 0 1px #5a5f70,0 50px 90px -30px rgba(0,0,0,.75)}
.lap-lid::before{content:"";position:absolute;top:.6%;left:50%;width:.5%;aspect-ratio:1;border-radius:50%;background:#222733}
.lap-scr{position:relative;aspect-ratio:16/10;overflow:hidden;border-radius:.5%;background:#FAF7F2}
.lap-scr img{display:block;width:100%;height:auto;animation:scrollsite 32s ease-in-out infinite alternate}
.lap-scr::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,rgba(255,255,255,.14),transparent 42%)}
@keyframes scrollsite{0%,8%{transform:translateY(0)}92%,100%{transform:translateY(-65.38%)}}
.lap-base{position:relative;width:110%;margin:0 -5%;height:clamp(8px,1.6cqw,16px);background:linear-gradient(#eceef5,#9aa1b2);border-radius:0 0 1.2rem 1.2rem}
.lap-base::before{content:"";position:absolute;left:42%;right:42%;top:0;height:48%;background:#8c93a5;border-radius:0 0 .6rem .6rem}
.ph-wrap{position:absolute;right:0;bottom:-4%;z-index:3}.stage .phone-d{--w:23cqw}
.phone-d{--w:260px;position:relative;width:var(--w);aspect-ratio:9/18.6;font-size:calc(var(--w)/21);padding:.5em;border-radius:2.6em;background:linear-gradient(160deg,#b4bccf,#4b5266);box-shadow:0 40px 70px -15px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.35)}
.pscr{position:relative;height:100%;display:flex;flex-direction:column;overflow:hidden;border:.35em solid #05060a;border-radius:2.2em;background:#F4F6FB;color:#1B2433;text-align:left}
.isl{position:absolute;top:.6em;left:50%;translate:-50% 0;width:5.2em;height:1.5em;background:#000;border-radius:1em;z-index:2}
.ph-hd{display:flex;align-items:center;gap:.6em;padding:2.8em .9em .7em;background:#fff;border-bottom:1px solid #E4E7EC}
.ph-hd b{display:block;font-size:.8em}.ph-hd small{display:block;font-size:.65em;color:#667085}
.av{display:grid;place-items:center;width:2.3em;height:2.3em;border-radius:50%;background:#0B5CFF;flex:none}.av img{width:1.5em;height:auto}
.chatbox{flex:1;display:flex;flex-direction:column;justify-content:flex-end;gap:.5em;padding:.8em;overflow:hidden}
.chatbox .m{max-width:86%;padding:.55em .8em;border-radius:1.1em;font-size:.8em;line-height:1.35}
.m.me{align-self:flex-end;background:#0B5CFF;color:#fff;border-bottom-right-radius:.3em}.m.bot{align-self:flex-start;background:#fff;border:1px solid #E4E7EC;border-bottom-left-radius:.3em}
.js .chatbox .m{opacity:0;transform:translateY(10px) scale(.97);transition:opacity .45s,transform .45s}.js .chatbox .m.on{opacity:1;transform:none}
.typing{display:none;align-self:flex-start;gap:.3em;padding:.7em .85em;background:#fff;border:1px solid #E4E7EC;border-radius:1.1em}.typing.on{display:flex}
.typing i{width:.5em;height:.5em;border-radius:50%;background:#98A2B3;animation:dot 1s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes dot{50%{translate:0 -.35em;opacity:.5}}
.ph-in{display:flex;align-items:center;justify-content:space-between;margin:.4em .7em .8em;padding:.5em .8em;background:#fff;border:1px solid #E4E7EC;border-radius:2em;font-size:.7em;color:#98A2B3}.ph-in i{width:2em;height:2em;border-radius:50%;background:#0B5CFF}
.sb{position:absolute;width:.25em;background:#7c849a;border-radius:.2em}.s1{left:-.2em;top:16%;height:2em}.s2{left:-.2em;top:24%;height:3.4em}.s3{right:-.2em;top:22%;height:5em}
.split-ai{display:grid;grid-template-columns:1.2fr 1fr;gap:3rem;align-items:center}.ph-wrap2{display:flex;justify-content:center}
@media (max-width:860px){.split-ai{grid-template-columns:minmax(0,1fr)}.stage{margin-top:2.5rem}}
@media (prefers-reduced-motion:reduce){.lap-scr img,.typing i{animation:none}}

/* Bandeau cookies */
.ck{position:fixed;left:0;right:0;bottom:0;z-index:100;padding:.75rem;pointer-events:none}
.ck[hidden]{display:none}
.ck-in{pointer-events:auto;width:min(960px,100%);margin-inline:auto;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:20px;padding:1.25rem 1.5rem;box-shadow:0 20px 50px -12px rgba(5,11,30,.35);max-height:calc(100dvh - 1.5rem);overflow:auto}
.ck-title{font-size:1.1rem;margin:0 0 .4rem}
.ck-desc{margin:0 0 1rem;color:var(--muted);line-height:1.55;font-size:.95rem}.ck-desc a{color:var(--accent)}
.ck-btns{display:flex;flex-wrap:wrap;gap:.6rem}.ck-btns .btn{min-height:44px;padding:.55rem 1.25rem;font-size:.95rem;flex:1 1 auto}.ck-btns [hidden]{display:none}
.ck-prefs{display:grid;gap:.75rem;margin:0 0 1rem}.ck-prefs[hidden]{display:none}
.ck-row{display:flex;justify-content:space-between;align-items:center;gap:1.25rem;padding:.9rem 1rem;border:1px solid var(--line);border-radius:14px;background:var(--bg)}
.ck-row p{margin:.25rem 0 0;color:var(--muted);font-size:.9rem;line-height:1.45}
.ck-always{flex:none;font-size:.85rem;font-weight:600;color:var(--ok)}
.ck-sw{position:relative;flex:none;width:52px;height:30px;cursor:pointer}
.ck-sw input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.ck-sw span{position:absolute;inset:0;border-radius:30px;background:var(--line);transition:background .2s}
.ck-sw span::after{content:"";position:absolute;top:4px;left:4px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s}
.ck-sw input:checked+span{background:var(--accent)}.ck-sw input:checked+span::after{transform:translateX(22px)}
.ck-sw input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}
.ck-title:focus{outline:none}
.foot-link{background:none;border:0;padding:.6rem 0;font:inherit;color:var(--muted);cursor:pointer}.foot-link:hover{color:var(--accent)}.foot-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
@media (max-width:560px){.ck-in{padding:1rem}.ck-btns .btn{flex-basis:100%}.ck-row{align-items:flex-start}}
@media (prefers-reduced-motion:reduce){.ck-sw span,.ck-sw span::after{transition:none}}

/* Captcha du formulaire */
.captcha{display:grid;gap:.5rem}.captcha .cq{font-weight:400;color:var(--muted)}label.captcha input{max-width:9rem}
.captcha .msg-err{color:var(--err);font-weight:500}

/* Pages de service */
.feats.f4{grid-template-columns:repeat(2,1fr)}
@media (max-width:560px){.feats.f4{grid-template-columns:minmax(0,1fr)}}
.svc h2 a{color:inherit;text-decoration:none}
.svc h2 a:hover,.svc h2 a:focus-visible{text-decoration:underline}
.svc h3{margin:1.6rem 0 .6rem}
@media (min-width:901px){.foot-grid{grid-template-columns:1.5fr 1fr 1fr 1.2fr}}

/* Blog */
.post-h1{font-size:clamp(2rem,5.2vw,3.7rem);max-width:22ch;margin-inline:auto}
.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1rem;margin:0 0 1rem;font-size:.95rem;color:var(--muted)}
.center-meta{justify-content:center}
.post-cat{display:inline-block;padding:.2rem .8rem;border-radius:980px;background:var(--soft);color:var(--accent);font-weight:600;font-size:.85rem}
.post-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:1.5rem}
.post-card{display:flex;flex-direction:column;border-radius:2rem;overflow:hidden;background:var(--surface);border:1px solid var(--line);transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.post-card:hover{transform:translateY(-6px)}
.post-card-img{display:block;aspect-ratio:16/9;overflow:hidden;background:var(--soft)}
.post-card-img img{width:100%;height:100%;object-fit:cover;display:block;border-radius:0;margin:0;aspect-ratio:16/9}
.post-card-b{padding:1.6rem 1.8rem 1.9rem;display:flex;flex-direction:column;flex:1}
.post-card-b h2{font-size:1.5rem;letter-spacing:-.02em;line-height:1.15;margin:0 0 .6rem}
.post-card-b h2 a{color:inherit;text-decoration:none}.post-card-b h2 a:hover,.post-card-b h2 a:focus-visible{text-decoration:underline}
.post-card-b p{color:var(--muted)}
.post-card-b .more{margin-top:auto;font-weight:600;text-decoration:none}.post-card-b .more:hover{text-decoration:underline}
.crumbs{font-size:.92rem;color:var(--muted);margin:0 auto 1.5rem;max-width:760px}.crumbs a{color:var(--muted)}.crumbs a:hover{color:var(--accent)}
.article{max-width:760px;margin-inline:auto}
.post-banner{margin-bottom:2rem;max-height:24rem}
.article-body p,.article-body li{font-size:1.125rem;line-height:1.75}
.article-body p{max-width:none}
.article-body h2{font-size:clamp(1.6rem,3.2vw,2.15rem);margin:2.6rem 0 .8rem;line-height:1.12}
.article-body h3{font-size:1.25rem;margin:1.8rem 0 .5rem}
.article-body ul,.article-body ol{padding-left:1.3rem;margin:0 0 1.4rem}
.article-body li{margin:.55rem 0}
.article-body .lead-p{font-size:1.25rem;padding:1.2rem 1.4rem;border-left:4px solid var(--accent);background:var(--soft);border-radius:0 1rem 1rem 0}
.tbl-wrap{overflow-x:auto;margin:1.4rem 0 2rem;border:1px solid var(--line);border-radius:1.2rem}
.article-body table{width:100%;border-collapse:collapse;font-size:1rem;min-width:560px}
.article-body th,.article-body td{padding:.85rem 1rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.article-body thead th{background:var(--soft);font-weight:600}
.article-body tbody tr:last-child th,.article-body tbody tr:last-child td{border-bottom:0}
.toc{margin:0 0 2rem;padding:1.3rem 1.6rem;border-radius:1.4rem;background:var(--surface);border:1px solid var(--line)}
.toc-h{margin:0 0 .5rem;font:700 1.05rem "Bricolage Grotesque",sans-serif}
.toc ol{margin:0;padding-left:1.2rem}.toc li{margin:.3rem 0}.toc a{text-decoration:none}.toc a:hover{text-decoration:underline}
.post-cta{margin:3rem 0 1rem;padding:2rem;border-radius:2rem;background:linear-gradient(180deg,var(--soft),var(--surface));border:2px solid var(--accent)}
.post-cta h2{margin-top:0}
.post-updated{margin-top:2rem;font-size:.95rem;color:var(--muted)}
.back{max-width:760px;margin:1.5rem auto 0}.back a{font-weight:600;text-decoration:none}.back a:hover{text-decoration:underline}
/* Carrousel « Actualités du blog » (accueil) */
.news-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.5rem}.news-head h2{margin:0}
.news-nav{display:flex;gap:.6rem;flex:none}
.news-btn{width:48px;height:48px;border-radius:50%;border:2px solid var(--accent);background:transparent;color:var(--accent);font-size:1.3rem;font-family:inherit;line-height:1;cursor:pointer}
.news-btn:hover:not(:disabled){background:var(--soft)}.news-btn:disabled{opacity:.35;cursor:default}
.news-track{display:flex;gap:1.5rem;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding:.6rem .25rem 1.2rem;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.news-track::-webkit-scrollbar{display:none}
.news-track .post-card{flex:0 0 min(86%,380px);scroll-snap-align:start}
.news-track .post-card-b h3{font-size:1.35rem;letter-spacing:-.02em;line-height:1.15;margin:0 0 .6rem}
.news-track .post-card-b h3 a{color:inherit;text-decoration:none}.news-track .post-card-b h3 a:hover,.news-track .post-card-b h3 a:focus-visible{text-decoration:underline}
.news-track .post-card-b p:not(.post-meta){display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:1.2rem}
.news-track .post-card-b .btn{align-self:flex-start;margin-top:auto}
@media (prefers-reduced-motion:reduce){.news-track{scroll-behavior:auto}}
/* Carrousel des logos clients (accueil) */
.logos{padding:clamp(2.5rem,5vw,4rem) 0}.logos-h{font-size:clamp(1.4rem,3vw,2rem);margin:0 0 1.8rem}
.logos-view{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.logos-track{display:flex;width:max-content;margin:0;padding:.4rem 0;list-style:none;animation:logos var(--dur,40s) linear infinite}
.logos-view:hover .logos-track,.logos-view:focus-within .logos-track{animation-play-state:paused}
.logos-track li{flex:none;margin:0 1.25rem 0 0}
.logo-item{display:flex;align-items:center;justify-content:center;height:84px;min-width:150px;padding:.9rem 1.6rem;border-radius:1rem;background:#fff;border:1px solid var(--line)}
.logo-item img{display:block;max-height:48px;max-width:160px;width:auto;height:auto;object-fit:contain;filter:grayscale(1);opacity:.75;transition:filter .3s,opacity .3s}
a.logo-item:hover img,a.logo-item:focus-visible img{filter:none;opacity:1}
@keyframes logos{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.logos-track{animation:none;flex-wrap:wrap;width:auto;justify-content:center;row-gap:1rem}.logos-track li[aria-hidden]{display:none}.logos-view{-webkit-mask-image:none;mask-image:none}}

/* ===== Assistant hybride Prime Vision Solutions (Guidé + IA RAG) — design premium & animations fluides ===== */
.pvs-chat{
  --chat-blue:#0b5cff;
  --chat-cyan:#38bdf8;
  --chat-navy:#06142e;
  --chat-navy-2:#0f2854;
  --chat-surface:#ffffff;
  --chat-bg-soft:#f3f7ff;
  --chat-ink:#0c1b38;
  --chat-muted:#546584;
  --chat-line:#dce7fa;
  --chat-bubble:#eff4fe;
  --chat-bubble-line:#dfeafc;
  position:fixed;
  right:clamp(14px,2.2vw,28px);
  bottom:clamp(14px,2.2vw,26px);
  z-index:9000;
  font-family:inherit;
  color:var(--chat-ink);
}
.pvs-chat .sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.pvs-chat [hidden]{display:none!important}
.pvs-chat button:focus-visible,.pvs-chat input:focus-visible,.pvs-chat a:focus-visible{outline:3px solid #6ba5ff;outline-offset:2px}

/* Bulle d'aperçu flottante (teaser) */
.pvs-chat-teaser{
  position:absolute;
  right:74px;
  bottom:8px;
  display:flex;
  align-items:center;
  gap:.25rem;
  padding:.35rem .45rem .35rem .8rem;
  border-radius:999px;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border:1px solid rgba(11,92,255,.22);
  box-shadow:0 14px 36px -10px rgba(6,20,46,.22),0 2px 8px rgba(11,92,255,.1);
  white-space:nowrap;
  animation:pvs-teaser-in .48s cubic-bezier(.16,1,.3,1) both;
}
.pvs-chat-teaser.is-hiding{animation:pvs-teaser-out .22s ease forwards}
.pvs-chat-teaser-body{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  padding:0;
  border:0;
  background:none;
  color:var(--chat-ink);
  font:500 .78rem/1.3 inherit;
  cursor:pointer;
}
.pvs-chat-teaser-body strong{font-weight:700;color:var(--chat-blue)}
.pvs-chat-teaser-dot{width:7px;height:7px;border-radius:50%;background:#10b981;box-shadow:0 0 0 3px rgba(16,185,129,.2)}
.pvs-chat-teaser-dismiss{
  display:grid;
  place-items:center;
  width:22px;
  height:22px;
  border:0;
  border-radius:50%;
  background:transparent;
  color:var(--chat-muted);
  font-size:1rem;
  line-height:1;
  cursor:pointer;
  transition:background .2s,color .2s;
}
.pvs-chat-teaser-dismiss:hover{background:#eaf1ff;color:var(--chat-ink)}

/* Bouton lanceur circulaire (logo parfaitement centré + halo orbital) */
.pvs-chat-toggle{
  position:relative;
  overflow:visible;
  display:grid;
  place-items:center;
  width:62px;
  height:62px;
  padding:0;
  gap:0;
  border:2px solid #8cb8ff;
  border-radius:50%;
  background:radial-gradient(circle at 30% 25%,#ffffff 0%,#e8f1ff 100%);
  color:#0a2248;
  box-shadow:0 14px 36px -6px rgba(11,92,255,.38),0 4px 12px rgba(6,20,46,.14);
  cursor:pointer;
  transition:transform .34s cubic-bezier(.2,1,.3,1),box-shadow .34s ease,border-color .28s ease,background .28s ease;
}
.pvs-chat-toggle:hover{
  transform:translateY(-4px) scale(1.04);
  border-color:var(--chat-blue);
  box-shadow:0 20px 44px -6px rgba(11,92,255,.52),0 6px 16px rgba(6,20,46,.18);
}
.pvs-chat-toggle:active{transform:translateY(-1px) scale(.97)}
.pvs-chat-aura{
  position:absolute;
  inset:-5px;
  border-radius:50%;
  pointer-events:none;
  background:conic-gradient(from 0deg,rgba(11,92,255,0),rgba(11,92,255,.38),rgba(56,189,248,.45),rgba(11,92,255,0) 72%);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2.5px),#000 calc(100% - 2px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 2.5px),#000 calc(100% - 2px));
  opacity:.85;
  animation:pvs-aura-spin 4.6s linear infinite;
}
.pvs-chat-launcher-logo{
  grid-area:1/1;
  display:block;
  width:48px;
  height:48px;
  margin:0;
  padding:5px;
  border-radius:50%;
  object-fit:contain;
  object-position:center;
  box-sizing:border-box;
  background:transparent;
  transition:transform .36s cubic-bezier(.2,1,.3,1),opacity .24s ease;
}
.pvs-chat-toggle-close-ico{
  grid-area:1/1;
  display:grid;
  place-items:center;
  width:26px;
  height:26px;
  color:#fff;
  opacity:0;
  transform:rotate(-90deg) scale(.5);
  transition:transform .36s cubic-bezier(.2,1,.3,1),opacity .24s ease;
  pointer-events:none;
}
.pvs-chat.is-open .pvs-chat-toggle{
  background:linear-gradient(145deg,#071a3a,#0d3270);
  border-color:#3a86ff;
}
.pvs-chat.is-open .pvs-chat-launcher-logo{opacity:0;transform:rotate(80deg) scale(.45)}
.pvs-chat.is-open .pvs-chat-toggle-close-ico{opacity:1;transform:rotate(0) scale(1)}

.pvs-chat-notice{
  position:absolute;
  top:-4px;
  right:-4px;
  z-index:5;
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:21px;
  height:21px;
  padding:0 5px;
  border:2px solid #fff;
  border-radius:999px;
  background:linear-gradient(135deg,#ff3b5c,#e02447);
  color:#fff;
  font:700 11px/1 system-ui,sans-serif;
  box-shadow:0 4px 10px rgba(224,36,71,.42);
  animation:pvs-notice-wiggle 2.2s ease-in-out infinite;
  transform-origin:70% 20%;
}
.pvs-chat-online{
  position:absolute;
  right:1px;
  bottom:1px;
  width:13px;
  height:13px;
  border-radius:50%;
  background:#10b981;
  border:2px solid #fff;
  box-shadow:0 0 0 0 rgba(16,185,129,.65);
  animation:pvs-online-pulse 2.2s infinite;
}

/* Fenêtre principale avec physique ressort */
.pvs-chat-panel{
  position:absolute;
  right:0;
  bottom:calc(100% + 14px);
  display:flex;
  flex-direction:column;
  width:min(388px,calc(100vw - 24px));
  height:min(600px,calc(100dvh - 102px));
  min-height:340px;
  background:var(--chat-surface);
  border:1px solid rgba(150,184,245,.48);
  border-radius:24px;
  overflow:hidden;
  box-shadow:0 32px 80px -16px rgba(6,20,46,.36),0 10px 28px -8px rgba(11,92,255,.18),inset 0 1px 0 rgba(255,255,255,.7);
  transform-origin:bottom right;
  animation:pvs-panel-spring .42s cubic-bezier(.16,1,.3,1) both;
}
.pvs-chat-panel.is-closing{animation:pvs-panel-out .2s cubic-bezier(.4,0,1,1) forwards;pointer-events:none}

/* En-tête Aurora lumineux */
.pvs-chat-head{
  position:relative;
  overflow:hidden;
  display:flex;
  align-items:center;
  gap:.72rem;
  padding:.82rem .92rem;
  background:linear-gradient(130deg,#051229 0%,#0b2552 55%,#0e377a 100%);
  color:#fff;
  flex:none;
  isolation:isolate;
}
.pvs-chat-head::before{
  content:"";
  position:absolute;
  inset:-40% -20%;
  z-index:-1;
  background:radial-gradient(circle at 22% 30%,rgba(56,189,248,.26),transparent 46%),radial-gradient(circle at 82% 75%,rgba(11,92,255,.36),transparent 50%);
  animation:pvs-aurora-drift 8s ease-in-out infinite alternate;
  pointer-events:none;
}
.pvs-chat-head::after{
  content:"";
  position:absolute;
  left:0;
  bottom:0;
  width:100%;
  height:2px;
  background:linear-gradient(90deg,transparent,#2c8eff,#5ce1ff,#2c8eff,transparent);
  background-size:200% 100%;
  animation:pvs-laser-line 4.5s linear infinite;
}
.pvs-chat-avatar-wrap{position:relative;flex:none}
.pvs-chat-avatar{
  display:block;
  width:40px;
  height:40px;
  padding:4px;
  box-sizing:border-box;
  border-radius:50%;
  object-fit:contain;
  background:#eaf2ff;
  border:1.5px solid rgba(140,188,255,.75);
  box-shadow:0 4px 14px rgba(5,14,34,.35);
}
.pvs-chat-avatar-status{
  position:absolute;
  right:-1px;
  bottom:-1px;
  width:11px;
  height:11px;
  border-radius:50%;
  background:#10b981;
  border:2px solid #081c3e;
}
.pvs-chat-heading{min-width:0;flex:1}
.pvs-chat-title-row{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}
.pvs-chat-head strong{font-size:.9rem;font-weight:700;line-height:1.2;letter-spacing:-.015em;color:#fff}
.pvs-chat-ai-pill{
  display:inline-flex;
  align-items:center;
  padding:.14rem .46rem;
  border-radius:999px;
  background:linear-gradient(120deg,rgba(45,136,255,.32),rgba(56,189,248,.26));
  border:1px solid rgba(125,200,255,.42);
  color:#d9f0ff;
  font-size:.64rem;
  font-weight:700;
  letter-spacing:.03em;
  text-transform:uppercase;
}
.pvs-chat-head small{display:block;margin-top:.18rem;color:#b8ceef;font-size:.71rem;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pvs-chat-head-btns{display:flex;align-items:center;gap:.3rem;flex:none}
.pvs-chat-icon-btn{
  width:32px;
  height:32px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid rgba(255,255,255,.12);
  border-radius:50%;
  background:rgba(255,255,255,.08);
  color:#e8f1ff;
  cursor:pointer;
  transition:background .22s ease,transform .3s cubic-bezier(.2,1,.3,1),border-color .22s ease;
}
.pvs-chat-icon-btn:hover{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.32)}
.pvs-chat-reset:hover{transform:rotate(-160deg)}
.pvs-chat-close:hover{transform:rotate(90deg)}

/* Zone de conversation */
.pvs-chat-messages{
  display:flex;
  flex-direction:column;
  gap:.85rem;
  padding:1rem .95rem .75rem;
  overflow-y:auto;
  flex:1;
  min-height:110px;
  box-sizing:border-box;
  background:
    radial-gradient(360px circle at 100% 0%,rgba(11,92,255,.05),transparent 65%),
    linear-gradient(180deg,#ffffff 0%,#f5f8ff 100%);
  scrollbar-width:thin;
  scrollbar-color:#c6d7f5 transparent;
}
.pvs-chat-messages::-webkit-scrollbar{width:5px}
.pvs-chat-messages::-webkit-scrollbar-thumb{background:#c6d7f5;border-radius:99px}

.pvs-chat-message-row{
  display:flex;
  align-items:flex-start;
  gap:.5rem;
  max-width:100%;
  margin-inline:2px;
  animation:pvs-msg-spring .36s cubic-bezier(.16,1,.3,1) both;
}
.pvs-chat-message-row.bot{align-self:flex-start}
.pvs-chat-message-row.user{align-self:flex-end;justify-content:flex-end}
.pvs-chat-message-avatar{
  width:28px;
  height:28px;
  flex:0 0 28px;
  padding:2.5px;
  box-sizing:border-box;
  margin-top:.12rem;
  border-radius:50%;
  object-fit:contain;
  background:#eaf2ff;
  border:1px solid #bfd5ff;
  box-shadow:0 3px 8px rgba(11,52,118,.1);
}
.pvs-chat-msg-col{display:flex;flex-direction:column;gap:.42rem;min-width:0;max-width:calc(100% - 36px)}
.pvs-chat-message-row.user .pvs-chat-msg-col{max-width:88%;align-items:flex-end}

.pvs-chat-bubble{
  margin:0;
  padding:.66rem .84rem;
  border-radius:17px 17px 17px 5px;
  background:var(--chat-bubble);
  border:1px solid var(--chat-bubble-line);
  color:var(--chat-ink);
  font-size:.825rem;
  line-height:1.52;
  overflow-wrap:anywhere;
  box-shadow:0 4px 14px -4px rgba(12,35,78,.07);
}
.pvs-chat-bubble strong{font-weight:700;color:#072452}
.pvs-chat-bubble.user{
  white-space:pre-line;
  background:linear-gradient(135deg,#0858f7 0%,#1f7aff 58%,#2f8fff 100%);
  border-color:transparent;
  color:#fff;
  border-radius:17px 17px 5px 17px;
  box-shadow:0 8px 20px -6px rgba(11,92,255,.45);
}
.pvs-chat-p + .pvs-chat-p,.pvs-chat-p + .pvs-chat-list,.pvs-chat-list + .pvs-chat-p{margin-top:.48rem}
.pvs-chat-list{margin:0;padding-left:1.05rem}
.pvs-chat-list li{margin:.22rem 0}
.pvs-chat-bullet-row{display:flex;align-items:flex-start;gap:.38rem;margin-top:.24rem}
.pvs-chat-bullet-dot{color:var(--chat-blue);font-weight:800;line-height:1.45}

/* Mini-cartes interactives (formules, tarifs, articles, réalisations) */
.pvs-chat-cards{display:flex;flex-direction:column;gap:.38rem;width:100%}
.pvs-chat-card{
  display:flex;
  flex-direction:column;
  gap:.2rem;
  padding:.58rem .72rem;
  border-radius:14px;
  background:var(--chat-surface);
  border:1px solid #cfe0fc;
  color:var(--chat-ink);
  text-decoration:none;
  box-shadow:0 4px 12px -4px rgba(11,92,255,.1);
  animation:pvs-choice-spring .38s cubic-bezier(.16,1,.3,1) both;
  animation-delay:calc(var(--i,0) * 55ms);
  transition:transform .24s cubic-bezier(.2,1,.3,1),border-color .22s ease,box-shadow .24s ease;
}
a.pvs-chat-card:hover{
  transform:translateY(-2px);
  border-color:var(--chat-blue);
  box-shadow:0 10px 22px -8px rgba(11,92,255,.26);
}
.pvs-chat-card-top{display:flex;align-items:center;justify-content:space-between;gap:.45rem;flex-wrap:wrap}
.pvs-chat-card-top strong{font-size:.78rem;font-weight:700;color:#08234e}
.pvs-chat-card-badge{
  padding:.13rem .46rem;
  border-radius:999px;
  background:#e9f1ff;
  color:#0854db;
  font-size:.69rem;
  font-weight:700;
  white-space:nowrap;
}
.pvs-chat-card-sub{font-size:.73rem;line-height:1.38;color:var(--chat-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pvs-chat-card-cta{font-size:.71rem;font-weight:700;color:var(--chat-blue);margin-top:.08rem;transition:transform .22s ease}
a.pvs-chat-card:hover .pvs-chat-card-cta{transform:translateX(3px)}

/* Badges de sources RAG */
.pvs-chat-sources{display:flex;flex-wrap:wrap;gap:.3rem}
.pvs-chat-source-tag{
  display:inline-flex;
  align-items:center;
  padding:.14rem .48rem;
  border-radius:999px;
  background:rgba(11,92,255,.07);
  border:1px solid rgba(11,92,255,.16);
  color:#1c4ea6;
  font-size:.66rem;
  font-weight:600;
  letter-spacing:.01em;
}

/* Indicateur d'écriture onde liquide */
.pvs-chat-typing{
  display:inline-flex;
  align-items:center;
  gap:.55rem;
  min-height:34px;
  padding:.52rem .78rem!important;
}
.pvs-chat-typing-dots{display:inline-flex;align-items:center;gap:4px}
.pvs-chat-typing-dots i{
  display:block;
  width:6px;
  height:6px;
  border-radius:50%;
  background:linear-gradient(135deg,#0b5cff,#38bdf8);
  animation:pvs-wave-dot 1.25s infinite ease-in-out;
}
.pvs-chat-typing-dots i:nth-child(2){animation-delay:.16s}
.pvs-chat-typing-dots i:nth-child(3){animation-delay:.32s}
.pvs-chat-typing-label{font-size:.72rem;color:var(--chat-muted);font-weight:500}

/* Puces de suggestions rapides (guidées + contextuelles) */
.pvs-chat-actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.4rem;
  padding:.5rem .8rem .55rem;
  background:rgba(243,247,255,.82);
  border-top:1px solid rgba(215,228,250,.75);
  max-height:138px;
  overflow-y:auto;
  scrollbar-width:thin;
}
.pvs-chat-choice{
  display:flex;
  align-items:center;
  gap:.46rem;
  min-height:40px;
  padding:.44rem .56rem;
  border:1.25px solid #c9dcff;
  border-radius:12px;
  background:linear-gradient(165deg,#ffffff,#f9fbff);
  color:#084ec9;
  text-align:left;
  text-decoration:none;
  font-family:inherit;
  font-weight:650;
  font-size:.74rem;
  line-height:1.28;
  cursor:pointer;
  box-shadow:0 2px 6px rgba(11,92,255,.05);
  animation:pvs-choice-spring .36s cubic-bezier(.16,1,.3,1) both;
  animation-delay:calc(var(--i,0) * 38ms);
  transition:transform .22s cubic-bezier(.2,1,.3,1),border-color .2s,background .2s,box-shadow .22s;
}
.pvs-chat-choice:hover{
  transform:translateY(-2px);
  background:#ecf3ff;
  border-color:#68a0ff;
  box-shadow:0 8px 18px -6px rgba(11,92,255,.22);
}
.pvs-chat-choice:active{transform:translateY(0) scale(.98)}
.pvs-chat-choice.secondary{font-weight:560;color:#495d7e;border-color:#d8e3f4}
.pvs-chat-choice.accent{
  background:linear-gradient(135deg,#0959f5,#1c7dff);
  border-color:transparent;
  color:#fff;
  box-shadow:0 6px 16px -4px rgba(11,92,255,.38);
}
.pvs-chat-choice.accent:hover{background:linear-gradient(135deg,#074cd4,#156ee8);color:#fff}
.pvs-chat-choice-icon{
  display:grid;
  place-items:center;
  flex:0 0 25px;
  width:25px;
  height:25px;
  border-radius:8px;
  background:#eaf2ff;
  color:#0756d8;
  font-size:.9rem;
}
.pvs-chat-choice.accent .pvs-chat-choice-icon{background:rgba(255,255,255,.2);color:#fff}
.pvs-chat-choice-text{flex:1;min-width:0}

/* Barre de saisie libre IA */
.pvs-chat-composer{
  display:flex;
  align-items:center;
  gap:.45rem;
  padding:.52rem .75rem;
  background:var(--chat-surface);
  border-top:1px solid var(--chat-line);
  flex:none;
}
.pvs-chat-input{
  flex:1;
  min-width:0;
  height:39px;
  padding:0 .85rem;
  border:1.5px solid #d2dff4;
  border-radius:999px;
  background:#f7faff;
  color:var(--chat-ink);
  font:450 .82rem/1 inherit;
  transition:border-color .22s ease,background .22s ease,box-shadow .22s ease;
}
.pvs-chat-input::placeholder{color:#7789a8}
.pvs-chat-input:focus{
  background:#fff;
  border-color:var(--chat-blue);
  box-shadow:0 0 0 3.5px rgba(11,92,255,.14);
  outline:0;
}
.pvs-chat-send{
  width:39px;
  height:39px;
  flex:none;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  border-radius:50%;
  background:linear-gradient(135deg,#0959f5,#2585ff);
  color:#fff;
  cursor:pointer;
  box-shadow:0 6px 16px -4px rgba(11,92,255,.4);
  transition:transform .24s cubic-bezier(.2,1,.3,1),box-shadow .24s ease,filter .2s ease;
}
.pvs-chat-send svg{transition:transform .26s cubic-bezier(.2,1,.3,1)}
.pvs-chat-send:hover:not(:disabled){transform:translateY(-2px) scale(1.04);box-shadow:0 10px 22px -4px rgba(11,92,255,.52)}
.pvs-chat-send:hover:not(:disabled) svg,.pvs-chat-send.is-ready svg{transform:translate(1px,-1px)}
.pvs-chat-send:disabled{opacity:.55;cursor:wait}

/* Tiroir coulissant de demande de rappel */
.pvs-chat-lead{
  padding:.75rem .88rem .85rem;
  border-top:1px solid var(--chat-line);
  max-height:66%;
  overflow-y:auto;
  background:var(--chat-surface);
  animation:pvs-drawer-up .32s cubic-bezier(.16,1,.3,1) both;
}
.pvs-chat-lead-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.3rem}
.pvs-chat-lead-top strong{font-size:.84rem;color:var(--chat-ink)}
.pvs-chat-lead-back{
  border:1px solid #d2dff4;
  border-radius:999px;
  padding:.22rem .58rem;
  background:#f5f8ff;
  color:#345184;
  font:600 .71rem/1.2 inherit;
  cursor:pointer;
  transition:background .2s,border-color .2s;
}
.pvs-chat-lead-back:hover{background:#e7f0ff;border-color:#94b8ff}
.pvs-chat-form-intro{margin:0 0 .55rem;font-size:.76rem;line-height:1.42;color:var(--chat-muted)}
.pvs-chat-lead-grid{display:grid;grid-template-columns:1fr 1fr;gap:.48rem;align-items:end}
.pvs-chat-lead label:not(.pvs-chat-consent):not(.pvs-chat-hp){display:block;margin:.38rem 0;font-size:.74rem;font-weight:650;color:#172b50}
.pvs-chat-lead input:not([type=checkbox]){
  display:block;
  box-sizing:border-box;
  width:100%;
  min-height:36px;
  margin-top:.24rem;
  border:1.5px solid #d0daeb;
  border-radius:10px;
  padding:.46rem .62rem;
  font:400 .82rem/1.2 inherit;
  color:#172033;
  background:#fff;
  transition:border-color .2s,box-shadow .2s;
}
.pvs-chat-lead input:not([type=checkbox]):focus{border-color:var(--chat-blue);box-shadow:0 0 0 3px rgba(11,92,255,.14);outline:0}
.pvs-chat-consent{display:flex;gap:.48rem;align-items:flex-start;margin:.55rem 0 .65rem;font-size:.73rem;line-height:1.42;color:#44516a;font-weight:500;cursor:pointer}
.pvs-chat-consent input{flex:none;width:1rem;height:1rem;min-width:1rem;min-height:0;margin:.14rem 0 0;padding:0;accent-color:var(--chat-blue);cursor:pointer}
.pvs-chat-consent a{color:#0756d8;text-underline-offset:2px}
.pvs-chat-hp{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.pvs-chat-submit{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.45rem;
  width:100%;
  border:0;
  border-radius:11px;
  padding:.7rem .9rem;
  background:linear-gradient(105deg,#0757ec,#1c85ff);
  color:#fff;
  font:700 .83rem/1.2 inherit;
  cursor:pointer;
  box-shadow:0 8px 20px -6px rgba(11,92,255,.45);
  transition:transform .22s ease,filter .2s ease;
}
.pvs-chat-submit:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.06)}
.pvs-chat-submit:disabled{opacity:.65;cursor:wait}
.pvs-chat-form-status{margin:.4rem 0 0;font-size:.74rem;color:#b4232c}

.pvs-chat-foot{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.32rem;
  padding:.36rem .75rem .46rem;
  background:var(--chat-surface);
  color:#6a7891;
  font-size:.64rem;
  text-align:center;
  border-top:1px solid #eef2f9;
}
.pvs-chat-foot-spark{color:var(--chat-blue);font-size:.7rem}

/* Mode sombre harmonisé avec la charte Prime Vision Solutions */
@media (prefers-color-scheme:dark){
  .pvs-chat{
    --chat-surface:#0a162f;
    --chat-bg-soft:#0d1d3d;
    --chat-ink:#eaf1ff;
    --chat-muted:#9eb2d4;
    --chat-line:#1c315c;
    --chat-bubble:#112347;
    --chat-bubble-line:#1f386b;
  }
  .pvs-chat-teaser{background:rgba(10,22,47,.92);border-color:rgba(76,144,255,.35)}
  .pvs-chat-teaser-body strong{color:#6da8ff}
  .pvs-chat-teaser-dismiss:hover{background:#162b54;color:#fff}
  .pvs-chat-panel{border-color:rgba(78,138,245,.32);box-shadow:0 32px 84px -12px rgba(0,4,14,.75),0 0 0 1px rgba(56,132,255,.15)}
  .pvs-chat-messages{background:radial-gradient(360px circle at 100% 0%,rgba(45,126,255,.12),transparent 65%),linear-gradient(180deg,#0a162f 0%,#081226 100%);scrollbar-color:#243e73 transparent}
  .pvs-chat-bubble strong,.pvs-chat-card-top strong,.pvs-chat-lead-top strong{color:#f4f8ff}
  .pvs-chat-card{background:#0f2042;border-color:#223c70}
  .pvs-chat-card-badge{background:rgba(45,126,255,.2);color:#8ec0ff}
  .pvs-chat-card-cta{color:#6da8ff}
  .pvs-chat-source-tag{background:rgba(56,140,255,.14);border-color:rgba(92,162,255,.26);color:#9cc4ff}
  .pvs-chat-actions{background:rgba(12,26,54,.92);border-top-color:#1a305b}
  .pvs-chat-choice:not(.accent){background:linear-gradient(165deg,#102246,#0d1c3a);border-color:#25427a;color:#9dc3ff}
  .pvs-chat-choice:not(.accent):hover{background:#162d5c;border-color:#4b86ec}
  .pvs-chat-choice.secondary{color:#b0c2e0;border-color:#203764}
  .pvs-chat-choice-icon{background:rgba(45,126,255,.18);color:#7eb4ff}
  .pvs-chat-input{background:#0f2042;border-color:#233d70;color:#f2f6ff}
  .pvs-chat-input:focus{background:#12264f;border-color:#4b8dff}
  .pvs-chat-lead label:not(.pvs-chat-consent):not(.pvs-chat-hp){color:#dce8ff}
  .pvs-chat-lead input:not([type=checkbox]){background:#0f2042;border-color:#243f73;color:#f2f6ff}
  .pvs-chat-lead-back{background:#12254c;border-color:#27457d;color:#b8d0f7}
  .pvs-chat-consent{color:#a8bcde}
  .pvs-chat-consent a{color:#7eb4ff}
  .pvs-chat-foot{border-top-color:#16294f;color:#8296ba}
}

/* Keyframes haute fluidité */
@keyframes pvs-aura-spin{to{transform:rotate(360deg)}}
@keyframes pvs-aurora-drift{0%{transform:translate3d(-3%,0,0) scale(1)}100%{transform:translate3d(4%,-4%,0) scale(1.08)}}
@keyframes pvs-laser-line{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes pvs-panel-spring{from{opacity:0;transform:translateY(18px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes pvs-panel-out{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(12px) scale(.95)}}
@keyframes pvs-msg-spring{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes pvs-choice-spring{from{opacity:0;transform:translateY(9px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes pvs-drawer-up{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes pvs-teaser-in{from{opacity:0;transform:translateX(12px) scale(.94)}to{opacity:1;transform:translateX(0) scale(1)}}
@keyframes pvs-teaser-out{to{opacity:0;transform:translateX(8px) scale(.95)}}
@keyframes pvs-wave-dot{0%,60%,100%{transform:translateY(0) scale(.9);opacity:.45}30%{transform:translateY(-5px) scale(1.12);opacity:1}}
@keyframes pvs-online-pulse{0%{box-shadow:0 0 0 0 rgba(16,185,129,.65)}70%{box-shadow:0 0 0 7px rgba(16,185,129,0)}100%{box-shadow:0 0 0 0 rgba(16,185,129,0)}}
@keyframes pvs-notice-wiggle{0%,68%,100%{transform:rotate(0) scale(1)}73%{transform:rotate(-12deg) scale(1.08)}79%{transform:rotate(12deg) scale(1.08)}85%{transform:rotate(-7deg)}91%{transform:rotate(5deg)}}

@media (max-width:480px){
  .pvs-chat{right:12px;bottom:12px}
  .pvs-chat-teaser{display:none!important}
  .pvs-chat-toggle{width:56px;height:56px}
  .pvs-chat-launcher-logo{width:44px;height:44px;padding:4px}
  .pvs-chat-panel{
    position:fixed;
    right:8px;
    bottom:76px;
    width:calc(100vw - 16px);
    height:min(560px,calc(100dvh - 88px));
    min-height:300px;
    border-radius:20px;
  }
  .pvs-chat-head{padding:.7rem .8rem}
  .pvs-chat-avatar{width:36px;height:36px}
  .pvs-chat-messages{padding:.85rem .8rem .7rem;gap:.75rem}
  .pvs-chat-actions{max-height:122px;padding:.45rem .68rem .5rem;gap:.36rem}
  .pvs-chat-choice{min-height:38px;padding:.4rem .48rem;font-size:.72rem}
  .pvs-chat-lead-grid{grid-template-columns:1fr;gap:0}
  .pvs-chat-input{font-size:16px}
}
@media (prefers-reduced-motion:reduce){
  .pvs-chat *,.pvs-chat *::before,.pvs-chat *::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}
}

/* Réalisations */
.rz-count{display:inline-grid;place-items:center;min-width:1.4rem;height:1.4rem;margin-left:.45rem;padding:0 .35rem;border-radius:99px;background:var(--soft);color:var(--accent);font-size:.78rem;font-weight:700}
.pill[aria-current="true"] .rz-count{background:var(--on-accent);color:var(--accent)}
.rz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:1.5rem;margin-top:2.5rem}
.rz-item{display:flex;min-width:0}.rz-item>.rz-card{flex:1;min-width:0}
.rz-card{--mx:50%;--my:0%;position:relative;display:flex;flex-direction:column;width:100%;border-radius:2rem;overflow:hidden;isolation:isolate;background:var(--surface);border:1px solid var(--line);color:var(--ink);text-decoration:none;transition:transform .5s cubic-bezier(.2,.7,.2,1),box-shadow .5s,border-color .4s}
.rz-card::after{content:"";position:absolute;inset:0;z-index:3;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .4s;background:radial-gradient(420px circle at var(--mx) var(--my),rgba(91,155,255,.2),transparent 60%)}
.rz-card:hover,.rz-card:focus-visible{transform:translateY(-8px);border-color:var(--accent);box-shadow:0 34px 60px -30px rgba(11,92,255,.6)}
.rz-card:hover::after,.rz-card:focus-visible::after{opacity:1}
.rz-media{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;background:linear-gradient(160deg,var(--soft),var(--surface))}
.rz-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.1s cubic-bezier(.2,.7,.2,1)}
.rz-ph{position:absolute;inset:0;margin:auto;width:46%;height:auto;max-height:80%;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.rz-card:hover .rz-img{transform:scale(1.08)}.rz-card:hover .rz-ph{transform:scale(1.08) rotate(-1.5deg)}
.rz-media::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.3) 50%,transparent 65%);transform:translateX(-120%)}
.rz-card:hover .rz-media::before{transform:translateX(120%);transition:transform 1s ease}
.rz-chip{position:absolute;left:1rem;top:1rem;z-index:4;max-width:calc(100% - 2rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.3rem .9rem;border-radius:980px;font-size:.82rem;font-weight:600;color:var(--ink);background:color-mix(in srgb,var(--bg) 72%,transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.rz-body{display:flex;flex-direction:column;flex:1;min-width:0;padding:1.5rem 1.7rem 1.8rem}
.rz-meta{font-size:.9rem;color:var(--muted);margin-bottom:.4rem}
.rz-body h3{font-size:1.45rem;margin:0 0 .5rem;overflow-wrap:anywhere}
.rz-body p{color:var(--muted);margin:0 0 1.2rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.rz-more{display:inline-flex;align-items:center;gap:.5rem;margin-top:auto;font-weight:600;color:var(--accent)}
.rz-more svg{width:1.2rem;height:1.2rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s}
.rz-card:hover .rz-more svg{transform:translateX(6px)}
/* Bloc d'accueil */
.rz-home .wrap{position:relative;z-index:2}
.rz-head{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap;margin-bottom:3rem}
.rz-head h2{max-width:18ch}.rz-head .lead{max-width:44ch;margin:0}
.rz-kicker{display:inline-flex;align-items:center;gap:.7rem;margin:0 0 1rem;font-size:.82rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.rz-kicker::before{content:"";width:2.4rem;height:2px;background:linear-gradient(90deg,var(--accent),transparent);transform-origin:left;animation:rzline 3.2s ease-in-out infinite alternate}
@keyframes rzline{from{transform:scaleX(.35)}to{transform:scaleX(1)}}
.rz-grad{background:linear-gradient(100deg,var(--accent),#00B8FF 55%,var(--accent));background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:sheen 7s linear infinite}
.rz-show{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:1.5rem}
.rz-show .rz-item{grid-column:span 6}.rz-n1 .rz-item{grid-column:3/span 8}
.rz-n3 .rz-item:first-child{grid-column:span 7;grid-row:span 2}.rz-n3 .rz-item:nth-child(n+2){grid-column:span 5}
.rz-n3 .rz-item:first-child .rz-media{aspect-ratio:auto;flex:1;min-height:20rem}
.rz-n3 .rz-item:nth-child(n+2) .rz-media{aspect-ratio:16/8}
.rz-n3 .rz-item:first-child .rz-body h3{font-size:clamp(1.6rem,2.6vw,2.1rem)}
.rz-home .rz-card{background:linear-gradient(160deg,#0F1D45,#0C1633)}
@media (max-width:860px){.rz-show{grid-template-columns:minmax(0,1fr)}.rz-show .rz-item,.rz-n1 .rz-item,.rz-n3 .rz-item:first-child,.rz-n3 .rz-item:nth-child(n+2){grid-column:auto;grid-row:auto}.rz-n3 .rz-item:first-child .rz-media{aspect-ratio:16/10;min-height:0}}
/* Page détail (minmax(0,…) : le contenu ne force jamais la largeur de la colonne) */
.rz-detail{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:3rem;align-items:start}
.rz-main,.rz-info{min-width:0}
.rz-gal{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:2.5rem}
.rz-fig{position:relative;display:block;min-width:0;overflow:hidden;border-radius:1.5rem;border:1px solid var(--line);background:var(--soft);cursor:zoom-in}
.rz-fig:first-child{grid-column:1/-1}
.rz-fig img{display:block;width:100%;height:auto;transition:transform .8s cubic-bezier(.2,.7,.2,1)}.rz-fig:hover img{transform:scale(1.04)}
.rz-text{margin-bottom:2rem;overflow-wrap:anywhere}
.rz-text img,.rz-text table,.rz-text pre{max-width:100%}
.rz-text pre{overflow-x:auto}
.rz-results{list-style:none;margin:1.2rem 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:1rem}
.rz-results li{padding:1.3rem 1.4rem;border-radius:1.4rem;background:linear-gradient(160deg,var(--soft),var(--surface));border:1px solid var(--line);font-weight:600;font-size:1.1rem;line-height:1.35}
.rz-info{position:sticky;top:6rem;padding:1.8rem;border-radius:2rem;background:var(--surface);border:1px solid var(--line);display:grid;gap:1rem}
.rz-info h2{font-size:1.4rem;margin:0}.rz-info dl{margin:0;display:grid;gap:.9rem}
.rz-info dt{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.rz-info dd{margin:.1rem 0 0;overflow-wrap:anywhere}
.rz-tech{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem}.rz-tech li{padding:.2rem .7rem;border-radius:99px;background:var(--soft);color:var(--accent);font-size:.88rem;font-weight:600}
@media (max-width:900px){.rz-detail{grid-template-columns:minmax(0,1fr)}.rz-info{position:static}}
/* Visionneuse */
.rz-lb{border:0;padding:0;background:transparent;max-width:100vw;max-height:100vh;width:100%;height:100%;color:#fff}
.rz-lb::backdrop{background:rgba(5,11,30,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.rz-lb[open]{display:grid;place-items:center}
.rz-lb img{max-width:min(94vw,1400px);max-height:84vh;width:auto;height:auto;border-radius:1rem;box-shadow:0 30px 90px rgba(0,0,0,.6)}
.rz-lb button{position:absolute;display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;font-size:1.4rem;cursor:pointer}
.rz-lb button:hover{background:rgba(255,255,255,.25)}
.rz-lb-x{top:1rem;right:1rem}.rz-lb-nav{top:50%;translate:0 -50%}.rz-lb-nav.prev{left:1rem}.rz-lb-nav.next{right:1rem}
.rz-lb-n{position:absolute;bottom:1.2rem;left:0;right:0;text-align:center;font-size:.95rem;opacity:.8}
@media (prefers-reduced-motion:reduce){.rz-card,.rz-img,.rz-ph,.rz-fig img,.rz-more svg,.rz-media::before{transition:none}.rz-kicker::before,.rz-grad{animation:none}.rz-card:hover{transform:none}}
/* Logo client (fiche de la réalisation) */
.rz-logo-box{display:grid;place-items:center;height:104px;padding:1rem 1.4rem;border-radius:1.3rem;background:#fff;border:1px solid var(--line)}
.rz-logo-box img{display:block;max-width:100%;max-height:68px;width:auto;height:auto;object-fit:contain}

/* ===== Header v2 : barre d'infos + barre principale fixe ===== */
:root{--hdr-h:4.5rem}
html{scroll-padding-top:5.5rem}
.pills{top:var(--hdr-h)}

/* Barre du haut (défile avec la page) */
.topbar{position:relative;z-index:21;background:linear-gradient(100deg,#050B1E,#0B1A44 55%,#050B1E);color:#C9D3EE;font-size:.88rem}
.topbar::after{content:"";position:absolute;inset:auto 0 0 0;height:1px;background:linear-gradient(90deg,transparent,#0B5CFF,#00B8FF,#0B5CFF,transparent);background-size:200% 100%;animation:tbflow 8s linear infinite}
@keyframes tbflow{to{background-position:-200% 0}}
.topbar-in{display:flex;justify-content:space-between;align-items:center;gap:1rem;min-height:2.75rem}
.tb-contact,.tb-social,.tb-langs{display:flex;align-items:center;gap:.25rem 1.1rem;list-style:none;margin:0;padding:0}
.tb-right{display:flex;align-items:center;gap:.75rem;margin-left:auto}
.tb-social{gap:.5rem}
.tb-langs{gap:.28rem}
.tb-lang{display:inline-flex;align-items:center;gap:.32rem;padding:.24rem .48rem;border-radius:99px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);color:#C9D3EE;font-size:.73rem;font-weight:700;letter-spacing:.03em;text-decoration:none;line-height:1;transition:background .2s ease,border-color .2s ease,color .2s ease,transform .2s ease}
.tb-lang:hover,.tb-lang:focus-visible{background:rgba(255,255,255,.12);border-color:rgba(127,176,255,.5);color:#fff;transform:translateY(-1px)}
.tb-lang.is-active{background:linear-gradient(135deg,rgba(11,92,255,.45),rgba(0,184,255,.32));border-color:#38BDF8;color:#fff;box-shadow:0 0 12px rgba(56,189,248,.28)}
@media (max-width:520px){.tb-lang span{display:none}.tb-lang{padding:.26rem .36rem}}
.tb-sep{width:1px;height:15px;background:rgba(255,255,255,.16);flex:none}
.tb-login{position:relative;display:inline-flex;align-items:center;gap:.38rem;padding:.25rem .1rem;background:none;border:0;color:#C9D3EE;font-size:.82rem;font-weight:500;letter-spacing:.01em;text-decoration:none;white-space:nowrap;cursor:pointer;transition:color .25s ease,transform .2s cubic-bezier(.3,1.5,.5,1)}
.tb-login svg{width:14px;height:14px;fill:none;stroke:#7FB0FF;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none;transition:stroke .25s ease,transform .3s cubic-bezier(.3,1.6,.5,1),filter .25s ease}
.tb-login::after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1.5px;border-radius:2px;background:linear-gradient(90deg,#5B9BFF,#00B8FF);transform:scaleX(0);transform-origin:left center;transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.tb-login:hover,.tb-login:focus-visible{color:#fff;transform:translateY(-1px)}
.tb-login:hover svg,.tb-login:focus-visible svg{stroke:#38BDF8;transform:translateY(-1px) scale(1.14);filter:drop-shadow(0 0 6px rgba(56,189,248,.6))}
.tb-login:hover::after,.tb-login:focus-visible::after{transform:scaleX(1)}
.tb-login:active{color:#7FD4FF;transform:scale(.94) translateY(1px);transition-duration:.08s}
.tb-login:active svg{transform:scale(.92)}
.tb-login:focus-visible{outline:2px solid #7FB0FF;outline-offset:3px;border-radius:4px}
/* Utilisateur connecté dans la topbar */
.tb-user{display:inline-flex;align-items:center;gap:.45rem}
.tb-uname{display:inline-flex;align-items:center;gap:.4rem;color:#E6EEFF;font-size:.81rem;font-weight:500;letter-spacing:.005em;max-width:13rem}
.tb-uname span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tb-udot{width:6px;height:6px;border-radius:50%;background:#34D399;box-shadow:0 0 8px rgba(52,211,153,.75);flex:none}
.tb-out-form{display:inline-flex;gap:0;margin:0;padding:0;max-width:none}
.tb-act{position:relative;display:inline-grid;place-items:center;width:28px;height:28px;padding:0;margin:0;background:none;border:0;color:#AFC4F5;cursor:pointer;text-decoration:none;transition:color .22s ease,transform .22s cubic-bezier(.3,1.6,.5,1)}
.tb-act svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .28s cubic-bezier(.3,1.6,.5,1),filter .22s ease}
.tb-act-dash:hover,.tb-act-dash:focus-visible{color:#fff;transform:translateY(-1.5px)}
.tb-act-dash:hover svg,.tb-act-dash:focus-visible svg{stroke:#38BDF8;transform:scale(1.15) rotate(-4deg);filter:drop-shadow(0 0 6px rgba(56,189,248,.65))}
.tb-act-out:hover,.tb-act-out:focus-visible{color:#FF7B89;transform:translateY(-1px)}
.tb-act-out:hover svg,.tb-act-out:focus-visible svg{transform:translateX(2px) scale(1.12);filter:drop-shadow(0 0 6px rgba(255,107,122,.6))}
.tb-act:active{transform:scale(.88);transition-duration:.08s}
.tb-act:focus-visible{outline:2px solid #7FB0FF;outline-offset:2px;border-radius:6px}
/* Info-bulle instantanée (tooltip) sur les icônes de la topbar */
.tb-act[data-tip]::after{content:attr(data-tip);position:absolute;top:calc(100% + 7px);right:-2px;z-index:50;padding:.3rem .6rem;border-radius:7px;background:#08122E;border:1px solid rgba(127,176,255,.28);color:#F1F5FF;font:500 .74rem/1.2 "Public Sans",system-ui,sans-serif;white-space:nowrap;box-shadow:0 10px 24px -8px rgba(0,0,0,.65);pointer-events:none;opacity:0;visibility:hidden;transform:translateY(-4px) scale(.96);transition:opacity .18s ease,transform .2s cubic-bezier(.2,.7,.2,1),visibility .18s}
.tb-act[data-tip]::before{content:"";position:absolute;top:calc(100% + 3px);right:9px;z-index:51;width:7px;height:7px;background:#08122E;border-left:1px solid rgba(127,176,255,.28);border-top:1px solid rgba(127,176,255,.28);transform:rotate(45deg) translateY(-3px);pointer-events:none;opacity:0;visibility:hidden;transition:opacity .18s ease,transform .2s ease,visibility .18s}
.tb-act[data-tip]:hover::after,.tb-act[data-tip]:focus-visible::after{opacity:1;visibility:visible;transform:none}
.tb-act[data-tip]:hover::before,.tb-act[data-tip]:focus-visible::before{opacity:1;visibility:visible;transform:rotate(45deg)}
.tb-link{display:inline-flex;align-items:center;gap:.6rem;min-height:2.75rem;color:#DCE5F8;text-decoration:none;white-space:nowrap;transition:color .25s}
.tb-phone{font-variant-numeric:tabular-nums}
.tb-link:hover,.tb-link:focus-visible{color:#fff}
.tb-ico{position:relative;display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);color:#7FB0FF;transition:background .3s,color .3s,transform .3s,border-color .3s}
.tb-ico svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.tb-link:hover .tb-ico,.tb-link:focus-visible .tb-ico{background:var(--accent);border-color:var(--accent);color:var(--on-accent);transform:translateY(-2px)}
/* Téléphone : halo pulsé + petite sonnerie */
.tb-phone .tb-ico::after{content:"";position:absolute;inset:-1px;border-radius:50%;border:1px solid #5B9BFF;opacity:0;animation:tbpulse 3.2s ease-out infinite}
.tb-phone .tb-ico svg{animation:tbring 3.2s ease-in-out infinite;transform-origin:50% 50%}
@keyframes tbpulse{0%{transform:scale(1);opacity:.7}60%,100%{transform:scale(1.9);opacity:0}}
@keyframes tbring{0%,55%,100%{transform:rotate(0)}60%{transform:rotate(-16deg)}66%{transform:rotate(14deg)}72%{transform:rotate(-10deg)}78%{transform:rotate(8deg)}84%{transform:rotate(0)}}
/* Réseaux : pastille qui se remplit à la couleur de la marque */
.tb-s{--c:var(--accent);position:relative;display:grid;place-items:center;width:36px;height:36px;border-radius:50%;overflow:hidden;isolation:isolate;color:#E7EDFB;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.05);text-decoration:none;transition:transform .35s cubic-bezier(.2,.7,.2,1),border-color .3s,box-shadow .35s,color .3s}
.tb-s::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--c);transform:translateY(100%);transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.tb-s svg{width:17px;height:17px;transition:transform .4s cubic-bezier(.3,1.6,.5,1)}
.tb-s:hover,.tb-s:focus-visible{transform:translateY(-3px);border-color:transparent;color:#fff;box-shadow:0 10px 20px -8px var(--sh,var(--accent))}
.tb-s:hover::before,.tb-s:focus-visible::before{transform:translateY(0)}
.tb-s:hover svg,.tb-s:focus-visible svg{transform:scale(1.18) rotate(-8deg)}
.tb-s-facebook{--c:#1877F2;--sh:#1877F2}
.tb-s-linkedin{--c:#0A66C2;--sh:#0A66C2}
.tb-s-instagram{--c:linear-gradient(45deg,#F9A03F,#E1306C 50%,#7B3FE4);--sh:#E1306C}
.tb-s:focus-visible,.tb-link:focus-visible{outline:2px solid #7FB0FF;outline-offset:2px}

/* Barre principale (fixe au scroll) */
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 84%,transparent);-webkit-backdrop-filter:saturate(180%) blur(22px);backdrop-filter:saturate(180%) blur(22px);border-bottom:1px solid var(--line);transition:background .35s,box-shadow .35s}
.top::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:linear-gradient(90deg,transparent,var(--accent),#00B8FF,transparent);transform:scaleX(0);transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.top.scrolled{background:color-mix(in srgb,var(--bg) 93%,transparent);box-shadow:0 14px 34px -20px rgba(5,11,30,.55)}
.top.scrolled::after{transform:scaleX(1)}
.top .bar{min-height:var(--hdr-h)}
.brand img{transition:transform .45s cubic-bezier(.3,1.6,.5,1)}
.brand:hover img,.brand:focus-visible img{transform:rotate(-6deg) scale(1.08)}

/* Menu : pastille glissante */
.top nav{position:relative;display:flex;align-items:center;gap:.1rem}
.top nav a:not(.btn){position:relative;z-index:1;padding:.7rem 1.05rem;font-weight:500;font-size:.96rem;letter-spacing:.005em;border-radius:980px;opacity:1;text-decoration:none;background:none;color:color-mix(in srgb,var(--ink) 78%,transparent);transition:color .3s}
.top nav a:not(.btn)::after{content:none}
.top nav a:not(.btn):hover,.top nav a:not(.btn):focus-visible{color:var(--accent)}
.top nav a:not(.btn)[aria-current]{color:var(--accent);text-decoration:none}

.nav-glider{position:absolute;left:0;top:50%;z-index:0;width:var(--w,0);height:2.6rem;border-radius:980px;pointer-events:none;opacity:0;
  transform:translate(var(--x,0),-50%);
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 15%,transparent),color-mix(in srgb,var(--accent) 6%,transparent));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 24%,transparent),0 10px 24px -14px var(--accent);
  transition:transform .5s cubic-bezier(.65,0,.2,1),width .5s cubic-bezier(.65,0,.2,1),opacity .3s}
.nav-glider.on{opacity:1}
.nav-glider::after{content:"";position:absolute;left:50%;bottom:-7px;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent),0 0 12px var(--accent);
  transform:scale(0);transition:transform .4s cubic-bezier(.3,1.6,.5,1)}
.nav-glider.rest::after{transform:scale(1)}

/* Bouton « Demander un devis » */
.top nav a.hdr-cta{position:relative;overflow:hidden;margin-left:.7rem;gap:.55rem;padding:.65rem 1.4rem;border-color:transparent;background:linear-gradient(110deg,var(--accent),color-mix(in srgb,var(--accent) 60%,#00B8FF));box-shadow:0 12px 26px -12px var(--accent);transition:transform .3s,box-shadow .3s}
.top nav a.hdr-cta::before{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.45) 50%,transparent 65%);transform:translateX(-120%)}
.top nav a.hdr-cta span,.top nav a.hdr-cta svg{position:relative}
.top nav a.hdr-cta svg{width:1.1rem;height:1.1rem;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .35s}
.top nav a.hdr-cta:hover,.top nav a.hdr-cta:focus-visible{transform:translateY(-2px);filter:none;box-shadow:0 18px 30px -12px var(--accent)}
.top nav a.hdr-cta:hover::before{transform:translateX(120%);transition:transform .8s ease}
.top nav a.hdr-cta:hover svg{transform:translateX(4px)}

/* Bouton burger */
.menu-btn{display:none;align-items:center;gap:.65rem;border-color:var(--line);transition:border-color .25s,background .25s}
.menu-btn:hover,.menu-btn:focus-visible{border-color:var(--accent);background:var(--soft)}
.menu-ico{position:relative;width:18px;height:12px;flex:none}
.menu-ico i{position:absolute;left:0;width:100%;height:2px;border-radius:2px;background:currentColor;transition:transform .3s,top .3s,opacity .2s}
.menu-ico i:nth-child(1){top:0}.menu-ico i:nth-child(2){top:5px}.menu-ico i:nth-child(3){top:10px}
.menu-btn[aria-expanded="true"] .menu-ico i:nth-child(1){top:5px;transform:rotate(45deg)}
.menu-btn[aria-expanded="true"] .menu-ico i:nth-child(2){opacity:0}
.menu-btn[aria-expanded="true"] .menu-ico i:nth-child(3){top:5px;transform:rotate(-45deg)}

/* Tablette et mobile */
@media (max-width:1060px){
  .js .menu-btn{display:inline-flex}
  .js .top nav{display:flex;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;gap:.2rem;padding:.75rem 1.25rem 1.25rem;background:var(--bg);border-bottom:1px solid var(--line);box-shadow:0 24px 40px -24px rgba(5,11,30,.5);opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .3s,transform .3s,visibility .3s}
  .js .top nav.open{opacity:1;visibility:visible;transform:none}
  .top nav a:not(.btn){padding:.85rem 1rem;border-radius:1rem}
   .nav-glider{display:none}
  .top nav a:not(.btn):hover{background:var(--soft)}
  .top nav a:not(.btn)[aria-current]{background:var(--soft);box-shadow:inset 3px 0 0 var(--accent)}
  .top nav a.hdr-cta{margin:.6rem 0 0;justify-content:center}
  html:not(.js) .top nav{flex-wrap:wrap}
  html:not(.js) .top nav a:not(.btn)[aria-current]{background:var(--soft)}
}
@media (max-width:820px){
  .tb-mail{display:none}
}
@media (max-width:640px){
  .topbar{font-size:.75rem}
  .topbar .topbar-in{width:calc(100% - 1.25rem);gap:.38rem;min-height:2.35rem}
  .tb-contact{flex-shrink:0}
  .tb-link{gap:.34rem;min-height:2.35rem}
  .tb-phone{letter-spacing:-.015em}
  .tb-ico{width:22px;height:22px}
  .tb-ico svg{width:11.5px;height:11.5px}
  .tb-social{gap:.28rem}
  .tb-s{width:26px;height:26px}
  .tb-s svg{width:13px;height:13px}
  .tb-sep{height:12px}
  .tb-right{gap:.38rem;min-width:0}
  .tb-login{font-size:.73rem;gap:.26rem}
  .tb-login svg{width:13px;height:13px}
  .tb-uname{font-size:.73rem;max-width:6.2rem}
  .tb-act{width:25px;height:25px}
  .tb-act svg{width:13.5px;height:13.5px}
}
@media (max-width:430px){
  .topbar{font-size:.72rem}
  .tb-login{font-size:.71rem}
  .tb-right:has(.tb-langs,.tb-user) .tb-social,
  .tb-right:has(.tb-langs,.tb-user) .tb-social+.tb-sep{display:none}
}
@media (max-width:359px){
  .tb-social,.tb-social+.tb-sep{display:none}
}
@media (prefers-reduced-motion:reduce){
  .topbar::after,.tb-phone .tb-ico::after,.tb-phone .tb-ico svg{animation:none}
  .tb-s,.tb-s::before,.tb-s svg,.tb-login,.tb-login svg,.tb-login::after,.tb-act,.tb-act svg,.tb-act[data-tip]::after,.tb-act[data-tip]::before,.tb-ico,.top,.top::after,.brand img,.top nav,.top nav a,.top nav a::after,.hdr-cta svg,.menu-ico i{transition:none}
  .top nav a.hdr-cta::before{display:none}
  .tb-s:hover,.tb-login:hover,.tb-login:active,.tb-login:hover svg,.tb-act:hover,.tb-act:active,.tb-act:hover svg,.top nav a.hdr-cta:hover,.brand:hover img{transform:none}
  .nav-glider,.nav-glider::after{transition:none}
}
/* ===== Menu : sous-menu des services ===== */
.sub-btn{display:grid;place-items:center;width:2rem;height:2rem;padding:0;border:0;border-radius:50%;background:none;color:inherit;cursor:pointer;transition:color .25s,background .25s}
.sub-btn:hover{color:var(--accent)}
.sub-btn svg{width:1rem;height:1rem;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s}
.sub-btn[aria-expanded="true"] svg{transform:rotate(180deg)}
.sub{list-style:none;margin:0;padding:0}
.sub-ic{display:grid;place-items:center;flex:none;width:2rem;height:2rem;border-radius:.65rem;background:var(--soft);color:var(--accent);transition:background .25s,color .25s}
.sub-ic .ico-s{width:1.05rem;height:1.05rem}
.top nav .sub a:not(.btn){display:flex;align-items:center;gap:.7rem;padding:.5rem .7rem;border-radius:.9rem;font-size:.94rem;font-weight:500;white-space:nowrap;color:var(--ink)}
.top nav .sub a:not(.btn):hover,.top nav .sub a:not(.btn):focus-visible,.top nav .sub a:not(.btn)[aria-current]{background:var(--soft);color:var(--accent);box-shadow:none}
.top nav .sub a:not(.btn):hover .sub-ic,.top nav .sub a:not(.btn):focus-visible .sub-ic,.top nav .sub a:not(.btn)[aria-current] .sub-ic{background:var(--accent);color:var(--on-accent)}

@media (min-width:1061px){
  .top .nav-item{position:relative;display:flex;align-items:center}
  .top .nav-item>.nav-l{padding-right:2.2rem}
  .top .sub-btn{position:absolute;right:.5rem;top:50%;translate:0 -50%;z-index:2}
  .top .nav-item:hover .sub-btn svg{transform:rotate(180deg)}
  .top .sub{position:absolute;left:0;top:calc(100% + .6rem);z-index:30;min-width:17rem;padding:.5rem;border-radius:1.3rem;background:var(--bg);border:1px solid var(--line);box-shadow:0 24px 48px -22px rgba(5,11,30,.55);opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .25s,transform .3s cubic-bezier(.2,.7,.2,1),visibility .25s}
  .top .sub::before{content:"";position:absolute;left:0;right:0;top:-.7rem;height:.7rem} /* pont pour garder le survol */
  .top .nav-item:hover>.sub,.top .nav-item:focus-within>.sub,.top .nav-item.open>.sub{opacity:1;visibility:visible;transform:none}
}

/* ===== Bloc Showroom Interactif sur la page d'accueil (.hm-demos) ===== */
.hm-demos{background:linear-gradient(180deg,var(--soft),var(--bg))}
.hm-demos-head{max-width:780px;margin:0 auto 2.4rem}
.hm-demos-kicker{
  display:inline-block;margin:0 0 .7rem;padding:.32rem .88rem;border-radius:999px;
  background:color-mix(in srgb,var(--accent) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--accent) 26%,transparent);
  color:var(--accent);font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
}
.hm-demos-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.35rem}
.hm-demo-mobile .hm-demo-vis{background:linear-gradient(140deg,#08142e 0%,#162458 56%,#3b82f6 100%)}
.hm-mini-app{
  display:flex;align-items:flex-end;gap:.55rem;
  transition:transform .4s cubic-bezier(.2,.8,.2,1);
}
.hm-demo-card:hover .hm-mini-app{transform:translateY(-4px) scale(1.02)}
.hm-ma-dev{
  width:106px;padding:.45rem .45rem .5rem;border-radius:1.05rem;
  background:#0b1730;border:2px solid rgba(148,197,255,.42);
  box-shadow:0 16px 32px -12px rgba(0,0,0,.55);display:grid;gap:.32rem;
}
.hm-ma-dev.and{border-radius:.85rem;background:#0f1e3d}
.hm-ma-top{justify-self:center;width:30px;height:6px;border-radius:99px;background:#020612}
.hm-ma-dev.and .hm-ma-top{width:6px;height:6px;border-radius:50%}
.hm-ma-os{font-size:.58rem;font-weight:700;color:#93c5fd;text-align:center;letter-spacing:.04em}
.hm-ma-card{height:24px;border-radius:.45rem;background:linear-gradient(90deg,#0b5cff,#00b8ff)}
.hm-ma-row{display:grid;grid-template-columns:1fr 1fr;gap:.25rem}
.hm-ma-row i{height:16px;border-radius:.35rem;background:rgba(255,255,255,.12)}
.hm-ma-nav{display:flex;justify-content:space-around;padding-top:.2rem;border-top:1px solid rgba(255,255,255,.1)}
.hm-ma-nav b{width:10px;height:4px;border-radius:99px;background:rgba(255,255,255,.32)}
.hm-ma-nav b:first-child{background:#38bdf8}
.hm-demo-card{
  position:relative;display:flex;flex-direction:column;border-radius:1.85rem;overflow:hidden;
  background:var(--surface);border:1px solid var(--line);color:var(--ink);text-decoration:none;
  box-shadow:0 20px 50px -26px rgba(6,18,45,.18);
  transition:transform .38s cubic-bezier(.2,.8,.2,1),box-shadow .38s ease,border-color .3s ease;
}
.hm-demo-card:hover,.hm-demo-card:focus-visible{
  transform:translateY(-6px);border-color:var(--accent);
  box-shadow:0 28px 65px -24px rgba(11,92,255,.32);color:var(--ink);
}
.hm-demo-vis{
  position:relative;padding:1.6rem 1.5rem 1.25rem;
  background:linear-gradient(140deg,#06132d 0%,#0c2556 62%,#0b5cff 100%);
  display:flex;flex-direction:column;align-items:center;gap:1rem;overflow:hidden;
}
.hm-demo-style .hm-demo-vis{background:linear-gradient(140deg,#081730 0%,#0f3460 58%,#0284c7 100%)}
.hm-mini-phone{
  width:236px;padding:.65rem .75rem .75rem;border-radius:1.35rem;
  background:#0b1730;border:2px solid rgba(148,197,255,.38);
  box-shadow:0 18px 36px -12px rgba(0,0,0,.55);display:grid;gap:.42rem;
  transition:transform .4s cubic-bezier(.2,.8,.2,1);
}
.hm-demo-card:hover .hm-mini-phone,.hm-demo-card:hover .hm-mini-browser{transform:translateY(-4px) scale(1.02)}
.hm-mp-isl{justify-self:center;width:48px;height:8px;border-radius:99px;background:#020612}
.hm-mp-hd{display:flex;align-items:center;gap:.4rem;font-size:.7rem;font-weight:700;color:#dbeafe;padding-bottom:.3rem;border-bottom:1px solid rgba(255,255,255,.1)}
.hm-mp-hd i{width:7px;height:7px;border-radius:50%;background:#10b981;box-shadow:0 0 8px #10b981}
.hm-mp-b{padding:.38rem .58rem;border-radius:.68rem;font-size:.69rem;line-height:1.32}
.hm-mp-b.bot{background:rgba(255,255,255,.1);color:#e2e8f0;justify-self:start}
.hm-mp-b.usr{background:#0b5cff;color:#fff;justify-self:end;font-weight:600}
.hm-mp-b.ok{background:rgba(16,185,129,.2);color:#a7f3d0;border:1px solid rgba(52,211,153,.35)}

.hm-mini-browser{
  width:268px;border-radius:1rem;overflow:hidden;background:#fff;
  border:2px solid rgba(165,216,255,.42);box-shadow:0 18px 36px -12px rgba(0,0,0,.5);
  transition:transform .4s cubic-bezier(.2,.8,.2,1);
}
.hm-mb-top{display:flex;align-items:center;gap:5px;padding:.42rem .65rem;background:#0f1d3a;color:#93c5fd;font-size:.65rem}
.hm-mb-top i{width:7px;height:7px;border-radius:50%;background:#ef4444}
.hm-mb-top i:nth-child(2){background:#f59e0b}.hm-mb-top i:nth-child(3){background:#10b981}
.hm-mb-top span{margin-left:auto;opacity:.85}
.hm-mb-body{padding:.7rem .8rem;display:grid;gap:.55rem}
.hm-mb-swatches{display:flex;align-items:center;gap:.35rem}
.hm-mb-swatches b{width:16px;height:16px;border-radius:50%}
.hm-mb-swatches em{margin-left:auto;padding:.1rem .42rem;border-radius:.35rem;background:#eff6ff;color:#0b5cff;font:800 .7rem/1.3 "Bricolage Grotesque",sans-serif}
.hm-mb-hero{display:grid;grid-template-columns:1.2fr .8fr;gap:.5rem;align-items:center}
.hm-mb-lines{display:grid;gap:.3rem}
.hm-mb-lines span{height:7px;border-radius:99px;background:#cbd5e1}
.hm-mb-lines span.s{width:72%}
.hm-mb-lines i{width:54%;height:15px;border-radius:99px;background:linear-gradient(90deg,#0b5cff,#00b8ff);margin-top:.15rem}
.hm-mb-pic{height:52px;border-radius:.55rem;background:linear-gradient(135deg,#dbeafe,#93c5fd)}

.hm-demo-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:.38rem}
.hm-demo-tags span{padding:.22rem .62rem;border-radius:999px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);color:#e6f0ff;font-size:.72rem;font-weight:600}

.hm-demo-body{padding:1.55rem 1.65rem 1.7rem;display:flex;flex-direction:column;flex:1}
.hm-demo-badge{display:inline-flex;align-items:center;gap:.42rem;font-size:.78rem;font-weight:700;color:var(--accent);margin-bottom:.5rem}
.hm-demo-badge svg{width:16px;height:16px}
.hm-demo-body h3{margin:0 0 .5rem;font-size:1.35rem}
.hm-demo-body p{margin:0 0 1.2rem;color:var(--muted);font-size:.95rem;line-height:1.55;flex:1}
.hm-demo-go{display:inline-flex;align-items:center;gap:.45rem;font-weight:700;color:var(--accent);font-size:.94rem}
.hm-demo-go svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2.3;stroke-linecap:round;stroke-linejoin:round;transition:transform .28s ease}
.hm-demo-card:hover .hm-demo-go svg{transform:translateX(5px)}
@media (max-width:1080px){.hm-demos-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:740px){.hm-demos-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:1060px){
  .top .nav-item{display:flex;flex-wrap:wrap;align-items:center}
  .top .nav-item>.nav-l{flex:1}
  .sub-btn{width:44px;height:44px}
  .top .sub{display:none;flex-basis:100%;margin:.1rem 0 .4rem;padding:0 0 0 1rem}
  .top .nav-item.open>.sub,html:not(.js) .top .sub{display:block}
}
@media (prefers-reduced-motion:reduce){
  .top .sub,.sub-btn svg,.sub-ic{transition:none}
}

/* ===== Dock flottant au scroll : « Audit gratuit de site » + « Simuler mon budget » ===== */
.pvs-fab-dock{
  position:fixed;
  left:clamp(14px,2.2vw,28px);
  bottom:clamp(14px,2.2vw,26px);
  z-index:8900;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:.62rem;
  pointer-events:none;
}
.pvs-sim-fab{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:.72rem;
  padding:.5rem .94rem .5rem .54rem;
  border-radius:999px;
  background:linear-gradient(135deg,#06142e 0%,#0c2759 58%,#0b5cff 100%);
  border:1.5px solid rgba(110,174,255,.55);
  color:#fff;
  text-decoration:none;
  box-shadow:0 16px 38px -8px rgba(6,20,46,.52),0 6px 18px -4px rgba(11,92,255,.42),inset 0 1px 0 rgba(255,255,255,.22);
  overflow:hidden;
  isolation:isolate;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translate3d(0,24px,0) scale(.9);
  transition:opacity .42s cubic-bezier(.16,1,.3,1),transform .46s cubic-bezier(.16,1,.3,1),visibility .42s,box-shadow .3s ease,border-color .3s ease;
}
.pvs-sim-fab--audit{
  background:linear-gradient(135deg,#061830 0%,#0b2e59 56%,#0284c7 100%);
  border-color:rgba(103,232,249,.52);
  transition-delay:.06s;
}
.pvs-fab-dock.is-visible .pvs-sim-fab,
html:not(.js) .pvs-sim-fab{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transform:translate3d(0,0,0) scale(1);
  animation:pvs-sim-bob 3.8s ease-in-out .55s infinite;
}
.pvs-fab-dock.is-visible .pvs-sim-fab--audit{
  animation-delay:1.35s;
}
/* Reflet lumineux spéculaire périodique */
.pvs-sim-fab::after{
  content:"";
  position:absolute;
  top:-40%;
  bottom:-40%;
  left:-35%;
  width:42%;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(105deg,transparent 15%,rgba(255,255,255,.32) 50%,transparent 85%);
  transform:translateX(-160%) rotate(16deg);
  animation:pvs-sim-sheen 5.4s ease-in-out 1.4s infinite;
}
.pvs-sim-fab--audit::after{
  animation-delay:3.2s;
}
/* Liseré orbital saphir/cyan subtil */
.pvs-sim-fab-rim{
  position:absolute;
  inset:0;
  border-radius:inherit;
  padding:1.5px;
  pointer-events:none;
  background:linear-gradient(110deg,rgba(56,189,248,.75),rgba(11,92,255,.15) 45%,rgba(92,225,255,.8));
  background-size:220% 220%;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  animation:pvs-sim-rim 4.5s ease infinite alternate;
}
.pvs-sim-fab-ic{
  position:relative;
  z-index:2;
  display:grid;
  place-items:center;
  flex:none;
  width:39px;
  height:39px;
  border-radius:50%;
  background:linear-gradient(145deg,#0b5cff,#38bdf8);
  color:#fff;
  box-shadow:0 0 0 0 rgba(56,189,248,.55),0 6px 14px -4px rgba(11,92,255,.7);
  animation:pvs-sim-ic-pulse 2.6s ease-in-out infinite;
  transition:transform .34s cubic-bezier(.2,1,.3,1);
}
.pvs-sim-fab--audit .pvs-sim-fab-ic{
  background:linear-gradient(145deg,#0ea5e9,#10b981);
  animation:pvs-audit-ic-pulse 2.6s ease-in-out .9s infinite;
}
.pvs-sim-fab-ic svg{
  width:19px;
  height:19px;
  fill:none;
  stroke:currentColor;
  stroke-width:2;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.pvs-sim-fab-txt{
  position:relative;
  z-index:2;
  display:flex;
  flex-direction:column;
  line-height:1.18;
  min-width:0;
}
.pvs-sim-fab-txt strong{
  font:700 .86rem/1.2 "Bricolage Grotesque",sans-serif;
  letter-spacing:-.01em;
  color:#fff;
  white-space:nowrap;
}
.pvs-sim-fab-txt small{
  margin-top:.1rem;
  font-size:.68rem;
  font-weight:500;
  color:#b9d5ff;
  white-space:nowrap;
}
.pvs-sim-fab--audit .pvs-sim-fab-txt small{
  color:#b6f3e6;
}
.pvs-sim-fab-arr{
  position:relative;
  z-index:2;
  display:grid;
  place-items:center;
  width:22px;
  height:22px;
  border-radius:50%;
  background:rgba(255,255,255,.12);
  color:#e5f0ff;
  transition:transform .3s cubic-bezier(.2,1,.3,1),background .25s ease;
}
.pvs-sim-fab-arr svg{
  width:13px;
  height:13px;
  fill:none;
  stroke:currentColor;
  stroke-width:2.4;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.pvs-sim-fab:hover,
.pvs-sim-fab:focus-visible{
  color:#fff;
  border-color:#7cc4ff;
  box-shadow:0 22px 48px -8px rgba(11,92,255,.62),0 8px 20px -4px rgba(6,20,46,.45);
  transform:translate3d(0,-4px,0) scale(1.03);
  animation-play-state:paused;
}
.pvs-sim-fab--audit:hover,
.pvs-sim-fab--audit:focus-visible{
  border-color:#67e8f9;
  box-shadow:0 22px 48px -8px rgba(14,165,233,.58),0 8px 20px -4px rgba(6,20,46,.45);
}
.pvs-sim-fab:hover .pvs-sim-fab-ic,
.pvs-sim-fab:focus-visible .pvs-sim-fab-ic{
  transform:rotate(-8deg) scale(1.08);
}
.pvs-sim-fab--audit:hover .pvs-sim-fab-ic,
.pvs-sim-fab--audit:focus-visible .pvs-sim-fab-ic{
  transform:rotate(18deg) scale(1.08);
}
.pvs-sim-fab:hover .pvs-sim-fab-arr,
.pvs-sim-fab:focus-visible .pvs-sim-fab-arr{
  transform:translateX(4px);
  background:rgba(255,255,255,.24);
}
.pvs-sim-fab:active{transform:translate3d(0,-1px,0) scale(.98)}
.pvs-sim-fab:focus-visible{outline:3px solid #68a8ff;outline-offset:3px}

@keyframes pvs-sim-bob{
  0%,100%{translate:0 0}
  50%{translate:0 -4px}
}
@keyframes pvs-sim-sheen{
  0%,68%{transform:translateX(-160%) rotate(16deg)}
  100%{transform:translateX(420%) rotate(16deg)}
}
@keyframes pvs-sim-rim{
  0%{background-position:0% 50%}
  100%{background-position:100% 50%}
}
@keyframes pvs-sim-ic-pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(56,189,248,.5),0 6px 14px -4px rgba(11,92,255,.7)}
  55%{box-shadow:0 0 0 6px rgba(56,189,248,0),0 6px 14px -4px rgba(11,92,255,.7)}
}
@keyframes pvs-audit-ic-pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(16,185,129,.52),0 6px 14px -4px rgba(14,165,233,.7)}
  55%{box-shadow:0 0 0 6px rgba(16,185,129,0),0 6px 14px -4px rgba(14,165,233,.7)}
}

@media (max-width:980px){
  .pvs-fab-dock.is-above-simbar{bottom:84px}
}
@media (max-width:540px){
  .pvs-fab-dock{
    left:12px;
    bottom:12px;
    gap:.45rem;
  }
  .pvs-fab-dock.is-above-simbar{bottom:80px}
  .pvs-sim-fab{
    gap:.48rem;
    padding:.4rem .74rem .4rem .42rem;
    max-width:calc(100vw - 88px);
  }
  .pvs-sim-fab-ic{width:32px;height:32px}
  .pvs-sim-fab-ic svg{width:16px;height:16px}
  .pvs-sim-fab-txt strong{font-size:.77rem}
  .pvs-sim-fab-txt small{display:none}
  .pvs-sim-fab-arr{width:19px;height:19px}
}
@media (prefers-reduced-motion:reduce){
  .pvs-sim-fab,.pvs-sim-fab::after,.pvs-sim-fab-rim,.pvs-sim-fab-ic,.pvs-sim-fab-arr{
    animation:none!important;
    transition:none!important;
  }
}

/* ===== Filet de sécurité anti-défilement horizontal (iPhone) =====
   « clip » (contrairement à « hidden ») ne crée pas de conteneur de défilement : le header sticky continue de fonctionner.
   Il masque un débordement éventuel mais ne le corrige pas : la cause est traitée avec minmax(0,1fr) ci-dessus. */
@supports (overflow:clip){body{overflow-x:clip}}
