/* Consult B – CSS de la page d'accueil */
#cb{--bg:#1a1a1a;--card:#212121;--deep:#161616;--acc:#4b63a5;--acc2:#6d84c7;--fg:#fff;--mut:#b5b5b5;--line:#ffffff24;box-sizing:border-box;display:block;position:relative;width:100vw;margin-left:calc(50% - 50vw)}
#cb *{box-sizing:border-box;margin:0}
#cb{font-family:Inter,"Helvetica Neue",Arial,sans-serif;background:var(--bg);color:var(--fg);overflow-x:clip;max-width:100vw;line-height:1.55}
#cb a{color:inherit;text-decoration:none}
#cb section,#cb main{overflow-x:clip}
@keyframes cbspin{to{transform:rotate(360deg)}}
#cb .hero{height:calc(100vh - var(--ht,0px));height:calc(100svh - var(--ht,0px));height:calc(100dvh - var(--ht,0px));min-height:560px;position:relative;overflow:hidden;touch-action:pan-y;cursor:grab;user-select:none}
#cb .track{display:flex;height:100%;transition:transform .75s cubic-bezier(.65,0,.35,1);will-change:transform;backface-visibility:hidden}
#cb .pan{width:100%;height:100%;flex:none;padding:0 7vw;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:16vh;gap:20px;position:relative;overflow:hidden;transition:opacity .75s ease;contain:paint}
#cb.js .pan:not(.on){opacity:.45}
#cb .pan:nth-child(1){background:var(--bg)}
#cb .pan:nth-child(2){background:#232b3f}
#cb .pan:nth-child(3){background:var(--acc)}
#cb .pan small{font-weight:600;font-size:.85rem;position:relative;z-index:2}
#cb .pan h2{font-size:clamp(2.8rem,10vw,7.5rem);font-weight:700;letter-spacing:-.045em;line-height:1;position:relative;z-index:2}
#cb .pan h2 em{font-style:normal;color:var(--acc2)}
#cb .pan:nth-child(3) h2 em{color:#0f1830}
#cb .pan p{max-width:36ch;font-size:1.05rem;position:relative;z-index:2;color:#e3e3e3}
#cb .sph{position:absolute;border-radius:50%;background:radial-gradient(circle at 32% 28%,#fff,#cdd6ea 40%,#6b7ba0);box-shadow:inset -20px -30px 60px #1a244555,0 40px 80px #0006;animation:cbfl 7s ease-in-out infinite alternate}
#cb .s1{width:80vw;height:80vw;max-width:640px;max-height:640px;right:-28vw;top:-18vw}
#cb .s2{width:26vw;height:26vw;max-width:200px;max-height:200px;right:10vw;top:30vh;animation-delay:-3s}
@keyframes cbfl{to{transform:translateY(-3vh) scale(1.05)}}
#cb .cube{position:absolute;right:-8vw;top:14vh;width:56vw;max-width:400px;aspect-ratio:1;background:linear-gradient(135deg,#8ea3e0,#2a3d78);border-radius:22px;transform:rotate(18deg);box-shadow:30px 40px 70px #0005;animation:cbfl 6s ease-in-out infinite alternate}
#cb .ring{position:absolute;left:-10vw;top:12vh;width:50vw;max-width:380px;aspect-ratio:1;border-radius:50%;border:1.5px solid #ffffff30;animation:cbspin 20s linear infinite}
#cb .dots{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);display:flex;gap:7px;z-index:5}
#cb .dots i{cursor:pointer;width:8px;height:8px;border-radius:8px;background:#fff;opacity:.3;transition:.3s}
#cb .dots i.on{background:var(--acc2);opacity:1;width:22px}
#cb .dots.w i.on{background:#fff}
#cb section{padding:14vh 6vw}
#cb .big{display:block;font-size:clamp(4.2rem,18vw,13rem);font-weight:800;letter-spacing:-.05em;line-height:.88;margin-bottom:34px}
#cb .lead{max-width:44ch;color:var(--mut);margin-bottom:50px;font-size:1.05rem}
#cb #services,#cb #intro{background:var(--bg)}
#cb .sv{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:26px}
#cb .sc{background:var(--card);border-radius:20px;padding:24px;display:flex;flex-direction:column;gap:16px;border:1px solid transparent;transition:.4s}
#cb .sc:hover{transform:translateY(-6px)}
#cb .sh2{display:flex;align-items:center;gap:14px}
#cb .sh2 svg{width:46px;height:46px;flex:none;fill:#fff;transition:.4s}
#cb .sc:hover .sh2 svg{transform:scale(1.12) rotate(-6deg)}
#cb .sc.act{background:var(--acc)}
#cb .sc.act>p{color:#e8edfa}
#cb .sc.act .hint{color:#fff}
#cb .sc h3{font-size:1.35rem;font-weight:700;letter-spacing:-.02em;line-height:1.2}
#cb .sc>p{color:var(--mut);font-size:.92rem}
#cb .demo{background:var(--deep);border-radius:14px;padding:14px;min-height:250px;display:flex;flex-direction:column;gap:12px;overflow:hidden;--br:#4b63a5}
#cb .hint{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--acc2);font-weight:600}
#cb .bb{background:#fff;color:#111;border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:8px;transition:font-family .3s}
#cb .bar{display:flex;gap:5px;margin-bottom:4px}
#cb .bar i{width:8px;height:8px;border-radius:50%;background:#ddd}
#cb .lgo{width:38px;height:38px;border-radius:50%;background:var(--br);color:#fff;display:grid;place-items:center;font-weight:800;transition:.4s}
#cb .bb h4{font-size:1.25rem;line-height:1.1;transition:color .4s;color:var(--br)}
#cb .bb small{color:#777;font-size:.75rem}
#cb .bt{align-self:flex-start;background:var(--br);color:#fff;border:0;border-radius:8px;padding:8px 14px;font:inherit;font-size:.8rem;font-weight:600;transition:.4s}
#cb .row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
#cb .sw button{width:26px;height:26px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:.3s}
#cb .sw button.on{border-color:#fff;transform:scale(1.2)}
#cb .pill{background:#2a2a2a;color:#ddd;border:0;border-radius:99px;padding:7px 14px;font:inherit;font-size:.78rem;cursor:pointer;transition:.3s}
#cb .pill.on{background:var(--acc);color:#fff}
#cb .demo input{background:#2a2a2a;border:1px solid #444;color:#fff;border-radius:8px;padding:8px 10px;font:inherit;font-size:.85rem;width:100%}
#cb .ch2{width:100%;height:96px;overflow:visible}
#cb #ln{fill:none;stroke:var(--acc2);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
#cb #ar{fill:url(#g);opacity:.9}
#cb .st{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
#cb .st div{background:#222;border-radius:10px;padding:8px;text-align:center}
#cb .st b{display:block;font-size:1.15rem;color:#fff}
#cb .st span{font-size:.65rem;color:var(--mut);text-transform:uppercase;letter-spacing:.08em}
#cb .code{font:.78rem/1.55 ui-monospace,Menlo,monospace;color:#9fe0c0;background:#0f0f0f;border-radius:10px;padding:12px;min-height:112px;white-space:pre-wrap}
#cb .fr{height:150px;display:flex;justify-content:center;align-items:flex-start}
#cb .scr{width:100%;background:#fff;border-radius:8px;padding:8px;transition:width .6s cubic-bezier(.7,0,.2,1);overflow:hidden}
#cb .nv{display:flex;gap:4px;margin-bottom:6px}
#cb .nv i{width:14px;height:5px;border-radius:3px;background:#cfd4dc}
#cb .hr{height:46px;border-radius:6px;background:linear-gradient(100deg,var(--acc),var(--acc2),var(--acc));background-size:200% 100%;animation:cbsh 3s linear infinite;margin-bottom:6px}
@keyframes cbsh{to{background-position:-200% 0}}
#cb .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(46px,1fr));gap:6px}
#cb .cols b{height:34px;border-radius:5px;background:#e5e7eb}
#cb .rm{list-style:none;padding:0;display:flex;flex-direction:column;gap:8px}
#cb .rm li{display:flex;align-items:center;gap:10px;background:#222;border-radius:10px;padding:9px 12px;font-size:.85rem;opacity:.25;transform:translateX(-12px);transition:.5s}
#cb .rm li::before{content:attr(data-n);width:22px;height:22px;border-radius:50%;background:#333;display:grid;place-items:center;font-size:.7rem;flex:none;transition:.5s}
#cb .rm li.on{opacity:1;transform:none}
#cb .rm li.on::before{background:var(--acc2);color:#fff}
#cb .sp{position:relative;height:152px}
#cb .sp>div{position:absolute;left:0;right:0;height:34px;background:#222;border-radius:8px;padding:6px 10px;display:flex;flex-direction:column;gap:4px;transition:transform .9s cubic-bezier(.7,0,.2,1),background .5s;font-size:.7rem}
#cb .sp>div b{color:#8fa6ef;font-weight:600}
#cb .sp>div i{height:5px;width:70%;border-radius:3px;background:#3a3a3a}
#cb .sp>div.me{background:#2b3556;outline:1.5px solid var(--acc2);z-index:2}
#cb .sp>div.me b{color:#fff}
#cb .q{background:#222;border-radius:99px;padding:7px 14px;font-size:.78rem;color:#ccc}
#cb .pos{font-size:.8rem;color:var(--mut)}
#cb .pos b{color:#fff;font-size:1.1rem}
#cb .ba{position:relative;height:215px;border-radius:12px;overflow:hidden;touch-action:pan-y;cursor:ew-resize;--p:50%;user-select:none;background:#101010}
#cb .ly{position:absolute;inset:0;display:grid;grid-template-columns:1.25fr 1fr;grid-template-rows:1fr 1fr;gap:8px;padding:30px 10px 10px}
#cb .ly.top{clip-path:inset(0 0 0 var(--p));background:#111}
#cb .ly>div{display:flex;flex-direction:column;justify-content:center;gap:4px;padding:10px;overflow:hidden}
#cb .ly>div:nth-child(2){grid-column:2;grid-row:1/span 2}
#cb .ly b{font-size:.95rem;line-height:1.1}
#cb .ly small{font-size:.6rem;opacity:.7}
#cb .ly i.dt{width:24px;height:24px;display:grid;place-items:center;font-style:normal;font-weight:800;color:#fff;font-size:.72rem}
#cb .lb{position:absolute;top:8px;font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;font-weight:700;padding:3px 8px;border-radius:99px;background:#000b;z-index:3;pointer-events:none}
#cb .lb.l{left:8px}
#cb .lb.r{right:8px;background:var(--acc)}
#cb .hd{position:absolute;top:0;bottom:0;left:var(--p);width:2px;background:#fff;z-index:4;pointer-events:none}
#cb .hd i{position:absolute;top:50%;left:50%;width:34px;height:34px;margin:-17px;border-radius:50%;background:#fff;box-shadow:0 2px 10px #0008}
#cb .hd i::before{content:"‹ ›";position:absolute;inset:0;display:grid;place-items:center;color:#111;font-weight:700;font-size:.8rem;letter-spacing:2px}
#cb .pos2{font-size:.8rem;color:var(--mut)}
#cb .pos2 b{color:#fff}
/* Titres de section : apparition sobre (fondu + léger glissement) */
#cb .ttl{font-size:clamp(2.8rem,11vw,6.5rem);font-weight:800;letter-spacing:-.05em;line-height:1.02;margin-bottom:30px;position:relative;padding-bottom:20px;text-align:center}
#cb .ttl em{font-style:normal;color:var(--acc2)}
#cb.js .ttl{opacity:0;transform:translateY(18px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.8,.2,1)}
#cb.js .ttl.in{opacity:1;transform:none}
#cb .ttl::after{content:"";position:absolute;left:50%;margin-left:-24px;bottom:0;height:2px;width:48px;background:var(--acc2);border-radius:2px;opacity:0;transition:opacity .8s .5s ease}
#cb .ttl.in::after{opacity:.8}
#cb #projets{padding:10vh 6vw 12vh}
#cb .pj{max-width:560px;margin:0 auto;text-align:center}
#cb .eyebrow{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--acc2);font-weight:700}
#cb #projets h2{font-size:clamp(1.9rem,6vw,3rem);font-weight:700;letter-spacing:-.035em;line-height:1.1;margin:10px 0 14px}
#cb #projets .pj>p{color:var(--mut);margin:0 auto 26px;max-width:46ch}
#cb .stage{position:relative;height:210px;margin:0 auto 22px;max-width:360px}
#cb .stage>div{position:absolute;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;box-shadow:0 14px 30px #0006;opacity:.6;transition:transform .9s cubic-bezier(.7,0,.2,1),opacity .6s,box-shadow .6s,border-color .6s;animation:cbbob 4s ease-in-out infinite alternate}
#cb .cd1{width:46%;height:110px;left:4%;top:14%;display:flex;flex-direction:column;gap:7px;transform:translate(-6%,-8%) rotate(-8deg)}
#cb .cd1 i{height:7px;border-radius:4px;background:#3a3a3a}
#cb .cd1 i:first-child{width:40%;background:var(--acc2)}
#cb .cd2{width:34%;height:96px;right:8%;top:4%;display:flex;align-items:flex-end;gap:6px;transform:translate(6%,16%) rotate(9deg);animation-delay:-1.3s}
#cb .cd2 b{flex:1;border-radius:3px;background:#3a3a3a;height:30%;transition:height .9s cubic-bezier(.7,0,.2,1),background .6s}
#cb .cd3{width:44%;height:78px;left:28%;bottom:2%;display:flex;flex-direction:column;gap:6px;justify-content:center;transform:translate(-14%,-12%) rotate(-5deg);animation-delay:-2.6s}
#cb .cd3 span{height:14px;border-radius:8px;background:#3a3a3a;width:70%}
#cb .cd3 span+span{width:50%;align-self:flex-end;background:var(--acc)}
#cb .stage .ok{width:38px;height:38px;border-radius:50%;padding:0;display:grid;place-items:center;right:12%;bottom:10%;background:var(--acc);color:#fff;font-weight:800;opacity:0;transform:scale(.3);animation:none}
#cb .stage[data-s="1"]>div:not(.ok){transform:none;opacity:1}
#cb .stage[data-s="1"] .cd2 b:nth-child(1){height:40%}
#cb .stage[data-s="1"] .cd2 b:nth-child(2){height:25%}
#cb .stage[data-s="1"] .cd2 b:nth-child(3){height:55%}
#cb .stage[data-s="1"] .cd2 b:nth-child(4){height:35%}
#cb .stage[data-s="2"]>div:not(.ok){transform:none;opacity:1;border-color:var(--acc2);box-shadow:0 0 0 1px var(--acc2),0 14px 40px #4b63a577}
#cb .stage[data-s="2"] .cd2 b{background:var(--acc2)}
#cb .stage[data-s="2"] .cd2 b:nth-child(1){height:35%}
#cb .stage[data-s="2"] .cd2 b:nth-child(2){height:55%}
#cb .stage[data-s="2"] .cd2 b:nth-child(3){height:75%}
#cb .stage[data-s="2"] .cd2 b:nth-child(4){height:100%}
#cb .stage[data-s="2"] .ok{opacity:1;transform:scale(1)}
@keyframes cbbob{to{translate:0 -6px}}
#cb .steps{display:flex;gap:8px;justify-content:center;margin-bottom:16px}
#cb .cap{min-height:3em;transition:opacity .25s;color:#d8d8d8}
#cb .lnk{display:inline-block;margin-top:6px;font-weight:600;color:var(--acc2);border-bottom:1px solid currentColor;padding-bottom:2px}
/* Intro : vrai clavier AZERTY + zoom sur la touche Consult B (version allégée) */
#cb #pre{position:absolute;inset:0;z-index:30;background:radial-gradient(ellipse at 50% 55%,#26282d,#121212 70%);display:grid;place-items:center;touch-action:none;cursor:pointer;overflow:hidden;transition:opacity .55s ease,visibility .55s;animation:cbpre .01s 4.5s forwards}
#cb #pre.out{opacity:0;visibility:hidden}
@keyframes cbpre{to{opacity:0;visibility:hidden}}
#cb .kb{--w:min(118vw,780px);--F:2.5;--u:calc(var(--w)/15.84*var(--F));position:relative;width:var(--w);height:calc(var(--w)/15.84*6);perspective:1100px;flex:none;animation:cbkbin .8s cubic-bezier(.2,.8,.2,1) both}
@keyframes cbkbin{from{opacity:0;transform:translateY(8vh)}}
#cb .board{--rx:46deg;--rz:-14deg;--sc:.344;position:absolute;left:50%;top:50%;width:calc(var(--w)*var(--F));height:calc(var(--u)*6);margin:calc(var(--u)*-3) 0 0 calc(var(--w)*var(--F)/-2);transform:translate(0,0) rotateX(var(--rx)) rotateZ(var(--rz)) scale(var(--sc));transform-origin:50% 50%;transition:transform .9s cubic-bezier(.6,0,.2,1);will-change:transform;backface-visibility:hidden}
#cb .kc,#cb .kl{position:absolute;inset:0;display:grid;grid-template-columns:repeat(60,1fr);grid-template-rows:repeat(5,calc(var(--u)*1.02));padding:calc(var(--u)*.45) calc(var(--u)*.42)}
#cb .kc{border-radius:calc(var(--u)*.42);will-change:opacity;transition:opacity .45s ease .35s;overflow:hidden}
#cb .kl{pointer-events:none}
#cb .kc::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,#34363b,#1b1c1f 60%,#141517);box-shadow:inset 0 1px 0 #ffffff2e,inset 0 0 0 1px #ffffff12}
#cb .kc::after{content:"";position:absolute;inset:calc(var(--u)*.3);border-radius:calc(var(--u)*.2);background:#0b0b0c;box-shadow:inset 0 2px 6px #000}
#cb .board::before{content:"";position:absolute;inset:0;border-radius:calc(var(--u)*.42);box-shadow:0 calc(var(--u)*.38) 0 #0a0a0b;will-change:opacity;transition:opacity .45s ease .35s}
#cb .sw{position:absolute;z-index:3;top:0;bottom:0;left:0;width:30%;background:linear-gradient(90deg,#8fa6ef00,#8fa6ef2e,#8fa6ef00);transform:translateX(-110%);pointer-events:none}
#cb .sw.on{animation:cbsw 1.1s cubic-bezier(.4,0,.2,1) forwards}
@keyframes cbsw{to{transform:translateX(360%)}}
#cb .key{position:relative;z-index:1;margin:calc(var(--u)*.05);border-radius:calc(var(--u)*.14);background:linear-gradient(180deg,#2b2c30,#141416);box-shadow:0 calc(var(--u)*.12) 0 #050506;color:#9b9ea6;font-size:calc(var(--u)*.3);font-weight:600;line-height:1.1;transition:transform .09s ease-out}
#cb .key::before{content:"";position:absolute;left:7%;right:7%;top:5%;bottom:15%;border-radius:calc(var(--u)*.11);background:linear-gradient(160deg,#3a3c41,#232427 70%);box-shadow:inset 0 1px 0 #ffffff24}
#cb .key>span{position:absolute;z-index:1;left:18%;top:13%;font-style:normal;white-space:nowrap}
#cb .key>.lg2{display:flex;flex-direction:column;gap:calc(var(--u)*.04);font-size:calc(var(--u)*.24);top:10%}
#cb .key>.md{top:auto;bottom:26%;font-size:calc(var(--u)*.2);font-weight:500;letter-spacing:.02em}
#cb .key.r>.md{left:auto;right:16%}
#cb .key.lit{color:#fff;box-shadow:0 calc(var(--u)*.12) 0 #050506,0 0 calc(var(--u)*.45) #8fa6ef88}
#cb .key.lit::before{background:linear-gradient(160deg,#4a5068,#2a2f3e 70%)}
#cb .key.p{transform:translateY(calc(var(--u)*.1))}
#cb .key.kh{grid-area:2/55/span 2/span 6;background:linear-gradient(180deg,#3d3f45,#16171a);box-shadow:0 calc(var(--u)*.12) 0 #050506,0 0 0 1px #ffffff2e}
#cb .key.kh::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 calc(var(--u)*1.1) calc(var(--u)*.2) #ffffff70;opacity:.45;animation:cbkhb 1.6s ease-in-out infinite alternate;will-change:opacity}
@keyframes cbkhb{to{opacity:1}}
#cb .key.kh.p::after{opacity:1;animation:none}
#cb .board.z .key.kh::after{animation:none;opacity:1}
#cb .key.kh::before{background:linear-gradient(160deg,#4a4d54,#202226 75%)}
#cb .face{position:absolute;left:7%;right:7%;top:5%;bottom:15%;z-index:2;padding:12% 13%;display:flex;flex-direction:column;justify-content:space-between}
#cb .face b{font-size:calc(var(--u)*.155);font-weight:800;letter-spacing:.01em;color:#fff;line-height:1.05;white-space:nowrap}
#cb .face b span{position:static;font-weight:300}
#cb .face svg{width:42%;align-self:flex-end;fill:none;stroke:#d6d6d6;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
#cb .wave{position:absolute;left:50%;top:50%;width:200%;aspect-ratio:1;margin:-100% 0 0 -100%;border-radius:50%;border:calc(var(--u)*.05) solid #fff;opacity:0;pointer-events:none;z-index:3;will-change:transform,opacity}
#cb .wave.on{animation:cbkwave 1s cubic-bezier(.2,.7,.3,1)}
@keyframes cbkwave{from{transform:scale(.3);opacity:.9}to{transform:scale(6);opacity:0}}
#cb .board.z{transform:translate(var(--zx,0),var(--zy,0)) rotateX(0deg) rotateZ(0deg) scale(var(--zs,4))}
#cb .board.z .kc,#cb .board.z::before{opacity:0}
#cb #pre.zm .pl,#cb #pre.zm .pb2{opacity:0}
#cb .pl{position:absolute;bottom:9%;left:0;right:0;text-align:center;font-size:.7rem;font-weight:600;letter-spacing:.22em;color:#8a8a8a;transition:opacity .3s}
#cb .pb2{position:absolute;bottom:6%;left:50%;width:120px;margin-left:-60px;height:2px;background:#333;overflow:hidden;transition:opacity .3s}
#cb .pb2 i{display:block;height:100%;width:100%;background:#fff;transform:scaleX(0);transform-origin:left}
@media(max-width:768px){#cb .kb{--w:100vw}#cb .board{--rx:40deg;--rz:-12deg;--sc:.35}}
#cb .code::after{content:"▍";animation:cbbl 1s steps(2) infinite;color:#fff}
@keyframes cbbl{50%{opacity:0}}
#cb .pipe{display:flex;align-items:center;justify-content:space-between;position:relative;padding:6px 0}
#cb .pipe::before{content:"";position:absolute;left:8%;right:8%;top:50%;height:2px;background:#333}
#cb .pipe i{position:absolute;left:8%;top:calc(50% - 4px);width:10px;height:10px;border-radius:50%;background:var(--acc2);box-shadow:0 0 12px var(--acc2);animation:cbmv 3s ease-in-out infinite}
@keyframes cbmv{to{left:88%}}
#cb .pipe span{position:relative;z-index:1;background:#262626;border:1px solid #444;border-radius:10px;padding:7px 10px;font-size:.72rem;animation:cbpu 3s infinite}
#cb .pipe span:nth-of-type(2){animation-delay:1.1s}
#cb .pipe span:nth-of-type(3){animation-delay:2.2s}
@keyframes cbpu{0%,100%{border-color:#444}15%{border-color:var(--acc2);background:#2b3556}}
#cb #clients{background:var(--card);text-align:center}
#cb #clients .big{text-align:center}
#cb #clients .lead{margin-inline:auto}
#cb .cl{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:26px}
#cb .cc{background:#1a1a1a;border-radius:18px;aspect-ratio:1;display:grid;place-items:center;padding:8%;overflow:hidden;transition:.4s}
#cb .cc img{width:78%;max-height:100%;object-fit:contain;border-radius:14px;transition:transform .6s}
#cb .cc:hover img{transform:scale(1.08) rotate(-2deg)}
#cb .cc:hover{background:#101010}
#cb #projets{background:var(--bg);padding-top:10vh}
#cb .ph{height:clamp(220px,40vh,420px);overflow:hidden;border-radius:4px;margin-bottom:34px}
#cb .ph img{width:100%;height:120%;object-fit:cover;display:block;will-change:transform}
#cb #projets h2{font-size:clamp(2.2rem,7vw,4.5rem);font-weight:700;letter-spacing:-.04em;line-height:1.08;margin-bottom:26px;max-width:18ch}
#cb #projets p{color:var(--mut);max-width:50ch;margin-bottom:22px;font-size:1.05rem}
#cb .btn{display:inline-block;background:var(--acc);color:#fff;padding:18px 32px;border-radius:14px;font-weight:600;transition:.3s}
#cb .btn:hover{background:var(--acc2);transform:translateY(-3px)}
@keyframes cbmq{to{transform:translateX(-50%)}}
#cb .cp{font-size:.8rem;color:#888}
#cb.js .rv{opacity:0;transform:translateY(50px);transition:opacity .9s,transform .9s cubic-bezier(.2,.8,.2,1)}
#cb.js .rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){#cb *{animation:none!important;transition-duration:.01s!important}}
@keyframes cbin{from{opacity:0;transform:translateY(34px)}to{opacity:1;transform:none}}
#cb.js .pan:nth-child(1) small,#cb.js .pan:nth-child(1) h2,#cb.js .pan:nth-child(1) p{opacity:0}
#cb.ready .pan:nth-child(1) small{animation:cbin .9s .1s both}
#cb.ready .pan:nth-child(1) h2{animation:cbin .9s .25s both}
#cb.ready .pan:nth-child(1) p{animation:cbin .9s .4s both}
#cb button,#cb input{font:inherit;text-transform:none;box-shadow:none;letter-spacing:normal}
#cb h1,#cb h2,#cb h3,#cb h4,#cb p{font-family:inherit;color:inherit;text-transform:none;padding:0;border:0}
#cb *,#cb *::before,#cb *::after{box-sizing:border-box}

/* Affichage selon l'appareil : [consult_b_accueil appareil="mobile"] ou appareil="pc" */
@media(min-width:769px){#cb.cb-mobile{display:none!important}}
@media(max-width:768px){#cb.cb-pc{display:none!important}}

#cb #services .ttl,#cb #intro .ttl,#cb #projets .ttl{font-size:clamp(2rem,6.5vw,4rem);line-height:1.1;max-width:18ch;margin-inline:auto}
#cb #services .lead,#cb #intro .lead,#cb #projets .lead{max-width:46ch;margin-inline:auto;text-align:center;line-height:1.6}

#cb .cpa{background:#1b1b1b;border:1px solid #333;border-radius:12px;overflow:hidden}
#cb .cph{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid #2c2c2c;font-size:.7rem;color:var(--mut);letter-spacing:.1em;text-transform:uppercase}
#cb .cph i{width:8px;height:8px;border-radius:50%;background:#444}
#cb .cph span{margin-left:8px}
#cb .cpb{position:relative;height:300px;padding:10px;overflow:hidden}
#cb .cpe{position:absolute;inset:10px;display:grid;place-items:center;text-align:center;padding:0 20px;border:1px dashed #3a3a3a;border-radius:10px;color:var(--mut);font-size:.8rem;transition:opacity .4s}
#cb .cpe.off{opacity:0;pointer-events:none}
#cb .cpk{display:flex;align-items:center;gap:12px;background:#242424;border:0 solid #333;border-radius:10px;padding:0 12px;max-height:0;opacity:0;overflow:hidden;margin:0;transform:translateY(10px);transition:max-height .6s cubic-bezier(.2,.8,.2,1),padding .6s,margin .6s,opacity .5s,transform .6s cubic-bezier(.2,.8,.2,1)}
#cb .cpk.on{max-height:72px;padding:10px 12px;border-width:1px;margin-bottom:8px;opacity:1;transform:none}
#cb .cpk .bi{flex:1;min-width:0}
#cb .cpk b{display:block;font-size:.82rem;color:#fff;font-weight:600}
#cb .cpk small{display:block;font-size:.68rem;color:var(--mut)}
#cb .cpk strong{color:#fff;font-size:.95rem}
#cb .cpk em{font-style:normal;font-size:.66rem;padding:3px 8px;border-radius:99px;background:rgba(80,200,140,.2);color:#7be3ab;white-space:nowrap}
#cb .cpk .bv{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
#cb .av{display:flex;flex:none}
#cb .av i{width:26px;height:26px;border-radius:50%;border:2px solid #242424;background:#6d84c7;color:#fff;font-style:normal;font-size:.7rem;font-weight:700;display:grid;place-items:center;margin-left:-8px}
#cb .av i:first-child{margin-left:0}
#cb .av i:nth-child(2){background:#4b63a5}
#cb .av i:nth-child(3){background:#3a7d5c}
#cb .av i:nth-child(4){background:#444}
#cb .wa{flex:none;width:30px;height:30px;border-radius:50%;background:rgba(80,200,140,.2);color:#7be3ab;display:grid;place-items:center;font-size:.85rem;font-weight:700}
#cb .bars{flex:none;display:flex;align-items:flex-end;gap:4px;height:34px}
#cb .bars s{display:block;width:8px;height:0;border-radius:2px;background:var(--acc2);text-decoration:none;transition:height .8s cubic-bezier(.2,.8,.2,1)}
#cb .cpk.on .bars s{height:var(--h)}
#cb .cpk.on .bars s:nth-child(2){transition-delay:.1s}
#cb .cpk.on .bars s:nth-child(3){transition-delay:.2s}
#cb .cpk.on .bars s:nth-child(4){transition-delay:.3s}
#cb .cpk.on .bars s:nth-child(5){transition-delay:.4s}

/* Introduction (accueil) : petit schéma animé + bouton vers la page services */
#cb #intro{text-align:center}
#cb #intro .lead{margin-bottom:40px}
#cb .flow{display:flex;align-items:flex-start;justify-content:center;gap:0;max-width:420px;margin:0 auto 44px}
#cb .fn{display:flex;flex-direction:column;align-items:center;gap:10px;width:64px;flex:none}
#cb .fn i{width:14px;height:14px;border-radius:50%;background:var(--card);border:2px solid var(--acc2);animation:cbnode 4.5s ease-in-out infinite}
#cb .fn:nth-of-type(3) i{animation-delay:1.5s}
#cb .fn:nth-of-type(5) i{animation-delay:3s}
#cb .fn span{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--mut)}
#cb .fl{flex:1;height:2px;margin-top:6px;background:var(--line);border-radius:2px;overflow:hidden;position:relative}
#cb .fl b{position:absolute;inset:0;background:var(--acc2);transform:scaleX(0);transform-origin:left;animation:cbline 4.5s ease-in-out infinite}
#cb .fl:nth-of-type(4) b{animation-delay:1.5s}
@keyframes cbline{0%,8%{transform:scaleX(0)}33%,100%{transform:scaleX(1)}}
@keyframes cbnode{0%,100%{background:var(--card)}10%,70%{background:var(--acc2)}}
#cb .cta{display:inline-block;background:var(--acc);color:#fff;font-weight:600;font-size:.95rem;padding:14px 30px;border-radius:99px;transition:background .3s,transform .3s}
#cb .cta:hover{background:var(--acc2);transform:translateY(-2px)}
@media(prefers-reduced-motion:reduce){#cb .fn i,#cb .fl b{animation:none}#cb .fl b{transform:scaleX(1)}}
/* Clients : slider interactif */
#cb #projets .pj h2{margin-left:auto;margin-right:auto}
#cb #clients{padding-bottom:12vh}
#cb .cs{--cw:min(78vw,340px);max-width:1000px;margin:0 auto;outline:none}
#cb .cs:focus-visible{outline:2px solid var(--acc2);outline-offset:8px;border-radius:20px}
#cb .cs-v{position:relative;height:420px;perspective:1200px;touch-action:pan-y;cursor:grab;user-select:none;-webkit-user-select:none}
#cb .cs-v.dg{cursor:grabbing}
#cb .cs-c{position:absolute;left:50%;top:50%;width:var(--cw);background:#1a1a1a;border:1px solid var(--line);border-radius:22px;padding:18px 22px 22px;display:flex;flex-direction:column;align-items:center;gap:6px;box-shadow:0 20px 50px #0007;will-change:transform,opacity;backface-visibility:hidden;transition:border-color .4s,box-shadow .4s,background .4s;color:#fff;text-decoration:none;-webkit-tap-highlight-color:transparent;text-align:center}
#cb .cs-c.on{border-color:#6d84c780;background:#1d1f26;box-shadow:0 26px 60px #000a,0 0 40px #4b63a533}
#cb .cs-l{width:100%;height:150px;display:grid;place-items:center;margin-bottom:8px}
#cb .cs-l img{max-width:150px;max-height:150px;object-fit:contain;border-radius:14px;pointer-events:none;transition:transform .5s cubic-bezier(.2,.8,.2,1)}
#cb .cs-c.on:hover .cs-l img{transform:scale(1.05)}
#cb .cs-t{font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--acc2);background:#6d84c71f;padding:4px 10px;border-radius:99px}
#cb .cs-c b{font-size:1.2rem;font-weight:700;letter-spacing:-.015em;margin-top:4px}
#cb .cs-c p{font-size:.86rem;line-height:1.5;color:var(--mut);max-width:30ch}
#cb .cs-c small{font-size:.8rem;font-weight:600;color:var(--acc2);margin-top:6px;opacity:0;transform:translateY(4px);transition:opacity .3s,transform .3s}
#cb .cs-c.on small{opacity:1;transform:none}
#cb .cs-n{display:flex;align-items:center;justify-content:center;gap:22px;margin-top:22px}
#cb .cs-a{width:48px;height:48px;padding:0;border-radius:50%;border:1px solid #ffffff33;background:transparent;color:#fff;cursor:pointer;font-size:1.1rem;line-height:1;transition:background .3s,border-color .3s,transform .2s}
#cb .cs-a:hover{background:var(--acc);border-color:var(--acc)}
#cb .cs-a:active{transform:scale(.92)}
#cb .cs-m{display:flex;flex-direction:column;align-items:center;gap:10px;min-width:96px}
#cb .cs-k{font-size:.78rem;letter-spacing:.12em;color:var(--mut);font-variant-numeric:tabular-nums}
#cb .cs-k b{color:#fff;font-weight:700}
#cb .cs-d{display:flex;gap:7px}
#cb .cs-d button{width:8px;height:8px;min-height:0;padding:0;border:0;border-radius:8px;background:#fff;opacity:.3;cursor:pointer;transition:.3s}
#cb .cs-d button.on{opacity:1;width:22px;background:var(--acc2)}
#cb .cs-pg{display:block;width:96px;height:2px;border-radius:2px;background:#ffffff1f;overflow:hidden}
#cb .cs-pg i{display:block;height:100%;width:100%;background:var(--acc2);transform:scaleX(0);transform-origin:left}
#cb .cs-pg.run i{animation:cbpg 4.5s linear forwards}
@keyframes cbpg{to{transform:scaleX(1)}}
#cb .cs-h{margin-top:16px;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:#8a8a8a}
#cb #clients .ttl{font-size:clamp(2rem,6.5vw,4rem);line-height:1.1}
#cb #intro{border-top:1px solid var(--line)}
@media(max-width:768px){#cb .cs-v{height:400px}#cb .cs-n{gap:14px}}
#cb #projets{text-align:center;padding:14vh 6vw}
#cb #projets .lead{color:var(--mut);margin-bottom:40px}

/* Page Services : texte de présentation + réservation d'appel */
#cb #services{padding-top:24px;padding-bottom:6vh}
#cb .svx{margin:0 -6vw 50px;position:relative;overflow:hidden;padding-bottom:6px}
#cb .svx-h{padding:0 6vw;text-align:center;max-width:980px;margin:0 auto}
#cb .svx-e{display:inline-flex;align-items:center;gap:8px;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:#c9d3f2;padding:7px 13px;border-radius:99px;border:1px solid #6d84c755;background:#6d84c714;margin-bottom:18px}
#cb .svx-e i{width:6px;height:6px;border-radius:50%;background:#7be3ab;animation:cbpulse 2s infinite}
@keyframes cbpulse{0%{box-shadow:0 0 0 0 #7be3ab88}70%{box-shadow:0 0 0 8px #7be3ab00}100%{box-shadow:0 0 0 0 #7be3ab00}}
#cb .svx-t{font-size:clamp(1.7rem,6.4vw,3rem);font-weight:800;letter-spacing:-.04em;line-height:1.1}
#cb .svx-t .w{display:inline-block;opacity:0;transform:translateY(.4em);filter:blur(6px);transition:opacity .6s,transform .6s cubic-bezier(.2,.8,.2,1),filter .6s}
#cb .svx.in .svx-t .w{opacity:1;transform:none;filter:none}
#cb .svx-t em{font-style:normal;background:linear-gradient(90deg,#8fa6ef,#4b63a5 50%,#8fa6ef);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:cbsh 4s linear infinite}
#cb .svx-rb{position:relative;height:clamp(180px,30vw,250px);margin-top:30px}
#cb .svx-ri{position:absolute;left:-6%;right:-6%;top:50%;overflow:hidden;white-space:nowrap;padding:14px 0;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none}
#cb .svx-ri:active{cursor:grabbing}
#cb .svx-tk{display:inline-flex;will-change:transform}
#cb .svx-ri span{display:inline-flex;align-items:center;font-weight:900;text-transform:uppercase;letter-spacing:-.01em;font-size:clamp(1.15rem,4.6vw,2rem);line-height:1}
#cb .svx-ri span::after{content:"";width:.55em;height:.55em;margin:0 .7em;background:currentColor;clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);opacity:.9}
#cb .svx-r1{transform:translateY(-92%) rotate(-4deg);background:var(--acc);box-shadow:0 18px 40px #0007;z-index:2}
#cb .svx-r1 span{color:#fff}
#cb .svx-r1 span:nth-child(even){color:#0f1830}
#cb .svx-r2{transform:translateY(-8%) rotate(3.5deg);background:#0f1012;border-top:1px solid #6d84c744;border-bottom:1px solid #6d84c744;z-index:1}
#cb .svx-r2 span{color:transparent;-webkit-text-stroke:1.2px #b9c7f5}
#cb .svx-r2 span::after{background:#6d84c7}
#cb .svx-r2 span:nth-child(3n){color:#fff;-webkit-text-stroke:0}
#cb .svx-pl{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;padding:0 6vw;margin-top:26px}
#cb .svx-pl a{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:99px;background:var(--card);border:1px solid var(--line);font-size:.82rem;font-weight:600;color:#fff;transition:opacity .5s,transform .5s,border-color .3s,background .3s;opacity:0;transform:translateY(10px)}
#cb .svx.in .svx-pl a{opacity:1;transform:none}
#cb .svx-pl a:hover{border-color:var(--acc2);background:#232838}
#cb .svx-pl svg{width:16px;height:16px;fill:none;stroke:var(--acc2);stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
#cb .sc{scroll-margin-top:100px}
@media(prefers-reduced-motion:reduce){#cb .svx-t .w,#cb .svx-pl a{opacity:1;transform:none;filter:none}}
#cb #rdv{padding:4vh 6vw 14vh;background:var(--bg)}
#cb .rdv{max-width:820px;margin:0 auto;text-align:center;padding:clamp(36px,7vw,64px) clamp(22px,6vw,56px);border-radius:28px;background:radial-gradient(120% 140% at 50% 0%,#4b63a5 0%,#2b3a66 45%,#1d2337 100%);border:1px solid #6d84c755;box-shadow:0 30px 70px #0008;position:relative;overflow:hidden}
#cb .rdv::before{content:"";position:absolute;right:-90px;top:-90px;width:240px;height:240px;border-radius:50%;border:1.5px solid #ffffff22}
#cb .rdv-k{display:inline-block;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:#dfe6ff;background:#ffffff1a;padding:6px 12px;border-radius:99px;margin-bottom:18px}
#cb .rdv h2{font-size:clamp(2rem,6vw,3.4rem);font-weight:800;letter-spacing:-.04em;line-height:1.08;margin-bottom:16px}
#cb .rdv h2 em{font-style:normal;color:#b9c7f5}
#cb .rdv p{color:#d9e0f5;max-width:50ch;margin:0 auto 30px;line-height:1.65}
#cb .rdv .cta{background:#fff;color:#1d2337;font-size:1rem;padding:16px 32px}
#cb .rdv .cta span{display:inline-block;transition:transform .3s}
#cb .rdv .cta:hover{background:#e7ecfb}
#cb .rdv .cta:hover span{transform:translateX(4px)}
