/* == WEVAL-AUDIT-RECO v3 -- Clean rebuild == */ /* == GLOBAL CTA FUNCTIONS == */ window.__wrOpenCalendly = function() { window.open("/booking.html", "_blank"); }; window.__wrOpenContactModal = function() { window.location.href = "/contact-us"; }; (function(){ 'use strict'; if(window.__wevalAuditV3) return; window.__wevalAuditV3 = true; /* == AUTH INTERCEPTOR -- kill popups, enforce real auth == */ (function(){ try { localStorage.removeItem('isAdmin'); } catch(e){} var adminRoutes = ['/moulChi','/admin-talent-form','/admin-mission-form','/admin-messages','/admin-dashboard','/analytics']; var path = window.location.pathname; var hasToken = !!localStorage.getItem('adminToken'); if(!hasToken && adminRoutes.indexOf(path) >= 0) { window.location.replace('/auth'); return; } var origPrompt = window.prompt; window.prompt = function(msg) { if(msg && (msg.toLowerCase().indexOf('password') >= 0 || msg.toLowerCase().indexOf('admin') >= 0)) { window.location.replace('/auth'); return null; } return origPrompt ? origPrompt.apply(window, arguments) : null; }; })(); // ============================================================ // 1. CSS -- Single injection, no nav override // ============================================================ var css = document.createElement('style'); css.id = 'wr-v3-css'; css.textContent = [ /* Floating CTA bar */ '.wr-floating-cta{position:fixed;bottom:-80px;left:0;right:0;z-index:9000;background:rgba(5,8,15,0.95);backdrop-filter:blur(10px);border-top:1px solid rgba(99,102,241,0.15);padding:0.6rem 4%;display:flex;justify-content:center;align-items:center;gap:12px;transition:bottom 0.4s ease}', '.wr-floating-cta.visible{bottom:0}', '.wr-floating-cta-text{font-size:0.82rem;color:#94a3b8}', '.wr-floating-cta-text strong{color:#f1f5f9}', '.wr-cta-btn{border:none;border-radius:8px;padding:8px 16px;font-size:0.82rem;font-weight:600;cursor:pointer;transition:all 0.2s}', '.wr-cta-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff}', '.wr-cta-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(99,102,241,0.4)}', '.wr-cta-secondary{background:rgba(99,102,241,0.1);color:#a5b4fc;border:1px solid rgba(99,102,241,0.2)}', '.wr-cta-close{background:none;border:none;color:#64748b;font-size:1.2rem;cursor:pointer;padding:4px 8px}', /* Contact modal */ '.wr-modal-overlay{display:none;position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,0.7);backdrop-filter:blur(4px);justify-content:center;align-items:center}', '.wr-modal-overlay.open{display:flex}', '.wr-modal{background:#0f172a;border:1px solid #1e293b;border-radius:16px;padding:32px;max-width:560px;width:90%;max-height:85vh;overflow-y:auto;position:relative}', '.wr-modal h2{font-family:Sora,sans-serif;font-size:1.4rem;color:#f1f5f9;margin-bottom:8px}', '.wr-modal p{color:#94a3b8;font-size:0.9rem;margin-bottom:20px}', '.wr-modal-close{position:absolute;top:12px;right:16px;background:none;border:none;color:#64748b;font-size:1.5rem;cursor:pointer}', '.wr-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}', '.wr-form-group{margin-bottom:12px}', '.wr-form-group label{display:block;color:#94a3b8;font-size:0.8rem;margin-bottom:4px}', '.wr-form-group input,.wr-form-group select,.wr-form-group textarea{width:100%;padding:10px 12px;background:#1e293b;border:1px solid #334155;border-radius:8px;color:#f1f5f9;font-size:0.9rem}', '.wr-form-group textarea{min-height:80px;resize:vertical}', '.wr-form-submit{width:100%;padding:12px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border:none;border-radius:10px;font-weight:700;font-size:1rem;cursor:pointer;margin-top:8px}', /* FAQ */ '.wr-faq-section{padding:60px 20px;background:#0a0e1a;border-top:1px solid rgba(99,102,241,.05)}', '.wr-faq-inner{max-width:740px;margin:0 auto;text-align:center}', '.wr-faq-title{font-family:Sora,sans-serif;font-size:1.6rem;font-weight:800;color:#f1f5f9;margin:16px 0 32px}', '.wr-faq-list{text-align:left}', '.wr-faq-item{border:1px solid #1e293b;border-radius:12px;margin-bottom:10px;overflow:hidden;transition:border-color .3s}', '.wr-faq-item:hover{border-color:#334155}', '.wr-faq-item.open{border-color:#6366f1}', '.wr-faq-q{width:100%;padding:18px 20px;background:#0f172a;border:none;color:#f1f5f9;font-size:.95rem;font-weight:600;cursor:pointer;display:flex;justify-content:space-between;align-items:center;text-align:left;font-family:Outfit,Sora,sans-serif}', '.wr-faq-arrow{color:#6366f1;transition:transform .3s;font-size:1.2rem}', '.wr-faq-item.open .wr-faq-arrow{transform:rotate(90deg)}', '.wr-faq-a{max-height:0;overflow:hidden;transition:max-height .4s ease,padding .3s}', '.wr-faq-item.open .wr-faq-a{max-height:300px;padding:0 20px 18px}', '.wr-faq-a p{color:#94a3b8;font-size:.9rem;line-height:1.6;margin:0}', /* Case Studies */ '.wr-cases-section{padding:60px 20px;background:#050816;border-top:1px solid rgba(99,102,241,.05)}', '.wr-cases-inner{max-width:900px;margin:0 auto;text-align:center}', '.wr-cases-title{font-family:Sora,sans-serif;font-size:1.6rem;font-weight:800;color:#f1f5f9;margin:16px 0 32px}', '.wr-cases-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}', '.wr-case-card{background:#0f172a;border:1px solid #1e293b;border-radius:14px;padding:24px;text-align:left;transition:border-color .3s}', '.wr-case-card:hover{border-color:#6366f1}', '.wr-case-card h3{font-size:1rem;font-weight:700;color:#f1f5f9;margin-bottom:8px}', '.wr-case-card p{color:#94a3b8;font-size:.85rem;line-height:1.5}', '.wr-case-badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.72rem;font-weight:600;margin-bottom:10px}', /* Newsletter */ '.wr-newsletter-badge{display:inline-block;padding:4px 14px;border-radius:20px;font-size:.75rem;font-weight:600;background:rgba(99,102,241,.1);color:#a5b4fc;margin-bottom:12px}', /* Responsive */ '@media(max-width:768px){.wr-floating-cta{flex-wrap:wrap;gap:6px;padding:8px}.wr-floating-cta-text{display:none}.wr-form-row{grid-template-columns:1fr}.wr-cases-grid{grid-template-columns:1fr}.wr-faq-q{font-size:.85rem;padding:14px 16px}.wr-faq-a p{font-size:.82rem}.wr-cases-section{padding:40px 16px}.wr-faq-section{padding:40px 16px}.wr-cases-title,.wr-faq-title{font-size:1.3rem}.wr-case-card{padding:18px}.wr-case-card h3{font-size:.95rem}.wr-case-card p{font-size:.8rem}.wr-modal{padding:20px;width:95%}.wr-newsletter-badge{font-size:.7rem}}', /* Logo pulse */ '@keyframes weval-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.85}}.weval-logo{animation:weval-pulse 3s ease-in-out infinite!important}' ].join(''); document.head.appendChild(css); // ============================================================ // 2. FLOATING CTA BAR // ============================================================ var ctaBar = document.createElement('div'); ctaBar.className = 'wr-floating-cta'; ctaBar.innerHTML = 'Projet de transformation digitale ? Nos experts vous accompagnent'; document.body.appendChild(ctaBar); var ctaShown = false; function showCTA(){ if(!ctaShown && window.scrollY > 200){ ctaShown = true; ctaBar.classList.add('visible'); } } setTimeout(function(){ window.addEventListener('scroll', showCTA); showCTA(); }, 3000); // ============================================================ // 3. HELPER -- Find footer in SPA or static pages // ============================================================ function findFooter(cb) { var tries = 0; var t = setInterval(function(){ tries++; if(tries > 50) { clearInterval(t); return; } var ft = document.querySelector('footer.footer') || document.querySelector('.footer-container') || document.querySelector('footer'); if(ft) { clearInterval(t); cb(ft); } }, 300); } // ============================================================ // 4. FAQ SECTION (homepage only) // ============================================================ function injectFAQ() { var p = window.location.pathname; if(p !== '/' && p !== '' && p !== '/index.html' && p !== '/index-test-v3.html') return; if(document.querySelector('.wr-faq-section')) return; findFooter(function(ft) { var faq = document.createElement('div'); faq.className = 'wr-faq-section'; faq.innerHTML = '
FAQ

Questions fréquentes

' + '

WEVAL Consulting structure son offre autour de 6 p\u00f4les d\'excellence : Conseil Strat\u00e9gique & IA, Solutions ERP & Cloud (SAP, Huawei, Vistex), Marketing Digital & CRM, Cybers\u00e9curit\u00e9 IA, Talent as a Service, et Formations Certifiantes. Nous intervenons dans 8 pays sur 3 continents.

' + '

Oui. Bas\u00e9 \u00e0 Casablanca avec des bureaux \u00e0 Paris et aux USA, WEVAL intervient dans 8 pays dont le Maroc, la France et plusieurs pays africains. Plus de 200 projets livr\u00e9s avec un taux de satisfaction de 97%.

' + '

WEVIA est notre assistant IA propriétaire. Il génère des analyses, diagrammes, images et documents PDF couvrant plus de 50 domaines d\'expertise, en mode 100% souverain sur GPU dédié.

' + '

Notre framework 4D suit 4 phases : Diagnostic (audit 360\u00b0), Design (roadmap sur-mesure), Delivery (sprints agiles), Durabilit\u00e9 (formation + support). Chaque phase est acc\u00e9l\u00e9r\u00e9e par notre IA WEVIA.

' + '

Oui. WEVAL est conforme RGPD et Loi marocaine 09-08, partenaire certifi\u00e9 Huawei Cloud, SAP, Vistex et IQVIA. Nos solutions respectent les normes de s\u00e9curit\u00e9 les plus strictes.

' + '
'; ft.parentNode.insertBefore(faq, ft); }); } // ============================================================ // 5. CASE STUDIES SECTION (homepage only) // ============================================================ function injectCaseStudies() { var p = window.location.pathname; if(p !== '/' && p !== '' && p !== '/index.html' && p !== '/index-test-v3.html') return; if(document.querySelector('.wr-cases-section')) return; findFooter(function(ft) { var cases = document.createElement('div'); cases.className = 'wr-cases-section'; cases.innerHTML = '
Case Studies

Nos dernières réalisations

' + '
Pharma

Plateforme HCP Multi-Pays

141,000+ professionnels de santé vérifiés dans 3 pays (Maroc, Tunisie, Algérie). Collecte multi-sources, consentement RGPD automatisé, enrichissement Google-verified.

' + '
ERP

Integration ERP Multi-Vendor

Migration ERP complete : SAP S/4HANA, Oracle, Odoo, Sage. Modules Vistex, conduite du changement, formation des équipes et support post-go-live.

' + '
IA

IA Souveraine sur GPU dédié

Déploiement d\'une infrastructure IA souveraine avec inférence locale. Zéro dépendance cloud, latence inférieure à 300ms, plus de 50 modèles disponibles.

' + '
'; // Insert BEFORE FAQ if exists, otherwise before footer var faqEl = document.querySelector('.wr-faq-section'); if(faqEl) { faqEl.parentNode.insertBefore(cases, faqEl); } else { ft.parentNode.insertBefore(cases, ft); } }); } // ============================================================ // 6. SERVICE LINKS (homepage only -- adds links to service sections) // ============================================================ function injectServiceLinks() { if(window.location.pathname !== '/' && window.location.pathname !== '') return; var mapping = [ {id:'conseil-detail', href:'/service/conseil', label:'Conseil Strategique'}, {id:'solutions-detail', href:'/service/solutions', label:'Nos Solutions SaaS'}, {id:'recrutement-detail', href:'/service/recrutement', label:'Talent as a Service'}, {id:'formation-detail', href:'/service/formation', label:'Training Platform'}, {id:'marketing-detail', href:'/service/marketing', label:'Marketing Digital'}, {id:'cyber-detail', href:'/service/cyber', label:'Cybers\u00e9curit\u00e9 IA'} ]; mapping.forEach(function(m) { var section = document.getElementById(m.id); if(!section || section.querySelector('.wr-service-link')) return; var a = document.createElement('a'); a.className = 'wr-service-link'; a.href = m.href; a.textContent = 'Decouvrir ' + m.label + ' \u2192'; a.style.cssText = 'display:inline-block;margin-top:20px;padding:12px 28px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border-radius:10px;text-decoration:none;font-weight:600;font-size:0.88rem;transition:all 0.3s;box-shadow:0 4px 15px rgba(99,102,241,0.3)'; var content = section.querySelector('.service-detail-content'); try { if(content) content.appendChild(a); else if(section) section.appendChild(a); } catch(e){} }); } // ============================================================ // 7. FIX ALL NAV BUTTONS -- Direct click handlers bypass React // ============================================================ function fixNavButtons() { var routes = { 'Accueil': function(){ window.scrollTo({top:0,behavior:'smooth'}); }, 'Services': function(){ var el=document.getElementById('our-services'); if(el) el.scrollIntoView({behavior:'smooth'}); }, 'Solutions': function(){ window.location.href='/solutions'; }, 'Marketplace': function(){ window.location.href='/marketplace'; }, 'Actualites': function(){ window.location.href='/actualites'; }, 'Actualites': function(){ window.location.href='/actualites'; }, 'Blog': function(){ window.location.href='/blog'; }, 'Products': function(){ window.location.href='/products/index.html'; }, 'WEVIA': function(){ window.location.href='/wevia.html'; }, 'IA Academy': function(){ window.location.href='/products/academy.html'; }, 'Tech Radar': function(){ window.location.href='/products/technology-radar.html'; }, 'Trouver ma solution': function(){ window.location.href='/solution-finder.html'; }, 'Contact': function(){ window.location.href='/contact-us'; } }; var navs = document.querySelectorAll('nav, .main-navigation, .header-wrapper'); navs.forEach(function(nav) { var btns = nav.querySelectorAll('button, a'); btns.forEach(function(btn) { var text = (btn.textContent || '').trim(); // Also handle Products link href var href = btn.getAttribute('href') || ''; if(href === '/products' || href === '/products/' || href === '/products/index.html') { text = 'Products'; } // Fuzzy match for nav items with emojis/icons if(!routes[text]) { Object.keys(routes).forEach(function(k) { if(text.indexOf(k) !== -1) text = k; }); } if(routes[text] && !btn.dataset.wrFixed) { btn.dataset.wrFixed = '1'; btn.addEventListener('click', function(e) { e.preventDefault(); e.stopPropagation(); routes[text](); }, true); // capture phase = fires BEFORE React } }); }); } // ============================================================ // 8. INIT -- Delayed to let React SPA render first // ============================================================ function initAll() { try { injectFAQ(); } catch(e) { console.warn('[WR] FAQ:', e.message); } try { injectCaseStudies(); } catch(e) { console.warn('[WR] Cases:', e.message); } try { injectServiceLinks(); } catch(e) { console.warn('[WR] Links:', e.message); } try { fixNavButtons(); } catch(e) { console.warn('[WR] Nav:', e.message); } } // Wait for SPA to render, then inject if(document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function(){ setTimeout(initAll, 2000); }); } else { setTimeout(initAll, 2000); } // Re-run on SPA navigation var _lastPath = location.pathname; setInterval(function(){ if(location.pathname !== _lastPath) { _lastPath = location.pathname; // Cleanup when leaving homepage if(_lastPath !== '/' && _lastPath !== '') { document.querySelectorAll('.wr-faq-section,.wr-cases-section').forEach(function(el){ el.remove(); }); } setTimeout(initAll, 1500); } }, 300); })(); // LocalBusiness Schema Markup (SEO) if(!document.querySelector('script[type="application/ld+json"]')){ var s=document.createElement('script');s.type='application/ld+json'; s.textContent=JSON.stringify({ "@context":"https://schema.org", "@type":"ProfessionalService", "name":"WEVAL Consulting", "description":"Cabinet de conseil en transformation digitale, IA souveraine, SAP, Cloud et Cybers\u00e9curit\u00e9", "url":"https://weval-consulting.com", "logo":"https://weval-consulting.com/assets/logo-weval-png-DChrMGao.png", "image":"https://weval-consulting.com/assets/logo-weval-png-DChrMGao.png", "telephone":"+33647087627", "email":"contact@weval-consulting.com", "address":{"@type":"PostalAddress","streetAddress":"Casablanca","addressLocality":"Casablanca","addressCountry":"MA"}, "geo":{"@type":"GeoCoordinates","latitude":33.5731,"longitude":-7.5898}, "areaServed":[{"@type":"Country","name":"Morocco"},{"@type":"Country","name":"France"},{"@type":"Country","name":"United States"}], "sameAs":["https://www.linkedin.com/company/weval-consulting"], "priceRange":"$$", "openingHoursSpecification":{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"09:00","closes":"18:00"}, "hasOfferCatalog":{"@type":"OfferCatalog","name":"WEVAL SaaS Products","numberOfItems":54}, "knowsAbout":["SAP S/4HANA","Cloud Migration","Artificial Intelligence","Cybersecurity","Digital Transformation","Pharmaceutical IT"] });document.head.appendChild(s);} // FR/EN Language Toggle (function(){ if(window!==window.top)return; var tr={ "Nos Solutions":"Our Solutions","Nos Services":"Our Services","Decouvrir":"Discover", "Methodologie":"Methodology","Blog":"Blog","Actualites":"News", "Contactez-nous":"Contact Us","Contact":"Contact","? propos":"About", "Essayer gratuitement":"Try for free","Commencer":"Get Started", "Fonctionnalites":"Features","Tarifs":"Pricing","Comment ca marche":"How it works", "Tout ce dont vous avez besoin":"Everything you need","Un plan pour chaque besoin":"A plan for every need", "Posez votre question":"Ask your question","Envoyer":"Send", "Creer mon compte gratuit":"Create my free account","Mode Test Gratuit":"Free Test Mode", "Gratuit":"Free","Sur mesure":"Custom","Nous contacter":"Contact us", "Accelerer la transformation digitale":"Accelerate digital transformation", "Solutions IA Souveraines":"Sovereign AI Solutions" }; var isEN=localStorage.getItem("weval_lang")==="en"; function toggleLang(){ isEN=!isEN; localStorage.setItem("weval_lang",isEN?"en":"fr"); applyLang(); } function applyLang(){ var btn=document.getElementById("weval-lang-toggle"); if(btn)btn.textContent=isEN?"FR":"EN"; if(!isEN)return location.reload(); document.querySelectorAll("h1,h2,h3,p,a,button,span,label,div,li,option").forEach(function(el){ if(el.children.length>1)return; var t=el.textContent.trim(); if(tr[t])el.textContent=tr[t]; }); } var nav=document.querySelector("nav .nav-links,nav .btns,header .nav-links"); if(!nav)nav=document.querySelector("nav"); if(nav){ var btn=document.createElement("button"); btn.id="weval-lang-toggle"; btn.textContent=isEN?"FR":"EN"; btn.onclick=toggleLang; btn.style.cssText="background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);color:#fff;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;margin-left:8px;font-family:inherit;"; if(nav) nav.appendChild(btn); } if(isEN)setTimeout(applyLang,500); })(); // Client Logos Bar (SAP Gold Partner, Vistex, IQVIA, Huawei Cloud, Scaleway) (function(){ if(window.location.pathname !== '/' && !window.location.pathname.endsWith('index.html')) return; if(document.getElementById('weval-logos-bar')) return; var hero = document.querySelector('.hero, section:first-of-type, main > div:first-child'); if(!hero) return; var bar = document.createElement('div'); bar.id = 'weval-logos-bar'; bar.style.cssText = 'display:flex;align-items:center;justify-content:center;gap:2.5rem;flex-wrap:wrap;padding:2rem 4%;opacity:.6;filter:grayscale(1);transition:all .3s;margin:1rem auto;max-width:900px;'; bar.onmouseover = function(){this.style.opacity='1';this.style.filter='none';}; bar.onmouseout = function(){this.style.opacity='.6';this.style.filter='grayscale(1)';}; var logos = [ {name:'SAP Gold Partner',svg:'SAPGold Partner'}, {name:'Vistex',svg:'Vistex'}, {name:'IQVIA',svg:'IQVIA'}, {name:'Huawei Cloud',svg:'HUAWEICloud'}, {name:'Scaleway',svg:'Scaleway'}, {name:'Abbott',svg:'Abbott'} ]; logos.forEach(function(l){ var d=document.createElement('div'); d.title=l.name; d.innerHTML=l.svg; d.style.cssText='display:flex;align-items:center;'; bar.appendChild(d); }); var label=document.createElement('div'); label.style.cssText='width:100%;text-align:center;font-size:11px;color:rgba(255,255,255,.3);margin-top:8px;font-weight:500;letter-spacing:1px;text-transform:uppercase;'; label.textContent='Nos partenaires technologiques'; bar.appendChild(label); if(hero && hero.parentNode) hero.parentNode.insertBefore(bar, hero.nextSibling); })(); // WhatsApp Support Widget (function(){ if(window!==window.top)return; if(document.getElementById('weval-whatsapp'))return; var wa=document.createElement('a'); wa.id='weval-whatsapp'; wa.href='https://wa.me/33647087627?text=Bonjour%20WEVAL%2C%20je%20souhaite%20en%20savoir%20plus'; wa.target='_blank'; wa.title='WhatsApp Support'; wa.style.cssText='position:fixed;bottom:150px;right:24px;width:48px;height:48px;background:#25D366;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(37,211,102,.4);z-index:9998;cursor:pointer;transition:transform .2s;'; wa.onmouseover=function(){this.style.transform='scale(1.1)'}; wa.onmouseout=function(){this.style.transform='scale(1)'}; wa.innerHTML=''; document.body.appendChild(wa); })(); // Animated Statistics Counters (function(){ if(document.querySelector('.weval-counter-animated'))return; var observer=new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(!e.isIntersecting)return; var el=e.target; if(el.dataset.counted)return; el.dataset.counted='1'; var target=parseInt(el.textContent.replace(/[^0-9]/g,''))||0; if(target<2)return; var suffix=el.textContent.replace(/[0-9.,\s]/g,''); var prefix=el.textContent.match(/^[^0-9]*/)[0]||''; var duration=1200; var start=0; var step=Math.ceil(target/60); var timer=setInterval(function(){ start+=step; if(start>=target){start=target;clearInterval(timer);} el.textContent=prefix+start.toLocaleString('fr')+suffix; },duration/60); el.classList.add('weval-counter-animated'); }); },{threshold:0.3}); document.querySelectorAll('.stat-v,.stat b,.flagship-stat-v,b').forEach(function(el){ var t=el.textContent.trim(); if(/^[\d.,\s]+[+%]?$/.test(t.replace(/[^\d.,+%\s]/g,''))){ observer.observe(el); } }); })(); // Client Logo Bar (SAP Gold Partner, Vistex, IQVIA, Huawei Cloud, Scaleway) (function(){ if(window!==window.top)return; if(document.getElementById('weval-partners'))return; var hero=document.querySelector(".hero,section:first-of-type,.hero-section"); if(!hero)return; var bar=document.createElement("div"); bar.id="weval-partners"; bar.style.cssText="display:flex;align-items:center;justify-content:center;gap:2.5rem;padding:1.5rem 4%;opacity:.45;flex-wrap:wrap;border-top:1px solid rgba(255,255,255,.06);border-bottom:1px solid rgba(255,255,255,.06);margin:0;"; var logos=["SAP Gold Partner","Vistex","IQVIA","Huawei Cloud","Scaleway"]; bar.innerHTML="Partenaires"+logos.map(function(n){return ""+n+"";}).join(""); hero.parentNode.insertBefore(bar,hero.nextSibling); })(); // WhatsApp Support Widget // Animated Statistics Counters (function(){ if(window!==window.top)return; function animateCount(el,target,suffix){ var start=0,dur=1500,step=Math.ceil(target/60); var timer=setInterval(function(){ start+=step;if(start>=target){start=target;clearInterval(timer);} el.textContent=start.toLocaleString('fr')+(suffix||''); },dur/60); } var observer=new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting&&!e.target.dataset.animated){ e.target.dataset.animated="1"; var t=e.target.textContent.trim(); var num=parseInt(t.replace(/[^\d]/g,'')); var suffix=t.replace(/[\d\s.,]/g,''); if(num>10)animateCount(e.target,num,suffix); } }); },{threshold:0.5}); document.querySelectorAll('.stat-v,.stat b,.flagship-stat-v,.kpi-val,.pr-amt').forEach(function(el){ var num=parseInt(el.textContent.replace(/[^\d]/g,'')); if(num>10){el.textContent='0';observer.observe(el);} }); })(); // AOS-like Scroll Reveal Animations (function(){ if(window!==window.top)return; var style=document.createElement("style"); style.textContent=".wv-reveal{opacity:0;transform:translateY(30px);transition:opacity .6s ease,transform .6s ease}.wv-reveal.visible{opacity:1;transform:translateY(0)}"; document.head.appendChild(style); var obs=new IntersectionObserver(function(entries){ entries.forEach(function(e){if(e.isIntersecting){e.target.classList.add("visible");obs.unobserve(e.target);}}); },{threshold:0.1,rootMargin:"0px 0px -50px 0px"}); document.querySelectorAll(".cd,.pr,.product,.service,.flagship,.card,.step,.feature,.stat-card,.kpi").forEach(function(el,i){ el.classList.add("wv-reveal"); el.style.transitionDelay=(i%6)*0.08+"s"; obs.observe(el); }); })(); // Trust Center link in footer (function(){ if(window!==window.top)return; var footer=document.querySelector('footer'); if(!footer)return; var existing=footer.querySelector('a[href*="trust"]'); if(existing)return; var link=document.createElement('a'); link.href='/products/trust-center.html'; link.textContent='Trust Center'; link.style.cssText='color:var(--a,#10b981);text-decoration:none;font-size:.75rem;margin-left:1rem;'; footer.appendChild(link); })(); // Lightweight AOS scroll animations (function(){ if(window!==window.top)return; var style=document.createElement('style'); style.textContent=` .weval-aos{opacity:0;transform:translateY(30px);transition:opacity .6s ease,transform .6s ease} .weval-aos.visible{opacity:1;transform:translateY(0)} .weval-aos[data-delay="1"]{transition-delay:.1s} .weval-aos[data-delay="2"]{transition-delay:.2s} .weval-aos[data-delay="3"]{transition-delay:.3s} `; document.head.appendChild(style); var targets=document.querySelectorAll('.cd,.pr,.step,.stat,.feat,.card,.certif,.tl-item,section>div>div.g3>div,section>div>div.pg>div'); var idx=0; targets.forEach(function(el){ el.classList.add('weval-aos'); el.setAttribute('data-delay',String((idx%3)+1)); idx++; }); var observer=new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){e.target.classList.add('visible');observer.unobserve(e.target);} }); },{threshold:0.15,rootMargin:'0px 0px -50px 0px'}); document.querySelectorAll('.weval-aos').forEach(function(el){observer.observe(el);}); })(); // Plausible Analytics (RGPD compliant) (function(){if(window!==window.top)return;var s=document.createElement("script");s.defer=true;s.setAttribute("data-domain","weval-consulting.com");s.src="https://analytics.weval-consulting.com/js/script.js";document.head.appendChild(s);})(); // === WEVAL GLOBAL LOGOUT -- discrete button on protected pages === (function(){ var protectedPaths = [ '/products/workspace', '/command-center', '/infra-command', '/tools-hub', '/nonreg', '/master-test', '/mega-command', '/technology-radar', '/ultimate-quality', '/wevia-center', '/wevia-go-live', '/apps', '/ethica-drill', '/ethica-hcp', '/ethica-sms', '/gws-setup', '/weval-master-inventory', '/redirect-admin', '/dl/', '/arsenal-proxy/', '/wevia-ia/', '/office-' ]; var path = window.location.pathname; var isProtected = protectedPaths.some(function(p){ return path.indexOf(p) !== -1; }); var hasCookie = document.cookie.indexOf('PHPSESSID') !== -1; if (!isProtected || !hasCookie) return; // Skip if page already has its own logout if (document.getElementById('weval-logout-btn') || document.getElementById('weval-global-logout')) return; var btn = document.createElement('a'); btn.id = 'weval-global-logout'; btn.href = '/api/weval-auth-session.php?action=logout'; btn.title = 'Deconnexion'; btn.innerHTML = 'Logout'; btn.style.cssText = 'position:fixed;top:10px;right:12px;z-index:99990;padding:5px 10px;background:rgba(30,30,50,0.7);color:rgba(200,210,230,0.8);border:1px solid rgba(100,100,140,0.3);border-radius:6px;font:500 11px system-ui,sans-serif;text-decoration:none;cursor:pointer;backdrop-filter:blur(8px);transition:all .2s;opacity:0.6;display:flex;align-items:center'; btn.onmouseover = function(){ this.style.opacity='1'; this.style.background='rgba(239,68,68,0.9)'; this.style.color='white'; this.style.borderColor='rgb(239,68,68)'; }; btn.onmouseout = function(){ this.style.opacity='0.6'; this.style.background='rgba(30,30,50,0.7)'; this.style.color='rgba(200,210,230,0.8)'; this.style.borderColor='rgba(100,100,140,0.3)'; }; document.body.appendChild(btn); })(); // === PARTNER LOGO SIZE FIX === (function(){ var css = document.createElement('style'); css.id = 'partner-logo-fix'; css.textContent = '.partners-section .partner-logo-container{height:100px!important;min-width:120px!important}.partners-section .partner-logo{height:auto!important;max-height:80px!important;width:auto!important;max-width:180px!important;object-fit:contain!important}.partners-section img[alt*="SAP"]{transform:scale(1.6)!important}.partners-section img[alt*="Huawei"]{transform:scale(1.5)!important}.partners-container{gap:2rem!important;max-width:900px!important}@media(max-width:768px){.partners-container{flex-wrap:wrap!important;gap:1.5rem!important}.partners-section .partner-item{flex:0 0 40%!important}.partners-section .partner-logo{max-height:50px!important;max-width:120px!important}.partners-section img[alt*="SAP"]{transform:scale(1.4)!important}.partners-section img[alt*="Huawei"]{transform:scale(1.3)!important}}'; document.head.appendChild(css); })(); // === LINKEDIN + BLOG TABS on /actualites === (function(){ if(window!==window.top)return; var LI='https://www.linkedin.com/company/69533182'; var WLS='https://www.linkedin.com/company/weval-life-science'; window.posts=[]; window.postsLoaded=false; window.loadLinkedInPosts=function(){ if(window.postsLoaded&&window.posts.length>0){if(typeof window.inject==='function')window.inject();return;} fetch('/api/linkedin-posts.php?action=list') .then(function(r){return r.json()}) .then(function(d){ if(d.posts&&d.posts.length){ window.posts=d.posts.map(function(p){ var dd=p.post_date||''; return{d:dd.substring(8,10)+'/'+dd.substring(5,7)+'/'+dd.substring(0,4),t:p.title||'',x:p.excerpt||'',l:parseInt(p.likes)||0,c:parseInt(p.comments)||0,rp:parseInt(p.reposts)||0,v:parseInt(p.views)||0,i:p.image||'',s:p.source||'W'}; }); window.postsLoaded=true; if(typeof window.inject==='function')window.inject(); } }) .catch(function(e){console.log('Posts fetch error',e)}); } loadLinkedInPosts(); /* Fix accent titles on React pages */ (function(){ function fixAccents(){ document.querySelectorAll('h1,h2,h3,.title').forEach(function(el){ var t=el.textContent; if(t.indexOf('Actualites')!==-1) el.textContent=t.replace('Actualites','Actualités'); if(t.indexOf('Reseaux')!==-1) el.textContent=t.replace('Reseaux','Réseaux'); }); } fixAccents(); new MutationObserver(fixAccents).observe(document.body,{childList:true,subtree:true,characterData:true}); })(); /* Actualites nav: document-level click capture bypasses React */ document.addEventListener('click', function(e) { var el = e.target; while (el && el !== document.body) { var txt = (el.textContent || '').trim(); if ((el.tagName === 'BUTTON' || el.tagName === 'A') && (txt.indexOf('Actualit')===0 || txt === 'News')) { var inNav = !!el.closest('nav, header, .clean-header, .main-navigation'); if (inNav) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); window.location.href = '/actualites'; return false; } } el = el.parentElement; } }, true); function n(x){return x>=1000?(x/1000).toFixed(1)+'K':''+x} window.inject=function(){ if(!location.pathname.includes('actualit'))return; if(document.getElementById('weval-news-overlay'))return; if(!window.posts||window.posts.length===0)return; var o=document.createElement('div'); o.id='weval-news-overlay'; o.style.cssText='position:fixed;inset:0;z-index:9999;background:#fafbfc;overflow-y:auto'; var nav=document.querySelector('header.clean-header')||document.querySelector('nav')||document.querySelector('header'); if(nav){var nc=nav.cloneNode(true);nc.style.position='sticky';nc.style.top='0';nc.style.zIndex='10';o.appendChild(nc);nc.querySelectorAll('a').forEach(function(a){a.addEventListener('click',function(e){var h=a.getAttribute('href');if(h&&h.startsWith('/')&&!h.includes('actualit')){e.preventDefault();var ov=document.getElementById('weval-news-overlay');if(ov)ov.remove();window.location.href=h;}});});} var LI='https://www.linkedin.com/company/69533182'; var WLS='https://www.linkedin.com/company/weval-life-science'; function n(x){return x>=1000?(x/1000).toFixed(1)+'K':''+x} var h='
'; h+='

Actualit\u00e9s & R\u00e9seaux

'; h+='

Nos publications LinkedIn et derni\u00e8res annonces

'; h+='
'; h+='\ud83d\udcbc WEVAL - '+window.posts.filter(function(p){return p.s!=='L'}).length+' posts'; h+='\ud83e\uddec Life Sciences - '+window.posts.filter(function(p){return p.s==='L'}).length+' posts'; h+='
'; h+='
'; window.posts.forEach(function(p){ var isW=p.s==='L'; var badge=isW?'Life Sciences ':''; var link=isW?WLS+'/posts/':LI+'/posts/'; h+=''; h+='
'+p.d+''; h+='
'; h+=badge; h+='
'+p.t+'
'; if(p.i)h+='
'; h+='
'+p.x+'
'; h+='
'; h+='\ud83d\udc4d '+p.l+' \ud83d\udcac '+(p.c||0)+' \ud83d\udd01 '+(p.rp||0)+' \ud83d\udc41 '+n(p.v||0); h+='
'; }); h+='
'; h+='
Suivez WEVAL sur LinkedIn \u2192
'; h+='
'; var content=document.createElement('div');content.innerHTML=h;o.appendChild(content);document.body.appendChild(o); } var css2=document.createElement('style'); css2.textContent='@media(max-width:768px){#li-section{grid-template-columns:1fr!important}}'; document.head.appendChild(css2); })(); (function(){ if(window.innerWidth>768)return; function fixPositions(){ var btn=document.querySelector('.chat-toggle-btn'); if(btn){btn.style.setProperty('bottom','210px','important');btn.style.setProperty('z-index','10001','important');} var wa=document.getElementById('weval-whatsapp'); if(wa){wa.style.setProperty('bottom','270px','important');} } fixPositions(); setInterval(fixPositions,2000); new MutationObserver(fixPositions).observe(document.body,{childList:true,subtree:true}); })();