:root{--n:#000;--m:#0d2a57;--m2:#1b4a94;--lb:#9bbcf2;--b:#fff;--g:#eef2f8;--t:#2b3340;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;font:1.0625rem/1.65 var(--sans);color:var(--t);background:var(--b);overflow-x:hidden}
h1,h2,h3{font-weight:800;line-height:1.12;color:var(--n);margin:0 0 .6em;letter-spacing:-.02em}
h1{font-size:clamp(2.3rem,5.5vw,3.9rem)}h2{font-size:clamp(1.8rem,4vw,2.5rem)}h3{font-size:1.2rem}
a{color:var(--m2)}.dark a:not(.btn){color:var(--lb)}
.wrap{max-width:1120px;margin:auto;padding:4.5rem 1.25rem}
section{scroll-margin-top:84px}.light{background:var(--g)}
.dark{background:linear-gradient(160deg,var(--n) 30%,var(--m));color:#e6ebf3}.dark h2,.dark h3{color:var(--b)}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--b);padding:.5rem;z-index:99}
:focus-visible{outline:3px solid var(--lb);outline-offset:3px}
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem 1.25rem;background:var(--n);min-height:72px;box-shadow:0 2px 18px rgba(0,0,0,.3)}
.logo{display:flex;align-items:center;gap:.8rem;text-decoration:none;color:var(--b);font-weight:800;font-size:1.2rem}.logo b{color:var(--lb)}
.logo img{background:var(--b);border-radius:12px;padding:5px;height:48px;width:auto}
.top nav{display:flex;align-items:center;gap:1.4rem}.top nav a:not(.btn){color:var(--b);text-decoration:none}.top nav a:not(.btn):hover{color:var(--lb)}
.burger{display:none;background:none;color:var(--b);border:1px solid var(--lb);border-radius:999px;padding:.5rem 1.1rem;font:inherit}
.btn{display:inline-block;background:var(--m);color:var(--b);padding:.9rem 1.6rem;border-radius:999px;text-decoration:none;font:700 1rem var(--sans);border:2px solid var(--m);box-shadow:0 10px 24px -10px rgba(13,42,87,.7);cursor:pointer;transition:background .2s,color .2s}
.btn:hover{background:var(--m2);border-color:var(--m2)}
.btn.ghost{background:none;color:var(--n);border-color:var(--n);box-shadow:none}.btn.ghost:hover{background:var(--n);color:var(--b)}
.top .btn,.dark .btn{background:var(--b);color:var(--m);border-color:var(--b);box-shadow:none}.top .btn:hover,.dark .btn:hover{background:var(--lb);border-color:var(--lb)}
.dark .btn.ghost{background:none;color:var(--b);border-color:var(--b)}.dark .btn.ghost:hover{background:var(--b);color:var(--m)}
.hero{background:linear-gradient(rgba(13,42,87,.07) 1px,transparent 1px) 0 0/44px 44px,linear-gradient(90deg,rgba(13,42,87,.07) 1px,transparent 1px) 0 0/44px 44px,var(--b)}
.hero .wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:3.5rem;align-items:center;padding:5rem 1.25rem}
.hl{color:var(--m2);text-decoration:underline;text-decoration-thickness:.09em;text-underline-offset:.14em}
.hero p{max-width:50ch;font-size:1.15rem}.row{display:flex;gap:1rem;flex-wrap:wrap;margin-top:2rem}
.card{background:var(--b);border-radius:28px;padding:2.5rem;transform:rotate(3deg);box-shadow:16px 16px 0 #dbe5f6,0 40px 70px -30px rgba(13,42,87,.5);animation:ent 1s .3s both,fl 7s 1.3s ease-in-out infinite}
.card img{display:block;width:100%;height:auto}
@keyframes fl{50%{transform:rotate(3deg) translateY(-10px)}}
@keyframes ent{from{opacity:0;transform:rotate(12deg) translateY(30px)}to{opacity:1;transform:rotate(3deg)}}
@keyframes up{from{opacity:0;transform:translateY(22px)}}
@keyframes pr{from{transform:scale(1);opacity:.8}to{transform:scale(1.7);opacity:0}}
.hero .wrap>div>*{animation:up .8s cubic-bezier(.2,.7,.2,1) both}.hero .wrap>div>:nth-child(2){animation-delay:.15s}.hero .wrap>div>:nth-child(3){animation-delay:.3s}
.js .rv{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease,translate .3s,box-shadow .3s,border-color .3s}.js .rv.vu{opacity:1;transform:none}
.btn{transition:background .2s,color .2s,transform .2s}.btn:hover{transform:translateY(-2px)}
.callbar:before{content:"";position:absolute;inset:-2px;border-radius:50%;border:2px solid var(--lb);animation:pr 2.4s ease-out infinite}
.atouts{background:var(--m);color:var(--b)}.atouts .wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1.5rem;padding:2rem 1.25rem}
.atouts b{display:block;font-size:1.1rem}.atouts span{color:#c9d8f2;font-size:.95rem}
.two{display:grid;grid-template-columns:1fr 1.2fr;gap:3rem}
#prestations .wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:1.25rem}#prestations h2{grid-column:1/-1}
.svc{display:flex;flex-direction:column;gap:.6rem;padding:1.6rem;border-radius:20px;background:var(--g);border:1px solid #d5dfee}
.svc h3,.svc p{margin:0}.svc a{margin-top:auto;padding-top:.5rem;font-weight:700;text-decoration:none}.svc a:hover{text-decoration:underline}
.lead{color:#b3c0d6}.galerie{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:2rem;margin-top:2rem}
.ba{position:relative;aspect-ratio:4/3;overflow:hidden;background:#222;border-radius:18px;--p:50%}.ba img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ba .av{clip-path:inset(0 calc(100% - var(--p)) 0 0)}.ba .bar{position:absolute;top:0;bottom:0;left:var(--p);width:3px;background:var(--b);transform:translateX(-50%);pointer-events:none}
.ba .bar:after{content:"\2194";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:40px;border-radius:50%;background:var(--b);color:var(--m);display:grid;place-items:center;font-weight:700;box-shadow:0 4px 14px rgba(0,0,0,.4)}
.ba input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}.ba:focus-within .bar{outline:3px solid var(--lb)}
.tag{position:absolute;bottom:.6rem;background:rgba(0,0,0,.7);color:#fff;padding:.15rem .7rem;border-radius:999px;font-size:.85rem}.tag.l{left:.6rem}.tag.r{right:.6rem}
figcaption{padding:.7rem 0;color:#dde5f2}figure{margin:0}.vide{border:1px dashed var(--lb);border-radius:14px;padding:2rem;color:#ccd6e6}
.steps{list-style:none;counter-reset:s;margin:0;padding:0}.steps li{counter-increment:s;position:relative;padding:.7rem 0 .7rem 3.3rem}
.steps li:before{content:counter(s);position:absolute;left:0;top:.55rem;width:2.3rem;height:2.3rem;border-radius:50%;background:var(--m);color:var(--b);display:grid;place-items:center;font-weight:700}
details{border-top:1px solid #cdd7e6;padding:1rem 0}summary{cursor:pointer;font-weight:700;color:var(--n)}details p{margin:.7rem 0 0}
form{display:grid;gap:1rem}label{display:grid;gap:.3rem;font-size:.95rem}
input,select,textarea{font:inherit;padding:.75rem .9rem;border:1px solid #8c9ab0;border-radius:12px;background:var(--b);color:var(--n);width:100%}
input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border:2px solid #e5484d}
.hp{position:absolute;left:-9999px}.small{font-size:.85rem;color:#b3c0d6;margin:0}.tel{font:800 2rem var(--sans);text-decoration:none}
#retour{margin:0;font-weight:600}.foot .wrap{padding:2rem 1.25rem}.foot p{margin:.3rem 0}
.callbar{position:fixed;right:18px;bottom:18px;width:60px;height:60px;border-radius:50%;background:var(--m);color:var(--b);border:2px solid var(--b);display:grid;place-items:center;box-shadow:0 10px 25px rgba(0,0,0,.45);z-index:30}
.callbar:hover{background:var(--m2)}.callbar svg{width:28px;height:28px;fill:currentColor}
dialog{max-width:600px;border:2px solid var(--m);border-radius:20px;padding:1.5rem}dialog::backdrop{background:rgba(0,0,0,.7)}
@media(max-width:760px){
 .burger{display:block}.top nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--n);flex-direction:column;align-items:flex-start;padding:1.25rem}.top nav.open{display:flex}
 .two,.hero .wrap{grid-template-columns:1fr;gap:2rem}.wrap{padding:3rem 1.25rem}.hero .wrap{padding:3rem 1.25rem 4rem}.card{max-width:320px;margin:0 auto;padding:1.6rem}
}
.prog{position:fixed;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--m2),var(--lb));transform:scaleX(0);transform-origin:0 50%;z-index:40}
.top{transition:min-height .3s,box-shadow .3s}.logo img{transition:height .3s}.top.sm{min-height:56px;box-shadow:0 6px 24px rgba(0,0,0,.45)}.top.sm .logo img{height:38px}
.hero{position:relative;overflow:hidden}.hero .wrap{position:relative;z-index:1}
.hero:before,.hero:after{content:"";position:absolute;border-radius:50%;filter:blur(70px);opacity:.3;animation:dr 14s ease-in-out infinite alternate}
.hero:before{width:440px;height:440px;background:var(--m2);top:-140px;right:-90px}.hero:after{width:340px;height:340px;background:var(--lb);bottom:-140px;left:-70px;animation-delay:-7s}
@keyframes dr{to{transform:translate(-70px,60px) scale(1.18)}}
.hero h1.split{animation:none}.w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.14em;margin-bottom:-.14em}
.w>span{display:inline-block;transform:translateY(112%);animation:wd .9s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--i)*80ms + 200ms)}
@keyframes wd{to{transform:none}}
.hl{color:var(--m2);text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 96%/0 .09em no-repeat;animation:ul 1s 1.1s ease forwards}
@keyframes ul{to{background-size:100% .09em}}
.card img{transform:perspective(700px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .2s ease-out}
.atouts{background:linear-gradient(110deg,var(--m) 40%,var(--m2) 50%,var(--m) 60%) 0 0/250% 100%;animation:sh 7s linear infinite}@keyframes sh{to{background-position:-150% 0}}
.svc{position:relative;overflow:hidden;transition:translate .3s,box-shadow .3s,border-color .3s}
.svc:before{content:"";position:absolute;inset:0;background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%),rgba(27,74,148,.18),transparent 70%);opacity:0;transition:opacity .3s;pointer-events:none}
.svc:hover:before{opacity:1}.svc:hover{translate:0 -6px;border-color:var(--m2);box-shadow:0 24px 40px -22px rgba(13,42,87,.55)}
.ba img{transition:transform .8s ease}.ba:hover img{transform:scale(1.05)}
.steps li:not(:last-child):after{content:"";position:absolute;left:1.1rem;top:2.9rem;bottom:-.3rem;width:2px;background:var(--m);transform-origin:top;transition:transform .7s .3s}
.steps li:before{transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
.js .steps li:not(.vu):before{transform:scale(0)}.js .steps li:not(.vu):after{transform:scaleY(0)}
details{border-top:1px solid #cdd7e6;padding:0}summary{cursor:pointer;font-weight:700;color:var(--n);display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;list-style:none}
summary::-webkit-details-marker{display:none}summary:after{content:"+";font-size:1.7rem;line-height:1;color:var(--m2);transition:transform .35s}
details.ov summary:after{transform:rotate(135deg)}details p{margin:0;padding:0 0 1rem;overflow:hidden}details:hover summary{color:var(--m2)}
input,select,textarea{transition:box-shadow .25s,border-color .25s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--lb);box-shadow:0 0 0 4px rgba(155,188,242,.4)}
.btn:active{transform:scale(.97)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.card,.hero .wrap>div>*,.callbar:before,.hero:before,.hero:after,.atouts,.hl{animation:none}.hl{background-size:100% .09em}.card img{transition:none}}
.foot .wrap{padding:3.5rem 1.25rem 2rem}
.fcols{display:grid;grid-template-columns:1.5fr 1fr 1.2fr;gap:2.5rem}
.fcols h3{font-size:1.25rem;margin-bottom:1.1rem}.fcols h3:after{content:"";display:block;width:64px;height:3px;background:var(--lb);margin-top:.6rem}
.fcols p{margin:0;color:#c3cddd;font-size:.98rem}.fcols ul{list-style:none;margin:0;padding:0}.fcols li{padding:.4rem 0;overflow-wrap:anywhere}
.foot .fcols a:not(.btn){color:#e6ebf3;text-decoration:none}.foot .fcols a:not(.btn):hover{color:var(--lb)}
.fbas{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.15);font-size:.9rem;color:#aab8d0}
@media(max-width:900px){.fcols{grid-template-columns:1fr 1fr}}@media(max-width:560px){.fcols{grid-template-columns:1fr}}
.legal .wrap{max-width:820px;padding:3.5rem 1.25rem 4rem}.legal h1{font-size:clamp(2rem,5vw,3rem)}
.legal h2{font-size:1.35rem;margin:2.2rem 0 .6rem}.legal ul{padding-left:1.2rem}.legal li{padding:.15rem 0}.legal .maj{margin-top:2.5rem;font-size:.9rem;color:#5a6577}
