/* D860 CONTRAST FINAL v3 — Production CSS War Resolution */

/* P1: <a> with inline background — white text */
html body a[style*="background"]{color:#fff!important}

/* P2: .b.bp CTA buttons */
html body a.b.bp{color:#fff!important}
html body button.bp{color:#fff!important}
html body .btn-primary{color:#fff!important}

/* P3: .active tabs — 5 pseudo-classes to beat d812's 4 :not() chain */
html body .sg a.active:not(.x):not(.y){color:#fff!important}

/* P4: .navigation-text — match weval-contrast-system #root section specificity */
html body #root section .service-detail-text p.navigation-text{color:#1a1f3a!important}
html body #root p.navigation-text{color:#1a1f3a!important}
html body p.navigation-text{color:#1a1f3a!important}

/* P5: WTP v64-bp */
html body .v64-bp{display:block!important;min-width:160px!important}
html body .v64-bp-head{display:flex!important;flex-direction:row!important}
html body .v64-bp-principles{display:flex!important;flex-direction:column!important}/* D860-CAROUSEL-NEUTRALIZED (laisse le moteur 3D wevia gerer): 

/* P6: Carousel 3D * /
html body .carousel-3d-card{min-width:220px!important;width:220px!important;overflow:hidden!important} *//* D860-CAROUSEL-NEUTRALIZED (laisse le moteur 3D wevia gerer): 
html body .carousel-3d{overflow-x:auto!important} */

/* P7: Logout white-on-white */
html body a[href*="logout"],html body .logout-btn{color:#1a1f3a!important}

/* P8: Services grid */
@media(max-width:1200px){html body .wv-links{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))!important}}

/* P9: Ops-center sidebar */
html body .ops-sidebar *,html body .sidebar-nav *{min-width:0!important;overflow:hidden!important;word-break:break-word!important}
/* P10: Services footer grid */
@media(max-width:1400px){html body .footer-grid,html body .wv-links{grid-template-columns:repeat(auto-fill,minmax(180px,1fr))!important}}/* D860-CAROUSEL-NEUTRALIZED (laisse le moteur 3D wevia gerer): 

/* P11: carousel 3D perspective fix * /
html body .carousel-3d{perspective:none!important;display:flex!important;gap:16px!important;overflow-x:auto!important;flex-wrap:nowrap!important} *//* D860-CAROUSEL-NEUTRALIZED (laisse le moteur 3D wevia gerer): 
/* D860-CAROUSEL-OFF: html body .carousel-3d-card{position:relative!important;min-width:250px!important;width:250px!important;flex-shrink:0!important} * / */
/* P12: ops sidebar min-width */
html body .ops-center .sidebar,html body .ops-sidebar{min-width:80px!important}/* D860-CAROUSEL-NEUTRALIZED (laisse le moteur 3D wevia gerer): 

/* D860-CAROUSEL-RESTORE: annule le transform:none qui figeait le carrousel 3D accueil * /
html body .carousel-3d-card{transform:revert!important} *//* D860-CAROUSEL-NEUTRALIZED (laisse le moteur 3D wevia gerer): 
.carousel-3d-container{transform-style:preserve-3d!important} */


/* D905: .wr-service-link — solution robuste tous navigateurs.
   Fond violet SOLIDE (pas gradient), texte blanc SIMPLE,
   reset background-clip/text-fill qui pouvaient rendre le texte transparent. */
html body a.wr-service-link,
html body .wr-service-link,
html body a.wr-service-link:link,
html body a.wr-service-link:visited,
html body a.wr-service-link:hover,
html body a.wr-service-link:focus{
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  background-image:none!important;
  background:#6d28d9!important;
  background-color:#6d28d9!important;
  -webkit-background-clip:border-box!important;
  background-clip:border-box!important;
  text-shadow:0 1px 2px rgba(0,0,0,.3)!important;
  font-weight:700!important;
  border:1px solid #5b21b6!important;
  border-radius:8px!important;
  opacity:1!important;
  filter:none!important;
}
html body .wr-service-link *,
html body .wr-service-link span,
html body .wr-service-link svg,
html body .wr-service-link path{
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  fill:#ffffff!important;
  background:none!important;
  -webkit-background-clip:border-box!important;
  background-clip:border-box!important;
}
html body a.wr-service-link:hover{ background:#7c3aed!important; background-color:#7c3aed!important; }


/* D906: corrections contraste finales (test video Playwright).
   .hero-subtitle = texte blanc sur fond blanc = INVISIBLE (vrai bug).
   Les boutons .contact-button/.services-button/.service-button ont un
   gradient indigo (texte blanc OK) mais on securise au cas ou. */
html body .hero-subtitle,
html body p.hero-subtitle{
  color:#1a1f3a!important;
  -webkit-text-fill-color:#1a1f3a!important;
  background:none!important;
  text-shadow:none!important;
  opacity:1!important;
}
/* boutons a gradient indigo: garantir texte blanc lisible */
html body .contact-button,
html body .services-button,
html body .service-button,
html body button.contact-button,
html body button.services-button,
html body button.service-button{
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
  background:linear-gradient(135deg,#373063 0%,#4f46a3 100%)!important;
  background-color:#3730a3!important;
  text-shadow:0 1px 2px rgba(0,0,0,.3)!important;
  font-weight:600!important;
  opacity:1!important;
}
html body .contact-button *,
html body .services-button *,
html body .service-button *{
  color:#ffffff!important;
  -webkit-text-fill-color:#ffffff!important;
}
/* skip-link a11y: lisible quand focus */
html body .skip-link-d606{ color:#ffffff!important; background:#1e293b!important; }


/* D908: cartes services sur fond BLANC (verifie test video: bg rgb(255,255,255)).
   D907 avait mis le texte PALE -> illisible sur blanc. Correction:
   TOUT le texte des cartes en FONCE lisible sur blanc. */
html body .service-card,
html body [class*="service-card"],
html body .wr-service-card{
  background:#ffffff!important;
  background-color:#ffffff!important;
}
html body .service-title,
html body h4.service-title,
html body .service-card .service-title{
  color:#1a1f3a!important;
  -webkit-text-fill-color:#1a1f3a!important;
  opacity:1!important;
}
html body .service-details,
html body .service-card .service-details,
html body p.service-details{
  color:#374151!important;
  -webkit-text-fill-color:#374151!important;
  opacity:1!important;
}
html body .service-source,
html body .service-card .service-source,
html body span.service-source{
  color:#5a6480!important;
  -webkit-text-fill-color:#5a6480!important;
  opacity:1!important;
}
html body a.skip-link-d606:focus{ color:#fff!important; background:#1e293b!important; }



/* D860: restore stat-num gradient text (killed by contrast guard bg:white) */
#d468-trust-signals .stat-num{background:linear-gradient(135deg,#6366f1,#8b5cf6)!important;-webkit-background-clip:text!important;background-clip:text!important;-webkit-text-fill-color:transparent!important;color:transparent!important}

/* D860: Academy e-learning dark cards — white text */
.fc,.fc-title,.fc-meta,.fc-desc,.fc-bottom,.fc-info,.fc-top,.fc-start,.fc span,.fc p,.fc div,.fc a{color:#e8e6f0!important}
.fc .fc-title{color:#fff!important;font-weight:600!important}
.fc .fc-meta span{color:#a5b4fc!important}
.fc .fc-desc{color:#c7d2fe!important}
.fc .fc-start{color:#a78bfa!important}
.fc .fc-level,.fc .badge{color:#fff!important}
.btn-p{color:#fff!important}
/* D860: Academy higher specificity override */
html body .fc,html body .fc div,html body .fc span,html body .fc p,html body .fc a{color:#e8e6f0!important}
html body .fc .fc-title,html body .fc h3,html body .fc h4{color:#fff!important;font-weight:600!important}
html body .fc .fc-meta span{color:#a5b4fc!important}
html body .fc .fc-desc{color:#c7d2fe!important}
html body .fc .fc-start{color:#a78bfa!important}
html body .btn-p{color:#fff!important}
/* D860: Academy ID-level specificity to beat d807 :not(#_d837_) */
html body .fc:not(#_d860_),html body .fc:not(#_d860_) div,html body .fc:not(#_d860_) span,html body .fc:not(#_d860_) p,html body .fc:not(#_d860_) a{color:#e8e6f0!important}
html body .fc:not(#_d860_) .fc-title{color:#fff!important;font-weight:600!important}
html body .fc:not(#_d860_) .fc-meta span{color:#a5b4fc!important}
html body .fc:not(#_d860_) .fc-desc{color:#c7d2fe!important}
html body .fc:not(#_d860_) .fc-start{color:#a78bfa!important}
/* D860: Academy badges + opacity fix */
html body .fc:not(#_d860_) .fc-badge{background:rgba(124,58,237,.2)!important;color:#fff!important;border-color:rgba(124,58,237,.4)!important;font-weight:600!important}
html body .fc:not(#_d860_) .fc-start{opacity:1!important;color:#a78bfa!important;font-weight:600!important}
html body .fc:not(#_d860_) .fc-title{color:#fff!important;font-weight:700!important;font-size:1.1em!important}
/* D860: demo-agents white-on-white trust bar + stats */
html body .p34-hero-trust-item:not(#_d860_),html body .p34-hero-trust-bar:not(#_d860_) div{color:#1a1f3a!important}
html body .d490-stats-grid:not(#_d860_),html body .d490-stats-grid:not(#_d860_) div{color:#1a1f3a!important}
html body .d490-stats-grid:not(#_d860_) strong{color:#4338ca!important;font-size:2rem!important}
/* D860: diagnostic-tool hero text on light bg */
html body .hero-brand:not(#_d860_){color:#1a1f3a!important}
html body .hero-brand:not(#_d860_)+p,html body .hero-brand:not(#_d860_)~p{color:#475569!important}
/* D860: NUCLEAR — bg:transparent + textFillColor for ALL fc children */
html body .fc:not(#_d860_) .fc-title{background:transparent!important;-webkit-text-fill-color:#fff!important;color:#fff!important}
html body .fc:not(#_d860_) .fc-desc{background:transparent!important;-webkit-text-fill-color:#c7d2fe!important}
html body .fc:not(#_d860_) .fc-meta span{background:transparent!important;-webkit-text-fill-color:#a5b4fc!important}
html body .fc:not(#_d860_) .fc-start{background:transparent!important;-webkit-text-fill-color:#c4b5fd!important}
html body .fc:not(#_d860_) div,html body .fc:not(#_d860_) span,html body .fc:not(#_d860_) p{background:transparent!important}
/* D860: academy.html .cd dark cards — white text (keep card bg) */
html body .cd:not(#_d860_) h3{-webkit-text-fill-color:#fff!important;color:#fff!important;background:transparent!important;font-weight:700!important}
html body .cd:not(#_d860_) p{-webkit-text-fill-color:#c7d2fe!important;color:#c7d2fe!important;background:transparent!important}
html body .cd:not(#_d860_) .cd-i{background:transparent!important}
/* D860: HIDE pricing section on academy.html */
#pricing{display:none!important}
/* D860: academy .cd remaining fixes — all inner divs transparent bg */
html body .cd:not(#_d860_) div{background:transparent!important;-webkit-text-fill-color:#c7d2fe!important;color:#c7d2fe!important}
html body .cd:not(#_d860_) li{-webkit-text-fill-color:#c7d2fe!important;color:#c7d2fe!important;background:transparent!important}
/* D860: /products/ page white-on-white fix */
html body .sub:not(#_d860_){color:#475569!important;-webkit-text-fill-color:#475569!important}
html body .kpi:not(#_d860_){color:#1a1f3a!important;-webkit-text-fill-color:#1a1f3a!important;background:transparent!important}
html body .kpi-l:not(#_d860_){color:#6b7280!important;-webkit-text-fill-color:#6b7280!important;background:transparent!important}
html body .kpi:not(#_d860_) strong,html body .kpi:not(#_d860_) b,html body .kpi:not(#_d860_) span{color:#4338ca!important;-webkit-text-fill-color:#4338ca!important}
/* D860: dark-bg buttons get white text (scoped) */
html body button[style*="background"]:not(#_d860_),
html body .btn-primary:not(#_d860_),
html body button.active:not(#_d860_){color:#fff!important;-webkit-text-fill-color:#fff!important}


/* D922: diagnostic-tool.html — H1 "Universal gap analysis diagnostic"
   blanc sur fond creme = invisible (contraste 7). Force fonce lisible.
   Cible large: tout H1 blanc sur fond clair (filigrane/watermark inclus). */
html body h1{
  color:#1a1f3a !important;
  -webkit-text-fill-color:#1a1f3a !important;
}
/* si c'est un watermark voulu en filigrane, garder discret mais VISIBLE */
html body h1[class*="watermark"], html body h1[class*="bg-text"],
html body [class*="hero-watermark"]{
  color:#c7cbd6 !important;
  -webkit-text-fill-color:#c7cbd6 !important;
  opacity:1 !important;
}


/* D923: bouton #lang-toggle contient "drapeau-emoji FR". Sur Windows
   l'emoji drapeau se degrade en lettres pays -> rendu "FR FR" double.
   Fix: masquer le glyphe emoji, n'afficher QUE le code langue propre,
   via remplacement du contenu visible. ZERO modif du .js (sacre). */
#lang-toggle{
  font-size:0 !important;            /* cache le texte brut (emoji+code) */
  min-width:48px; text-align:center;
}
#lang-toggle::after{
  content:attr(data-lang-code);      /* affiche un code propre si dispo */
  font-size:12px !important;
  font-weight:700;
  color:#475569;
}
/* fallback si pas de data-lang-code: afficher "FR"/"EN" lisible
   en neutralisant l'emoji par une police sans glyphe drapeau */
#lang-toggle:not([data-lang-code])::after{
  content:"Langue";
  font-size:12px !important;
}


/* D926: bouton "Simuler vos gains" via classe dediee .wv-simuler-cta
   (le style inline matchait une regle anti-gradient -> bouton vide).
   Style propre ici, haute specificite, immunise. */
html body a.wv-simuler-cta,
html body a.wv-simuler-cta.btn,
html body a.wv-simuler-cta:link,
html body a.wv-simuler-cta:visited,
html body a[class*="wv-simuler"]{
  display:inline-block !important;
  padding:14px 32px !important;
  background:#3730a3 !important;
  background-color:#3730a3 !important;
  background-image:none !important;
  color:#ffffff !important;
  -webkit-text-fill-color:#ffffff !important;
  border-radius:60px !important;
  font-weight:600 !important;
  text-decoration:none !important;
  font-size:15px !important;
  box-shadow:0 4px 16px rgba(55,48,163,.25) !important;
}
html body a.wv-simuler-cta:hover{ background:#312e81 !important; }




