Files
html/ethica-drill.html

78 lines
2.5 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head><meta charset="UTF-8"><title>Ethica Drill — WEVAL</title>
<meta http-equiv="refresh" content="0;url=/ethica-dashboard-live.html">
<style>body{font-family:Inter;background:#05060a;color:#e2e8f0;padding:40px;text-align:center}</style>
<!-- DOCTRINE-60-UX-ENRICH direct-inject-20260424-144051 -->
<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>
<!-- DOCTRINE-222-KILL-PULSED60 -->
<style>
@keyframes pulseD60 { 0%,100%,50% { opacity: 1; transform: scale(1); } }
.pulse, .live-indicator, .active, .online { animation: none !important; }
</style>
<!-- END-DOCTRINE-222 -->
</head>
<body>
<h1>Ethica Drill Dashboard</h1>
<p>Redirection vers <a href="/ethica-dashboard-live.html">Ethica Dashboard Live</a>...</p>
<!-- V9.1 OPUS UNIVERSAL DRILL-DOWN (additif, doctrine #14) -->
<script src="/api/ux-drill-enricher.php" defer></script>
<!-- WTP_UDOCK_V1 (Opus 21-avr t37-final100) --><script src="/wtp-unified-dock.js" defer></script>
<script src="/opus-antioverlap-doctrine.js?v=1777045903" 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>