/* ============================================================
   UP TECH GROUP — uptech-group.com
   Thème nuit premium. Palette de marque : #29235C / #36A9E1
   Poppins. Mobile-first. Performance 3G.
   ============================================================ */

/* ---------- 1. Variables & reset ---------- */
:root{
  --nuit:#FFFFFF;
  --nuit-2:#F8F9FF;
  --encre:#111111;
  --encre-2:#202243;
  --surface:#FFFFFF;
  --surface-2:#F3F6FF;
  --ciel:#2E8BF8;
  --ciel-fonce:#2065D4;
  --ciel-clair:#77C4FF;
  --ecume:#0F1122;
  --brume:#4B5368;
  --brume-2:#7A8499;
  --ligne:rgba(46,136,255,.18);
  --ligne-2:rgba(15,20,50,.12);
  --vert-wa:#25D366;
  --ombre:0 22px 54px rgba(17,26,68,.08);
  --rayon:18px;
  --rayon-s:12px;
  --transition:.28s cubic-bezier(.4,0,.2,1);
  --conteneur:1180px;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:'Poppins',system-ui,-apple-system,sans-serif;
  background:var(--nuit-2);
  color:var(--ecume);
  line-height:1.75;
  font-size:16px;
  overflow-x:hidden;
  transition:transform .6s ease, opacity .4s ease;
}
body.page-slide-away{transform:translateX(-100vw);opacity:.84;}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{font-family:inherit;cursor:pointer;border:none;background:none}
::selection{background:var(--ciel);color:#fff}

:focus-visible{outline:2px solid var(--ciel);outline-offset:3px;border-radius:4px}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--ciel);color:#fff;padding:10px 18px;border-radius:0 0 10px 0;
  font-weight:600;font-size:.85rem;
}
.skip-link:focus{left:0}

/* ---------- 2. Utilitaires ---------- */
.conteneur{width:100%;max-width:var(--conteneur);margin:0 auto;padding:0 22px}
.section{padding:100px 0}
.section-serree{padding:72px 0}

.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-size:.72rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ciel);margin-bottom:18px;
}
.eyebrow::before{display:none}

.titre-section{
  font-size:clamp(1.85rem,4vw,2.9rem);
  font-weight:700;line-height:1.14;letter-spacing:-.02em;
  margin-bottom:18px;
}
.titre-section .grad{
  background:linear-gradient(100deg,var(--ciel) 15%,var(--ciel-clair) 95%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.sous-titre{color:var(--brume);max-width:700px;font-size:1.02rem;font-weight:400;line-height:1.8;}

p, li, .carte-service p, .projet-corps p, .etape p, .engagement p, .footer-legal p, .formulaire > p, .carte-tarif p, .bloc-service-tete p, .carte-histoire p, .carte-membre p, .texte-note {
  color:var(--brume);
  font-weight:400;
}

.entete-section{margin-bottom:52px}
.entete-section.centre{text-align:center}
.entete-section.centre .sous-titre{margin:0 auto}
.entete-section.centre .eyebrow{justify-content:center}
.entete-section.centre .eyebrow::before{display:none}

/* ---------- 3. Boutons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:14px 28px;border-radius:12px;
  font-size:.9rem;font-weight:600;letter-spacing:.01em;
  transition:transform var(--transition),box-shadow var(--transition),background var(--transition),border-color var(--transition);
  will-change:transform;
}
.btn svg{width:18px;height:18px;flex-shrink:0}
.btn-plein{
  background:linear-gradient(120deg,var(--ciel) 0%,var(--ciel-fonce) 100%);
  color:#fff;
  box-shadow:0 12px 34px rgba(46,136,255,.3);
}
.btn-plein:hover{transform:translateY(-2px);box-shadow:0 18px 48px rgba(46,136,255,.38)}
.btn-contour{
  border:1px solid rgba(46,136,255,.18);color:var(--ecume);
  background:rgba(46,136,255,.08);
}
.btn-contour:hover{border-color:var(--ciel);background:rgba(46,136,255,.12);transform:translateY(-2px)}
.btn-wa{
  background:linear-gradient(120deg,#2bd06a 0%,#1faf55 100%);
  color:#fff;box-shadow:0 10px 30px rgba(37,211,102,.25);
}
.btn-wa:hover{transform:translateY(-2px);box-shadow:0 16px 40px rgba(37,211,102,.38)}
.btn-large{width:100%}

/* ---------- 4. Navigation ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  background:rgba(255,255,255,.95);
  border-bottom:1px solid rgba(46,136,255,.12);
  transition:background var(--transition),border-color var(--transition),box-shadow var(--transition);
  box-shadow:0 16px 42px rgba(17,26,68,.08);
}
.nav.scrolled{
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
  border-bottom-color:rgba(46,136,255,.18);
  box-shadow:0 16px 50px rgba(17,26,68,.12);
}
.nav-inner{
  display:flex;align-items:center;justify-content:space-between;
  height:72px;
}
.logo{display:flex;align-items:center;gap:11px;font-weight:700;font-size:1.02rem;letter-spacing:.01em}
.logo-mark{height:42px;width:auto;flex-shrink:0}
/* Si votre logo.svg contient DEJA les mots "UP TECH GROUP",
   retirez les deux barres ci-dessous pour masquer le texte en double. */
/* .logo-texte{display:none} */
.logo b{color:var(--ecume);font-weight:700}
.logo span{color:var(--ciel);font-weight:700}

.nav-liens{display:flex;align-items:center;gap:6px}
.nav-liens a{
  padding:9px 15px;border-radius:9px;
  font-size:.86rem;font-weight:500;color:var(--encre);
  transition:color var(--transition),background var(--transition);
}
.nav-liens a:hover{color:var(--ciel);background:rgba(54,169,225,.12)}
.nav-liens a.actif{color:var(--ciel)}
.nav-cta{margin-left:14px;padding:11px 22px;font-size:.84rem}

.burger{
  display:none;width:44px;height:44px;border-radius:10px;
  align-items:center;justify-content:center;color:var(--ecume);
  border:1px solid var(--ligne-2);
}
.burger svg{width:22px;height:22px}
.burger .icone-fermer{display:none}
.nav.ouvert .burger .icone-menu{display:none}
.nav.ouvert .burger .icone-fermer{display:block}

@media(max-width:900px){
  .burger{display:flex}
  .nav-liens{
    position:fixed;inset:72px 0 auto 0;
    flex-direction:column;align-items:stretch;gap:4px;
    background:rgba(255,255,255,.98);
    backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
    padding:18px 22px 26px;
    border-bottom:1px solid rgba(15,20,50,.12);
    transform:translateY(-12px);opacity:0;pointer-events:none;
    transition:transform var(--transition),opacity var(--transition);
  }
  .nav.ouvert .nav-liens{transform:translateY(0);opacity:1;pointer-events:auto}
  .nav-liens a{padding:14px 16px;font-size:.95rem;color:var(--encre);border-radius:12px}
  .nav-liens a:hover{color:var(--encre);background:rgba(15,20,50,.06)}
  .nav-liens a.actif{color:var(--encre);font-weight:700;background:rgba(15,20,50,.06)}
  .nav-cta{margin:10px 0 0}
}

/* ---------- 5. Hero ---------- */
.hero{
  position:relative;
  padding:148px 0 88px;
  overflow:hidden;
}
.hero::before{
  content:"";position:absolute;inset:0;
  background:
    radial-gradient(960px 520px at 12% -8%,rgba(46,136,255,.14) 0%,transparent 55%),
    radial-gradient(700px 420px at 92% 10%,rgba(46,136,255,.14) 0%,transparent 58%);
  pointer-events:none;
}
.hero::after{
  content:"";position:absolute;inset:0;opacity:.28;pointer-events:none;
  background-image:
    linear-gradient(rgba(46,136,255,.07) 1px,transparent 1px),
    linear-gradient(90deg,rgba(46,136,255,.07) 1px,transparent 1px);
  background-size:52px 52px;
  mask-image:radial-gradient(ellipse 70% 60% at 48% 30%,#000 22%,transparent 76%);
  -webkit-mask-image:radial-gradient(ellipse 70% 60% at 48% 30%,#000 22%,transparent 76%);
}
.hero-grille{
  position:relative;z-index:1;
  display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;
}
.hero-badge{
  display:inline-flex;align-items:center;gap:9px;
  padding:7px 16px;border-radius:100px;
  background:rgba(54,169,225,.09);border:1px solid var(--ligne);
  font-size:.76rem;font-weight:500;color:var(--ciel-clair);
  margin-bottom:26px;
}
.hero-badge .point{
  width:8px;height:8px;border-radius:50%;background:var(--vert-wa);
  box-shadow:0 0 0 0 rgba(37,211,102,.55);
  animation:pulse-point 2.2s infinite;
}
@keyframes pulse-point{
  0%{box-shadow:0 0 0 0 rgba(37,211,102,.55)}
  70%{box-shadow:0 0 0 9px rgba(37,211,102,0)}
  100%{box-shadow:0 0 0 0 rgba(37,211,102,0)}
}
.hero h1{
  font-size:clamp(2.15rem,5.2vw,3.9rem);
  font-weight:800;line-height:1.12;letter-spacing:-.028em;
  margin-bottom:22px;
}
.hero-cycle{
  position:relative;white-space:nowrap;
  background:linear-gradient(100deg,var(--ciel) 0%,var(--ciel-clair) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.caret{
  display:inline-block;width:3px;height:.9em;margin-left:4px;
  background:var(--ciel);vertical-align:-.08em;border-radius:2px;
  animation:caret-blink 1s steps(1) infinite;
}
@keyframes caret-blink{50%{opacity:0}}
.hero-texte{color:var(--brume);font-size:1.02rem;font-weight:300;max-width:520px;margin-bottom:34px}
.hero-texte strong{color:var(--ecume);font-weight:500}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:38px}
.hero-preuves{display:flex;gap:26px;flex-wrap:wrap}
.preuve{display:flex;align-items:center;gap:9px;font-size:.8rem;color:var(--brume)}
.preuve svg{width:16px;height:16px;color:var(--ciel);flex-shrink:0}

/* Accordion HTML/CSS conversion */
.section-accordion{background:transparent;padding:72px 0;}
.accordion-grid{display:grid;grid-template-columns:1.05fr 1.45fr;gap:40px;align-items:center;}
.accordion-text h3{font-size:2.3rem;font-weight:700;line-height:1.05;margin-bottom:18px;max-width:540px;color:#0f172a}
.accordion-text p{max-width:560px;font-size:1rem;color:var(--brume);line-height:1.85;margin-bottom:28px}
.accordion-row{display:flex;gap:16px;align-items:flex-end;overflow-x:auto;padding:20px;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:rgba(15,23,42,.22) transparent;position:relative;-webkit-overflow-scrolling:touch;border-radius:36px;}
.accordion-row::-webkit-scrollbar{height:9px}
.accordion-row::-webkit-scrollbar-track{background:transparent;border-radius:999px}
.accordion-row::-webkit-scrollbar-thumb{background:rgba(15,23,42,.22);border-radius:999px}
.accordion-row:hover .accordion-item{opacity:.92}
.accordion-item{position:relative;flex:0 0 60px;height:450px;min-width:60px;border-radius:28px;overflow:hidden;cursor:pointer;transition:transform .45s cubic-bezier(.25,.8,.25,1),opacity .28s ease,filter .35s ease;box-shadow:0 24px 64px rgba(15,23,42,.1);scroll-snap-align:center;background:#111827;}
.accordion-item.active,.accordion-item:hover{flex:0 0 400px;min-width:400px;opacity:1}
.accordion-item:not(.active):not(:hover){opacity:.95}
.accordion-item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.accordion-overlay{position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.32) 100%);transition:background .35s ease}
.accordion-item-title{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);color:#fff;font-size:1.05rem;font-weight:700;white-space:nowrap;letter-spacing:.02em;text-align:center;transition:all .35s ease,text-shadow .35s ease;text-shadow:0 20px 40px rgba(0,0,0,.35)}
.accordion-item:not(.active):not(:hover) .accordion-item-title{bottom:50%;transform:translateX(-50%) rotate(90deg)}
@media(max-width:900px){
  .accordion-grid{grid-template-columns:1fr;gap:32px}
  .accordion-row{flex-direction:row;overflow-x:auto;padding:0 6px;scroll-snap-type:x mandatory;scroll-snap-stop:always;scrollbar-width:thin;scrollbar-color:rgba(15,23,42,.22) transparent;}
  .accordion-row::-webkit-scrollbar{height:9px}
  .accordion-row::-webkit-scrollbar-track{background:transparent;border-radius:999px}
  .accordion-row::-webkit-scrollbar-thumb{background:rgba(15,23,42,.22);border-radius:999px}
  .accordion-item{flex:0 0 9%;min-width:9%;max-width:9%;height:320px;filter:none;opacity:1;box-shadow:0 18px 50px rgba(15,23,42,.08);}
  .accordion-item.active{flex:0 0 62%;min-width:62%;max-width:62%;height:360px;box-shadow:0 24px 64px rgba(15,23,42,.14);}
  .accordion-item:hover{flex:0 0 62%;min-width:62%;max-width:62%;}
  .accordion-item:not(.active) .accordion-overlay{background:linear-gradient(180deg,transparent 25%,rgba(0,0,0,.34) 100%)}
  .accordion-item.active .accordion-overlay{background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.3) 100%)}
  .accordion-item-title{position:absolute;left:20px;bottom:20px;top:auto;right:auto;transform:none;white-space:normal;max-width:calc(100% - 40px);padding:0;font-size:1rem;line-height:1.2;text-align:left;}
  .accordion-item:not(.active) .accordion-item-title{position:absolute;top:50%;left:50%;bottom:auto;right:auto;transform:translate(-50%,-50%);writing-mode:vertical-rl;text-orientation:mixed;white-space:normal;max-width:140px;padding:0;font-size:.95rem;line-height:1.2;text-align:center;}
  .accordion-item-title,
  .accordion-item:not(.active) .accordion-item-title,
  .accordion-item.active .accordion-item-title{
    transition:transform .45s ease,top .45s ease,left .45s ease,bottom .45s ease,opacity .45s ease;
  }
}

/* Mockup navigateur en CSS pur */
.hero-visuel{position:relative}
.mockup{
  position:relative;
  background:linear-gradient(160deg,var(--surface-2) 0%,var(--surface) 100%);
  border:1px solid var(--ligne-2);
  border-radius:18px;
  box-shadow:var(--ombre);
  overflow:hidden;
  animation:flotter 7s ease-in-out infinite;
}
@keyframes flotter{
  0%,100%{transform:translateY(0) rotate(-.4deg)}
  50%{transform:translateY(-13px) rotate(.4deg)}
}
.mockup-barre{
  display:flex;align-items:center;gap:8px;
  padding:13px 16px;border-bottom:1px solid var(--ligne-2);
  background:rgba(13,11,30,.4);
}
.mockup-barre i{width:10px;height:10px;border-radius:50%;background:var(--brume-2);opacity:.5}
.mockup-barre i:nth-child(1){background:#e05252;opacity:.85}
.mockup-barre i:nth-child(2){background:#f0a500;opacity:.85}
.mockup-barre i:nth-child(3){background:#2ecc87;opacity:.85}
.mockup-url{
  flex:1;margin-left:8px;padding:5px 14px;border-radius:7px;
  background:rgba(255,255,255,.05);
  font-size:.68rem;color:var(--brume);letter-spacing:.02em;
}
.mockup-corps{padding:22px;display:grid;gap:14px}
.mock-hero{
  border-radius:12px;padding:20px;
  background:linear-gradient(120deg,rgba(41,35,92,.9),rgba(54,169,225,.25));
  border:1px solid var(--ligne);
}
.mock-ligne{height:9px;border-radius:5px;background:rgba(234,243,251,.85);width:62%;margin-bottom:9px}
.mock-ligne.fine{height:6px;background:rgba(234,243,251,.35);width:84%;margin-bottom:0}
.mock-btn{
  display:inline-block;margin-top:14px;width:86px;height:24px;border-radius:7px;
  background:var(--ciel);box-shadow:0 6px 16px rgba(54,169,225,.4);
}
.mock-cartes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.mock-carte{
  border-radius:11px;padding:13px;
  background:rgba(255,255,255,.035);border:1px solid var(--ligne-2);
}
.mock-icone{width:26px;height:26px;border-radius:8px;background:rgba(54,169,225,.22);margin-bottom:10px}
.mock-carte .mock-ligne{width:78%;height:6px;background:rgba(234,243,251,.5)}
.mock-carte .mock-ligne.fine{width:96%;background:rgba(234,243,251,.2)}
.mock-graph{
  display:flex;align-items:flex-end;gap:7px;height:64px;
  padding:12px 14px;border-radius:11px;
  background:rgba(255,255,255,.03);border:1px solid var(--ligne-2);
}
.mock-graph b{
  flex:1;border-radius:4px 4px 0 0;
  background:linear-gradient(180deg,var(--ciel),rgba(54,169,225,.25));
  animation:barre-monte 1.4s cubic-bezier(.3,1.4,.5,1) both;
}
.mock-graph b:nth-child(1){height:38%;animation-delay:.15s}
.mock-graph b:nth-child(2){height:62%;animation-delay:.3s}
.mock-graph b:nth-child(3){height:46%;animation-delay:.45s}
.mock-graph b:nth-child(4){height:82%;animation-delay:.6s}
.mock-graph b:nth-child(5){height:58%;animation-delay:.75s}
.mock-graph b:nth-child(6){height:100%;animation-delay:.9s}
@keyframes barre-monte{from{transform:scaleY(0);transform-origin:bottom}to{transform:scaleY(1);transform-origin:bottom}}
.pastille{
  position:absolute;z-index:2;
  display:flex;align-items:center;gap:11px;
  padding:13px 17px;border-radius:14px;
  background:rgba(255,255,255,.96);border:1px solid rgba(46,136,255,.22);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  box-shadow:0 16px 44px rgba(17,26,68,.16);
  font-size:.76rem;font-weight:600;color:var(--ecume);line-height:1.35;
}
.pastille svg{width:20px;height:20px;color:var(--ciel);flex-shrink:0}
.pastille small{display:block;color:var(--brume);font-size:.67rem;font-weight:400;margin-top:1px}
.pastille-1{top:-18px;right:-10px;animation:flotter 6s ease-in-out infinite reverse}
.pastille-2{bottom:-16px;left:-14px;animation:flotter 8s ease-in-out infinite}

@media(max-width:900px){
  .hero{padding:140px 0 70px}
  .hero-grille{grid-template-columns:1fr;gap:48px}
  .hero-visuel{max-width:480px;margin:0 auto;width:100%;padding:0 8px}
  .pastille-1{right:0;top:-14px}
  .pastille-2{left:0}
}
@media(max-width:480px){
  .hero-visuel{padding:0 2px}
  .pastille{padding:9px 12px;font-size:.68rem}
  .pastille svg{width:16px;height:16px}
  .pastille-1{top:-10px}
}

/* ---------- 6. Bandeau défilant ---------- */
.marquee{
  border-top:1px solid rgba(46,136,255,.12);border-bottom:1px solid rgba(46,136,255,.12);
  padding:20px 0;overflow:hidden;
  background:rgba(46,136,255,.06);
}
.marquee-piste{display:flex;gap:0;width:max-content;animation:defile 30s linear infinite}
.marquee:hover .marquee-piste{animation-play-state:paused}
@keyframes defile{to{transform:translateX(-50%)}}
.marquee-item{
  display:flex;align-items:center;gap:26px;padding:0 26px;
  font-size:.86rem;font-weight:500;color:var(--brume);
  letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;
}
.marquee-item::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--ciel);opacity:.6}

/* ---------- 7. Cartes services ---------- */
.grille-services{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
@media(max-width:1020px){.grille-services{grid-template-columns:repeat(2,1fr)}}
@media(max-width:780px){.grille-services{grid-template-columns:1fr}}
.carte-service{
  position:relative;
  padding:32px 28px;border-radius:24px;
  background:#ffffff;
  border:1px solid rgba(46,136,255,.12);
  transition:transform var(--transition),border-color var(--transition),box-shadow var(--transition),background var(--transition);
  overflow:hidden;
  display:flex;flex-direction:column;
}
.carte-service::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--ciel),var(--ciel-clair));
  transform:scaleX(0);transform-origin:left;
  transition:transform .36s cubic-bezier(.4,0,.2,1);
}
.carte-service:hover{transform:translateY(-10px);border-color:rgba(46,136,255,.26);box-shadow:0 24px 50px rgba(17,26,68,.08);background:rgba(255,255,255,.98)}
.carte-service:hover::before{transform:scaleX(1)}
.service-icone{
  width:52px;height:52px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(54,169,225,.11);border:1px solid var(--ligne);
  color:var(--ciel);margin-bottom:20px;
}
.service-icone svg{width:24px;height:24px}
.carte-service h3{font-size:1.06rem;font-weight:600;margin-bottom:10px;letter-spacing:-.01em}
.carte-service p{font-size:.85rem;color:var(--brume);font-weight:300;flex:1}
.carte-service .prix-depuis{
  margin-top:18px;padding-top:16px;border-top:1px solid var(--ligne-2);
  font-size:.78rem;color:var(--brume);
}
.carte-service .prix-depuis b{
  display:block;font-size:1.05rem;font-weight:700;color:var(--ciel);letter-spacing:-.01em;
}
.carte-service .lien-fleche{
  display:inline-flex;align-items:center;gap:7px;margin-top:14px;
  font-size:.82rem;font-weight:600;color:var(--ciel);
  transition:gap var(--transition);
}
.carte-service .lien-fleche svg{width:15px;height:15px;transition:transform var(--transition)}
.carte-service:hover .lien-fleche{gap:11px}

/* ---------- 8. Réalisations ---------- */
.grille-realisations{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
@media(max-width:980px){.grille-realisations{grid-template-columns:1fr;max-width:560px;margin:0 auto}}
.carte-projet{
  border-radius:var(--rayon);overflow:hidden;
  background:var(--surface);border:1px solid var(--ligne-2);
  transition:transform var(--transition),border-color var(--transition),box-shadow var(--transition);
}
.carte-projet:hover{transform:translateY(-7px);border-color:var(--ligne);box-shadow:var(--ombre)}
.projet-visuel{
  position:relative;height:190px;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.projet-visuel.v1{background:linear-gradient(135deg,#29235C 0%,#1d8abf 120%)}
.projet-visuel.v2{background:linear-gradient(135deg,#173a5c 0%,#36A9E1 130%)}
.projet-visuel.v3{background:linear-gradient(135deg,#2d2766 0%,#7BC8EE 150%)}
.projet-visuel::after{
  content:"";position:absolute;inset:0;
  background-image:
    linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);
  background-size:30px 30px;
}
.projet-visuel svg{width:64px;height:64px;color:rgba(255,255,255,.9);position:relative;z-index:1;filter:drop-shadow(0 8px 22px rgba(5,4,16,.4))}

/* --- Captures d'ecran des realisations --- */
.projet-visuel{height:210px}
.projet-shot{
  position:absolute;inset:0;z-index:3;
  width:100%;height:100%;
  object-fit:cover;object-position:top center;
  transition:transform .7s cubic-bezier(.3,.8,.4,1);
}
.carte-projet:hover .projet-shot{transform:scale(1.05)}
/* Voile degrade en haut pour que le badge reste lisible sur toute image */
.projet-visuel.a-image::before{
  content:"";position:absolute;inset:0 0 auto 0;height:82px;z-index:4;
  background:linear-gradient(180deg,rgba(9,14,38,.55) 0%,rgba(9,14,38,0) 100%);
  pointer-events:none;
}
.projet-visuel.a-image::after{opacity:0}
.projet-visuel.a-image svg{opacity:0}
/* Si l'image est absente ou casse, on retombe sur l'icone d'origine */
.projet-visuel.a-image .projet-shot:not([src]),
.projet-visuel.a-image .projet-shot[src=""]{display:none}
.projet-tag{z-index:5}
.projet-tag{
  position:absolute;top:14px;left:14px;z-index:2;
  padding:5px 13px;border-radius:100px;
  background:rgba(13,11,30,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.14);
  font-size:.66rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#fff;
}
.projet-corps{padding:24px 24px 26px}
.projet-corps h3{font-size:1.05rem;font-weight:600;margin-bottom:9px}
.projet-corps p{font-size:.85rem;color:var(--brume);font-weight:300;margin-bottom:16px}
.projet-stack{display:flex;flex-wrap:wrap;gap:7px}
.projet-stack span{
  padding:4px 11px;border-radius:7px;font-size:.68rem;font-weight:500;
  background:rgba(54,169,225,.09);border:1px solid var(--ligne);color:var(--ciel-clair);
}

/* ---------- 9. Processus ---------- */
.grille-etapes{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;counter-reset:etape}
@media(max-width:1020px){.grille-etapes{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.grille-etapes{grid-template-columns:1fr}}
.etape{
  position:relative;padding:28px 24px;border-radius:var(--rayon);
  background:rgba(41,35,92,.16);border:1px solid var(--ligne-2);
  counter-increment:etape;
  transition:border-color var(--transition),background var(--transition);
}
.etape:hover{border-color:var(--ligne);background:rgba(41,35,92,.28)}
.etape::before{
  content:"0" counter(etape);
  display:block;
  font-size:2rem;font-weight:800;letter-spacing:-.03em;
  background:linear-gradient(120deg,var(--ciel),var(--ciel-clair));
  -webkit-background-clip:text;background-clip:text;color:transparent;
  margin-bottom:14px;
}
.etape h3{font-size:1rem;font-weight:600;margin-bottom:8px}
.etape p{font-size:.83rem;color:var(--brume);font-weight:300}

/* ---------- 10. Engagements ---------- */
.grille-engagements{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:900px){.grille-engagements{grid-template-columns:1fr;max-width:520px;margin:0 auto}}
.engagement{
  display:flex;gap:17px;align-items:flex-start;
  padding:24px;border-radius:var(--rayon);
  background:var(--surface);border:1px solid var(--ligne-2);
  transition:border-color var(--transition),transform var(--transition);
}
.engagement:hover{border-color:var(--ligne);transform:translateY(-4px)}
.engagement-icone{
  width:42px;height:42px;border-radius:11px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:rgba(54,169,225,.11);color:var(--ciel);
}
.engagement-icone svg{width:20px;height:20px}
.engagement h3{font-size:.94rem;font-weight:600;margin-bottom:5px}
.engagement p{font-size:.81rem;color:var(--brume);font-weight:300}

/* ---------- 11. FAQ ---------- */
.faq{max-width:760px;margin:0 auto}
.faq-item{
  border:1px solid var(--ligne-2);border-radius:14px;
  background:var(--surface);margin-bottom:12px;overflow:hidden;
  transition:border-color var(--transition);
}
.faq-item.ouvert{border-color:var(--ligne)}
.faq-question{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;
  padding:20px 24px;text-align:left;
  font-size:.95rem;font-weight:500;color:var(--ecume);
}
.faq-question svg{
  width:19px;height:19px;flex-shrink:0;color:var(--ciel);
  transition:transform var(--transition);
}
.faq-item.ouvert .faq-question svg{transform:rotate(180deg)}
.faq-reponse{
  max-height:0;overflow:hidden;
  transition:max-height .38s cubic-bezier(.4,0,.2,1);
}
.faq-reponse p{
  padding:0 24px 22px;font-size:.87rem;color:var(--brume);font-weight:300;
}

/* ---------- 12. Bande CTA ---------- */
.cta-bande{
  position:relative;overflow:hidden;
  border-radius:26px;
  padding:68px 40px;text-align:center;
  background:linear-gradient(135deg,rgba(46,136,255,.96) 0%,rgba(81,154,243,.95) 52%,rgba(120,196,255,.92) 100%);
  border:1px solid rgba(46,136,255,.16);
  box-shadow:0 24px 50px rgba(17,26,68,.1);
}
.cta-bande::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(560px 300px at 80% -20%,rgba(255,255,255,.25),transparent 65%);
}
.cta-bande h2{
  position:relative;
  font-size:clamp(1.8rem,3.4vw,2.85rem);font-weight:700;letter-spacing:-.02em;
  margin-bottom:18px;
}
.cta-bande p{position:relative;color:rgba(255,255,255,.9);max-width:580px;margin:0 auto 32px;font-weight:300;line-height:1.8}
.cta-bande .hero-actions{position:relative;justify-content:center;margin:0}

/* ---------- 13. Pied de page ---------- */
.footer{
  margin-top:88px;
  border-top:1px solid rgba(46,136,255,.12);
  background:linear-gradient(180deg,rgba(248,249,255,.95),rgba(243,246,255,1));
  padding:72px 0 0;
}
.footer-grille{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:44px;
  padding-bottom:48px;
}
@media(max-width:900px){.footer-grille{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.footer-grille{grid-template-columns:1fr}}
.footer-marque p{
  font-size:.85rem;color:var(--brume);font-weight:300;
  margin:16px 0 22px;max-width:300px;
}
.footer-social{display:flex;gap:10px}
.footer-social a{
  width:40px;height:40px;border-radius:11px;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--ligne-2);color:var(--brume);
  transition:all var(--transition);
}
.footer-social a:hover{border-color:var(--ciel);color:var(--ciel);transform:translateY(-3px)}
.footer-social svg{width:17px;height:17px}
.footer h4{
  font-size:.74rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ecume);margin-bottom:20px;
}
.footer-liens li{margin-bottom:11px}
.footer-liens a{
  font-size:.86rem;color:var(--brume);font-weight:300;
  transition:color var(--transition);
}
.footer-liens a:hover{color:var(--ciel)}
.footer-contact li{
  display:flex;gap:12px;align-items:flex-start;
  font-size:.84rem;color:var(--brume);font-weight:300;margin-bottom:14px;
}
.footer-contact svg{width:17px;height:17px;color:var(--ciel);flex-shrink:0;margin-top:2px}
.footer-contact a:hover{color:var(--ciel)}
.footer-legal{
  border-top:1px solid var(--ligne-2);
  padding:22px 0;
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
}
.footer-legal p{font-size:.72rem;color:var(--brume-2);font-weight:300}
.footer-legal nav{display:flex;gap:20px;flex-wrap:wrap}
.footer-legal nav a{font-size:.72rem;color:var(--brume-2);transition:color var(--transition)}
.footer-legal nav a:hover{color:var(--ciel)}

/* ---------- 14. Bouton WhatsApp flottant ---------- */
.wa-flottant{
  position:fixed;right:22px;bottom:22px;z-index:90;
  width:58px;height:58px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#2bd06a,#1faf55);
  color:#fff;
  box-shadow:0 12px 34px rgba(37,211,102,.42);
  transition:transform var(--transition),box-shadow var(--transition);
}
.wa-flottant::before{
  content:"";position:absolute;inset:0;border-radius:50%;
  border:2px solid rgba(37,211,102,.55);
  animation:onde-wa 2.4s ease-out infinite;
}
@keyframes onde-wa{
  0%{transform:scale(1);opacity:1}
  100%{transform:scale(1.65);opacity:0}
}
.wa-flottant:hover{transform:scale(1.09);box-shadow:0 16px 44px rgba(37,211,102,.55)}
.wa-flottant svg{width:28px;height:28px}
.wa-bulle{
  position:fixed;right:92px;bottom:34px;z-index:90;
  padding:9px 16px;border-radius:12px 12px 3px 12px;
  background:var(--surface-2);border:1px solid var(--ligne);
  font-size:.76rem;font-weight:500;color:var(--ecume);
  box-shadow:0 10px 30px rgba(5,4,16,.5);
  opacity:0;transform:translateX(8px);pointer-events:none;
  transition:opacity .35s ease,transform .35s ease;
}
.wa-bulle.visible{opacity:1;transform:translateX(0)}
@media(max-width:560px){.wa-bulle{display:none}}

/* ---------- 15. Sous-pages : hero de page ---------- */
.page-hero{
  position:relative;padding:160px 0 78px;overflow:hidden;
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(243,246,255,.95));
}
.page-hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(820px 470px at 12% -10%,rgba(46,136,255,.12) 0%,transparent 55%),
    radial-gradient(680px 360px at 90% 12%,rgba(46,136,255,.12) 0%,transparent 58%);
}
.page-hero .conteneur{position:relative;z-index:1}
.page-hero h1{
  font-size:clamp(2rem,4.3vw,3.5rem);
  font-weight:800;letter-spacing:-.027em;line-height:1.12;
  margin-bottom:18px;max-width:780px;
}
.page-hero .sous-titre{font-size:1.02rem;color:var(--brume);line-height:1.85;max-width:700px;}
.fil-ariane{
  display:flex;align-items:center;gap:9px;
  font-size:.76rem;color:var(--brume);margin-bottom:22px;
}
.fil-ariane a{color:var(--brume);transition:color var(--transition)}
.fil-ariane a:hover{color:var(--ciel)}
.fil-ariane svg{width:13px;height:13px;opacity:.6}
.fil-ariane b{color:var(--ciel);font-weight:500}

/* ---------- 16. Page services : blocs détaillés ---------- */
.bloc-service{
  display:grid;grid-template-columns:minmax(280px,340px) minmax(0,1fr);gap:44px;
  padding:58px 0;border-bottom:1px solid rgba(46,136,255,.12);
}
.bloc-service:last-of-type{border-bottom:none}
@media(max-width:900px){.bloc-service{grid-template-columns:1fr;gap:32px}}
.bloc-service-tete{position:sticky;top:104px;align-self:start;background:var(--surface);z-index:2;padding:28px 26px 24px;border:1px solid rgba(46,136,255,.1);border-radius:22px;box-shadow:0 16px 40px rgba(17,26,68,.04)}
@media(max-width:900px){.bloc-service-tete{position:static;box-shadow:none;border:none;padding:0}}
.bloc-service-tete .service-icone{margin-bottom:18px}
.bloc-service-tete h2{font-size:1.65rem;font-weight:700;letter-spacing:-.02em;margin-bottom:14px}
.bloc-service-tete p{font-size:.92rem;color:var(--brume);font-weight:300;line-height:1.84}
.grille-tarifs{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:stretch;}
.grille-tarifs.cercle-360{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:18px;
}
.grille-tarifs.cercle-360 .carte-tarif{
  position:relative;
  top:auto;left:auto;
  width:auto;
  transform:none;
  transform-style:preserve-3d;
  transition:border-color var(--transition),transform .6s ease,box-shadow var(--transition);
}
.grille-tarifs.cercle-360 .carte-tarif:hover{
  transform:rotateY(360deg);
  box-shadow:0 22px 40px rgba(0,0,0,.16);
}
.carte-tarif{
  display:grid;grid-template-columns:1fr auto;gap:12px 22px;align-items:start;
  padding:26px 28px;border-radius:24px;
  background:#ffffff;
  border:1px solid rgba(46,136,255,.12);
  transition:border-color var(--transition),transform var(--transition),box-shadow var(--transition),background var(--transition);
}
.carte-tarif:hover{border-color:rgba(46,136,255,.22);box-shadow:0 22px 50px rgba(17,26,68,.08);background:rgba(255,255,255,.98);transform:translateY(-3px)}
.carte-tarif h3{font-size:1.04rem;font-weight:700;letter-spacing:-.01em}
.carte-tarif .tarif{
  font-size:1.12rem;font-weight:700;color:var(--ciel);
  letter-spacing:-.01em;text-align:right;white-space:nowrap;
}
.carte-tarif .tarif small{display:block;font-size:.68rem;font-weight:400;color:var(--brume)}
.carte-tarif p{grid-column:1/-1;font-size:.83rem;color:var(--brume);font-weight:300}
.carte-tarif .inclus{
  grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;
}
.carte-tarif .inclus span{
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 12px;border-radius:8px;
  background:rgba(54,169,225,.07);border:1px solid var(--ligne-2);
  font-size:.7rem;color:var(--brume);
}
.carte-tarif .inclus svg{width:12px;height:12px;color:var(--ciel)}
.carte-tarif .btn{grid-column:1/-1;justify-self:start;margin-top:10px;padding:11px 22px;font-size:.82rem}
@media(max-width:560px){
  .carte-tarif{grid-template-columns:1fr}
  .carte-tarif .tarif{text-align:left}
}

/* ---------- 17. Page à propos ---------- */
.grille-2col{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center}
@media(max-width:900px){.grille-2col{grid-template-columns:1fr;gap:34px}}
.carte-histoire{
  padding:34px;border-radius:var(--rayon);
  background:linear-gradient(150deg,var(--surface-2),var(--surface));
  border:1px solid var(--ligne-2);
}
.carte-histoire h3{font-size:1.02rem;font-weight:600;color:var(--ciel);margin-bottom:10px}
.carte-histoire p{font-size:.88rem;color:var(--brume);font-weight:300}
.carte-histoire + .carte-histoire{margin-top:18px}
.grille-equipe{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.grille-equipe.duo{grid-template-columns:repeat(2,1fr);max-width:760px;margin:0 auto}
@media(max-width:900px){.grille-equipe,.grille-equipe.duo{grid-template-columns:1fr;max-width:440px;margin:0 auto}}

/* Bloc "equipe elargie" sous les fondateurs */
.note-equipe{
  max-width:760px;margin:26px auto 0;
  display:flex;align-items:center;gap:18px;
  padding:24px 28px;border-radius:var(--rayon);
  background:var(--surface-2);border:1px solid var(--ligne-2);
}
.note-equipe-icone{
  width:46px;height:46px;border-radius:13px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:rgba(46,136,255,.12);color:var(--ciel);
}
.note-equipe-icone svg{width:22px;height:22px}
.note-equipe p{font-size:.9rem;color:var(--brume);margin:0}
.note-equipe strong{color:var(--ecume);font-weight:600}
@media(max-width:560px){.note-equipe{flex-direction:column;text-align:center;gap:14px}}
.carte-membre{
  padding:30px 26px;border-radius:var(--rayon);text-align:center;
  background:var(--surface);border:1px solid var(--ligne-2);
  transition:border-color var(--transition),transform var(--transition);
}
.carte-membre:hover{border-color:var(--ligne);transform:translateY(-5px)}
.membre-avatar{
  width:74px;height:74px;border-radius:50%;margin:0 auto 18px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--encre),var(--ciel-fonce));
  font-size:1.35rem;font-weight:700;color:#fff;letter-spacing:.02em;
  border:2px solid rgba(54,169,225,.3);
}
.carte-membre h3{font-size:1rem;font-weight:600;margin-bottom:4px}
.carte-membre .role{font-size:.78rem;color:var(--ciel);font-weight:500;margin-bottom:12px}
.carte-membre p{font-size:.81rem;color:var(--brume);font-weight:300}
.bloc-legal-infos{
  margin-top:26px;padding:26px;border-radius:var(--rayon);
  background:rgba(41,35,92,.16);border:1px solid var(--ligne-2);
}
.bloc-legal-infos dl{display:grid;grid-template-columns:auto 1fr;gap:9px 22px;font-size:.83rem}
.bloc-legal-infos dt{color:var(--brume);font-weight:400}
.bloc-legal-infos dd{color:var(--ecume);font-weight:500}
@media(max-width:560px){.bloc-legal-infos dl{grid-template-columns:1fr;gap:2px}
.bloc-legal-infos dd{margin-bottom:10px}}

/* ---------- 18. Page contact ---------- */
.grille-contact{display:grid;grid-template-columns:1fr 1.15fr;gap:44px;align-items:start}
@media(max-width:900px){.grille-contact{grid-template-columns:1fr}}
.canaux{display:grid;gap:14px}
.canal{
  display:flex;gap:17px;align-items:center;
  padding:21px 22px;border-radius:var(--rayon);
  background:var(--surface);border:1px solid var(--ligne-2);
  transition:border-color var(--transition),transform var(--transition);
}
.canal:hover{border-color:var(--ligne);transform:translateX(5px)}
.canal-icone{
  width:46px;height:46px;border-radius:12px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:rgba(54,169,225,.11);color:var(--ciel);
}
.canal-icone.wa{background:rgba(37,211,102,.12);color:var(--vert-wa)}
.canal-icone svg{width:21px;height:21px}
.canal h3{font-size:.92rem;font-weight:600}
.canal p{font-size:.8rem;color:var(--brume);font-weight:300}
.canal .valeur{font-size:.85rem;color:var(--ciel);font-weight:500}
.formulaire{
  padding:34px;border-radius:var(--rayon);
  background:linear-gradient(160deg,var(--surface-2),var(--surface));
  border:1px solid var(--ligne-2);
}
.formulaire h2{font-size:1.25rem;font-weight:700;margin-bottom:6px;letter-spacing:-.01em}
.formulaire > p{font-size:.85rem;color:var(--brume);font-weight:300;margin-bottom:26px}
.champ{margin-bottom:18px}
.champ-2col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:560px){.champ-2col{grid-template-columns:1fr}}
.champ label{
  display:block;font-size:.74rem;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--brume);
  margin-bottom:8px;
}
.champ input,.champ select,.champ textarea{
  width:100%;padding:13px 16px;border-radius:11px;
  background:rgba(13,11,30,.55);border:1px solid var(--ligne-2);
  color:var(--ecume);font-family:'Poppins',sans-serif;font-size:.88rem;
  transition:border-color var(--transition),box-shadow var(--transition);
  outline:none;appearance:none;
}
.champ textarea{resize:vertical;min-height:130px}
.champ input:focus,.champ select:focus,.champ textarea:focus{
  border-color:var(--ciel);box-shadow:0 0 0 3px rgba(54,169,225,.14);
}
.champ select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239895c2' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;
  padding-right:44px;
}
.champ select option{background:var(--nuit-2);color:var(--ecume)}
.hp{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}
.msg-form{
  display:none;padding:14px 18px;border-radius:11px;margin-bottom:20px;
  font-size:.85rem;font-weight:500;
}
.msg-form.ok{display:block;background:rgba(46,204,135,.1);border:1px solid rgba(46,204,135,.32);color:#2ecc87}
.msg-form.erreur{display:block;background:rgba(224,82,82,.1);border:1px solid rgba(224,82,82,.32);color:#e05252}

/* ---------- 19. Pages légales ---------- */
.legal-corps{max-width:800px}
.legal-corps h2{
  font-size:1.18rem;font-weight:700;letter-spacing:-.01em;
  margin:38px 0 12px;color:var(--ecume);
}
.legal-corps h2:first-child{margin-top:0}
.legal-corps p,.legal-corps li{
  font-size:.89rem;color:var(--brume);font-weight:300;margin-bottom:12px;
}
.legal-corps ul{padding-left:20px;list-style:disc}
.legal-corps strong{color:var(--ecume);font-weight:500}
.legal-corps a{color:var(--ciel)}

/* ---------- 20. Animations d'apparition ---------- */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s ease,transform .7s cubic-bezier(.3,.8,.4,1)}
.reveal.visible{opacity:1;transform:none}
.reveal-delai-1{transition-delay:.08s}
.reveal-delai-2{transition-delay:.16s}
.reveal-delai-3{transition-delay:.24s}
.reveal-delai-4{transition-delay:.32s}

/* ---------- 21. Divers ---------- */
.centre-actions{display:flex;justify-content:center;margin-top:44px}
.texte-note{font-size:.76rem;color:var(--brume-2);font-weight:300;margin-top:18px;text-align:center}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none}
}

/* ---------- 22. Réalisations : carte client livré + grille 2 colonnes ---------- */
.projet-visuel.v4{background:linear-gradient(135deg,#123a2b 0%,#2E8BF8 160%)}

.projet-lien{
  display:inline-flex;align-items:center;gap:7px;margin-top:16px;
  font-size:.82rem;font-weight:600;color:var(--ciel);
  transition:gap var(--transition),color var(--transition);
}
.projet-lien svg{width:14px;height:14px;flex-shrink:0}
.projet-lien:hover{gap:11px;color:var(--ciel-fonce)}

@media(min-width:981px){
  .grille-realisations.duo{grid-template-columns:repeat(2,1fr)}
  .grille-realisations.duo .projet-visuel{height:260px}
}
