Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
19 pages PRIO4 business enrichies: - gws-setup v63-send-queue l99-fullscreen v78-real-wire weval-portal - ethica-country crm-audit infra-tour infra-tour-2s-5c-blade - partners-emails onboarding-em arsenal-offline ultimate-quality - wevia-demo-autonomous linkedin-automation-v96 blade-install - solutions oss-catalog wtp Cumul session: - 146 pages UX doctrine 60 (127 + 19) - 32 tags Opus - 29 doctrines vault (146-184) Handler robuste 75+ pages consecutives ZERO regression. NR 153/153 invariant.
126 lines
9.6 KiB
HTML
126 lines
9.6 KiB
HTML
<!DOCTYPE html><html lang="fr"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><title>WEVAL Ultimate Quality</title><link href="https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Outfit:wght@300;400;500;600;700;800&display=swap" rel="stylesheet"><style>:root{--bg:#080b12;--s:rgba(255,255,255,.03);--b:rgba(255,255,255,.06);--t:#94a3b8;--w:#f1f5f9;--a:#6366f1;--g:#22c55e;--r:#ef4444;--R:12px}*{margin:0;padding:0;box-sizing:border-box}body{font-family:"Outfit",system-ui,sans-serif;background:var(--bg);color:var(--t);font-size:14px}.wrap{max-width:900px;margin:0 auto;padding:2rem 4%}.hero{text-align:center;padding:2rem 0}h1{font-size:2rem;font-weight:800;color:var(--w)}h1 em{font-style:normal}.stats{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin:1.5rem 0}.stat{background:var(--s);border:1px solid var(--b);border-radius:var(--R);padding:.8rem 1.5rem;text-align:center}.sn{font-family:"Space Mono";font-size:1.8rem;font-weight:700}.sl{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;margin-top:.2rem}.btn{display:inline-flex;align-items:center;gap:8px;background:var(--a);color:#fff;border:none;padding:14px 36px;border-radius:var(--R);font-family:inherit;font-size:1rem;font-weight:700;cursor:pointer}.btn:disabled{opacity:.5}.spin{display:none;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top:2px solid #fff;border-radius:50%;animation:sp .8s linear infinite}.loading .spin{display:inline-block}.loading .play{display:none}@keyframes sp{to{transform:rotate(360deg)}}.out{margin-top:1.5rem;display:none}.out.show{display:block}.t{display:flex;justify-content:space-between;padding:.3rem .6rem;border-radius:6px;font-size:.8rem;margin:1px 0}.t.pass{background:rgba(34,197,94,.05)}.t.fail{background:rgba(239,68,68,.08)}.t .d{color:#64748b;font-size:.72rem;font-family:"Space Mono"}footer{text-align:center;padding:1.5rem;font-size:.75rem;color:#475569;border-top:1px solid var(--b);margin-top:2rem}footer a{color:var(--a);text-decoration:none}</style><!-- DOCTRINE-60-UX-ENRICH direct-inject-20260424-142737 -->
|
||
<style id="doctrine60-ux-direct">
|
||
|
||
/* DOCTRINE-60-UX-ENRICH injected-direct */
|
||
body::before {
|
||
content: '';
|
||
position: fixed;
|
||
top: 0; left: 0; width: 100vw; height: 100vh;
|
||
background: radial-gradient(circle at 50% 50%, rgba(100,180,255,0.08), transparent 60%);
|
||
pointer-events: none;
|
||
z-index: -1;
|
||
}
|
||
.card, .kpi, .panel, .btn {
|
||
transition: all 0.3s cubic-bezier(0.2,0,0.1,1);
|
||
}
|
||
.card:hover, .kpi:hover, .panel:hover {
|
||
box-shadow: 0 4px 20px rgba(100,180,255,0.2);
|
||
border-color: rgba(100,180,255,0.5);
|
||
}
|
||
@keyframes pulseD60 {
|
||
0%,100% { opacity: 1; transform: scale(1); }
|
||
50% { opacity: 0.7; transform: scale(1.05); }
|
||
}
|
||
.pulse, .live-indicator, .active, .online {
|
||
animation: pulseD60 3s ease-in-out infinite;
|
||
}
|
||
.modal, .chat, .speech, .overlay {
|
||
backdrop-filter: blur(12px);
|
||
-webkit-backdrop-filter: blur(12px);
|
||
}
|
||
.enter-stagger {
|
||
animation: enterStagD60 0.5s cubic-bezier(0.2,0,0.1,1) forwards;
|
||
}
|
||
@keyframes enterStagD60 {
|
||
from { opacity: 0; transform: translateY(20px); }
|
||
to { opacity: 1; transform: translateY(0); }
|
||
}
|
||
|
||
</style>
|
||
</head><body><div class="wrap"><div class="hero"><h1>WEVAL Ultimate <em id="sigma">Quality</em></h1><p style="margin-top:.5rem;font-size:.85rem">48 tests · Infra + WEVIA + S95 + Pages + Security + Ethica + External</p></div><div class="stats"><div class="stat"><div class="sn" style="color:var(--a)" id="sTotal">—</div><div class="sl">Tests</div></div><div class="stat"><div class="sn" style="color:var(--g)" id="sPass">—</div><div class="sl">Pass</div></div><div class="stat"><div class="sn" style="color:var(--r)" id="sFail">—</div><div class="sl">Fail</div></div><div class="stat"><div class="sn" id="sSigma">—</div><div class="sl">Sigma</div></div><div class="stat"><div class="sn" style="color:var(--w)" id="sTime">—</div><div class="sl">ms</div></div></div><div style="text-align:center"><button class="btn" id="btn" onclick="run()"><span class="play">▶</span><span class="spin"></span> Lancer les tests</button></div><div class="out" id="out"></div></div><footer>© 2026 <a href="/">WEVAL</a> · <a href="/nonreg.html">NonReg 67</a> · <a href="/trust-center.html">Trust</a> · <a href="/products/workspace.html">62 Produits</a></footer><script>async function run(){var b=document.getElementById("btn"),o=document.getElementById("out");b.classList.add("loading");b.disabled=true;o.className="out show";o.innerHTML="<p style=\"text-align:center;padding:2rem\">Tests en cours...</p>";try{var r=await fetch("/api/ultimate-quality.php?k=WEVADS2026");var d=await r.json();document.getElementById("sTotal").textContent=d.total;document.getElementById("sPass").textContent=d.pass;document.getElementById("sFail").textContent=d.fail;document.getElementById("sTime").textContent=d.elapsed_ms;var sig=d.sigma==="6"?"6σ":d.pass+"/"+d.total;document.getElementById("sSigma").textContent=sig;document.getElementById("sSigma").style.color=d.fail===0?"var(--g)":"var(--r)";document.getElementById("sigma").textContent=d.fail===0?"6σ":"Quality";document.getElementById("sigma").style.color=d.fail===0?"var(--g)":"var(--r)";var h="";d.tests.forEach(function(t){var ic=t.s==="pass"?"✓":"✗";var cl=t.s==="pass"?"color:var(--g)":"color:var(--r)";h+="<div class=\"t "+t.s+"\"><span><span style=\""+cl+";margin-right:6px\">"+ic+"</span>"+t.n+"</span><span class=\"d\">"+t.d+"</span></div>"});o.innerHTML=h}catch(e){o.innerHTML="<p style=\"color:var(--r)\">Erreur: "+e.message+"</p>"}b.classList.remove("loading");b.disabled=false}</script>
|
||
<!-- === OPUS UNIVERSAL DRILL-DOWN v1 19avr — append-only, doctrine #14 === -->
|
||
<script>
|
||
(function(){
|
||
if (window.__opusUniversalDrill) return; window.__opusUniversalDrill = true;
|
||
var d = document;
|
||
var m = d.createElement('div');
|
||
m.id = 'opus-udrill';
|
||
m.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.82);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center;z-index:99995;padding:20px;cursor:pointer';
|
||
var inner = d.createElement('div');
|
||
inner.id = 'opus-udrill-in';
|
||
inner.style.cssText = 'max-width:900px;width:100%;max-height:90vh;overflow:auto;background:#0b0d15;border:1px solid rgba(99,102,241,0.35);border-radius:14px;padding:28px;cursor:default;box-shadow:0 20px 60px rgba(0,0,0,0.6);color:#e2e8f0;font:14px/1.55 Inter,system-ui,sans-serif';
|
||
inner.addEventListener('click', function(e){ e.stopPropagation(); });
|
||
m.appendChild(inner);
|
||
m.addEventListener('click', function(){ m.style.display='none'; });
|
||
d.addEventListener('keydown', function(e){ if(e.key==='Escape') m.style.display='none'; });
|
||
(d.body || d.documentElement).appendChild(m);
|
||
|
||
function openCard(card) {
|
||
// Clone card content + show close btn + increase font-size
|
||
var html = '<div style="display:flex;justify-content:flex-end;margin-bottom:14px"><button id="opus-udrill-close" style="padding:6px 14px;background:#171b2a;border:1px solid rgba(99,102,241,0.25);color:#e2e8f0;border-radius:8px;cursor:pointer;font-size:12px">✕ Fermer (Esc)</button></div>';
|
||
html += '<div style="transform-origin:top left;font-size:1.05em">' + card.outerHTML + '</div>';
|
||
inner.innerHTML = html;
|
||
d.getElementById('opus-udrill-close').onclick = function(){ m.style.display='none'; };
|
||
m.style.display = 'flex';
|
||
}
|
||
|
||
function wire(root) {
|
||
var sels = '.card,[class*="card"],.kpi,[class*="kpi"],.stat,[class*="stat"],.tile,[class*="tile"],.metric,[class*="metric"],.widget,[class*="widget"]';
|
||
var cards = root.querySelectorAll(sels);
|
||
for (var i = 0; i < cards.length; i++) {
|
||
var c = cards[i];
|
||
if (c.__opusWired) continue;
|
||
if (c.closest('button, a, input, select, textarea, #opus-udrill')) continue;
|
||
var r = c.getBoundingClientRect();
|
||
if (r.width < 60 || r.height < 40) continue;
|
||
c.__opusWired = true;
|
||
c.style.cursor = 'pointer';
|
||
c.setAttribute('role','button');
|
||
c.setAttribute('tabindex','0');
|
||
c.addEventListener('click', function(ev){
|
||
// If a more-specific drill is already active (e.g. pp-card custom), let it handle
|
||
if (ev.target.closest('[data-pp-id]') && window.__opusDrillInit) return;
|
||
if (ev.target.closest('a,button,input,select')) return;
|
||
ev.preventDefault(); ev.stopPropagation();
|
||
openCard(this);
|
||
});
|
||
c.addEventListener('keydown', function(ev){ if(ev.key==='Enter'||ev.key===' '){ev.preventDefault();openCard(this);} });
|
||
}
|
||
}
|
||
|
||
// Initial + mutation observer
|
||
var initRun = function(){ wire(d.body || d.documentElement); };
|
||
if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', initRun);
|
||
else initRun();
|
||
var mo = new MutationObserver(function(muts){
|
||
var newCard = false;
|
||
for (var i=0;i<muts.length;i++) if (muts[i].addedNodes.length) { newCard = true; break; }
|
||
if (newCard) initRun();
|
||
});
|
||
mo.observe(d.body || d.documentElement, {childList:true, subtree:true});
|
||
})();
|
||
</script>
|
||
<!-- === OPUS UNIVERSAL DRILL-DOWN END === -->
|
||
|
||
|
||
<script src="/api/a11y-auto-enhancer.js" defer></script>
|
||
<!-- WTP_UDOCK_V1 (Opus 21-avr t34final) --><script src="/wtp-unified-dock.js" defer></script>
|
||
<script src="/opus-antioverlap-doctrine.js?v=1776776094" defer></script>
|
||
<!-- DOCTRINE-60-UX-JS --><script id="doctrine60-ux-js-direct">
|
||
|
||
// DOCTRINE-60-UX-JS staggered entrance
|
||
(function(){
|
||
if (!('IntersectionObserver' in window)) return;
|
||
const obs = new IntersectionObserver((entries) => {
|
||
entries.forEach((e, i) => {
|
||
if (e.isIntersecting) {
|
||
setTimeout(() => e.target.classList.add('enter-stagger'), i * 80);
|
||
obs.unobserve(e.target);
|
||
}
|
||
});
|
||
});
|
||
document.querySelectorAll('.card, .kpi, .panel').forEach(el => obs.observe(el));
|
||
})();
|
||
|
||
</script>
|
||
</body></html> |