Skip to content

Commit 68983ed

Browse files
committed
feat: whynow convergence gauges — 78/48/72% scroll-animated with unlock state
1 parent d3fe03d commit 68983ed

1 file changed

Lines changed: 218 additions & 4 deletions

File tree

pages/whynow.html

Lines changed: 218 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,52 @@ <h1>Three conditions have converged to make this both necessary and possible.</h
8686
<p>AI can only be as good as the knowledge it runs on. Right now, many organisations have the models but not the
8787
knowledge quality or governance needed for reliable output. That is why Knowledge Intelligence is needed now.</p>
8888

89+
<div class="ki-gauges-wrap fade-in" id="ki-gauges">
90+
<div class="ki-gauges-row">
91+
<div class="ki-gauge" style="--gc:#22b9dc">
92+
<div class="ki-g-tag">01 &middot; AI at scale</div>
93+
<svg class="ki-g-svg" viewBox="0 0 148 88" fill="none">
94+
<path class="ki-g-track" d="M14 80 A60 60 0 1 1 134 80"/>
95+
<path class="ki-g-fill" id="kgf1" stroke="#22b9dc" d="M14 80 A60 60 0 1 1 134 80"/>
96+
</svg>
97+
<div class="ki-g-num" id="kgn1">0%</div>
98+
<div class="ki-g-desc">of organisations now run AI in at least one function &mdash; the knowledge estate it depends on has never been larger or less governed</div>
99+
<div class="ki-g-src">McKinsey State of AI, 2025</div>
100+
</div>
101+
<div class="ki-gauge" style="--gc:#e0bc56">
102+
<div class="ki-g-tag">02 &middot; Knowledge loss</div>
103+
<svg class="ki-g-svg" viewBox="0 0 148 88" fill="none">
104+
<path class="ki-g-track" d="M14 80 A60 60 0 1 1 134 80"/>
105+
<path class="ki-g-fill" id="kgf2" stroke="#e0bc56" d="M14 80 A60 60 0 1 1 134 80"/>
106+
</svg>
107+
<div class="ki-g-num" id="kgn2">0%</div>
108+
<div class="ki-g-desc">of executives confirm that critical knowledge leaves with departing people every year &mdash; ungoverned, unrecoverable</div>
109+
<div class="ki-g-src">KMWorld, 2024</div>
110+
</div>
111+
<div class="ki-gauge" style="--gc:#ef6b6b">
112+
<div class="ki-g-tag">03 &middot; Confidence failure</div>
113+
<svg class="ki-g-svg" viewBox="0 0 148 88" fill="none">
114+
<path class="ki-g-track" d="M14 80 A60 60 0 1 1 134 80"/>
115+
<path class="ki-g-fill" id="kgf3" stroke="#ef6b6b" d="M14 80 A60 60 0 1 1 134 80"/>
116+
</svg>
117+
<div class="ki-g-num" id="kgn3">0%</div>
118+
<div class="ki-g-desc">of business leaders say lack of trust in their knowledge and data has stopped them making any decision at all</div>
119+
<div class="ki-g-src">Oracle &middot; 14,000 leaders &middot; 17 countries</div>
120+
</div>
121+
</div>
122+
<div class="ki-gauges-unlock" id="ki-unlock">
123+
<div class="ki-unlock-icon">
124+
<svg class="ki-icon-lock" width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="3" y="7" width="10" height="8" rx="2" stroke="rgba(255,255,255,0.35)" stroke-width="1.5"/><path d="M5 7V5a3 3 0 016 0v2" stroke="rgba(255,255,255,0.35)" stroke-width="1.5" stroke-linecap="round"/></svg>
125+
<svg class="ki-icon-open" width="16" height="16" viewBox="0 0 16 16" fill="none"><rect x="3" y="7" width="10" height="8" rx="2" stroke="#67d487" stroke-width="1.5"/><path d="M5 7V5a3 3 0 016 0" stroke="#67d487" stroke-width="1.5" stroke-linecap="round"/></svg>
126+
</div>
127+
<div class="ki-unlock-text">
128+
<div class="ki-unlock-head" id="ki-uhead">Conditions status</div>
129+
<div class="ki-unlock-body" id="ki-ubody">Scale exposes the knowledge gap. The knowledge gap destroys decision confidence. All three conditions have converged.</div>
130+
</div>
131+
<div class="ki-unlock-pips"><div class="ki-pip"></div><div class="ki-pip"></div><div class="ki-pip"></div></div>
132+
</div>
133+
</div>
134+
89135
<div class="challenge-list challenge-journey fade-in">
90136
<div class="journey-map">
91137
<svg class="journey-track" viewBox="0 0 1200 280" preserveAspectRatio="none" xmlns="http://www.w3.org/2000/svg"
@@ -252,14 +298,182 @@ <h3>AI performance is downstream of knowledge quality.</h3>
252298
</a>
253299
</nav>
254300
<script src="/assets/js/site.js?v=20260303-1" defer></script>
301+
<style>
302+
/* ── KI CONVERGENCE GAUGES ───────────────────────────── */
303+
.ki-gauges-wrap {
304+
margin: 32px 0;
305+
background: rgba(0,0,0,0.2);
306+
border: 1px solid rgba(255,255,255,0.07);
307+
border-radius: 12px;
308+
overflow: hidden;
309+
}
310+
.ki-gauges-row {
311+
display: grid;
312+
grid-template-columns: 1fr 1fr 1fr;
313+
gap: 1px;
314+
background: rgba(255,255,255,0.06);
315+
}
316+
.ki-gauge {
317+
background: rgba(6,8,16,0.95);
318+
padding: 28px 22px 24px;
319+
display: flex;
320+
flex-direction: column;
321+
align-items: center;
322+
position: relative;
323+
}
324+
.ki-gauge::before {
325+
content: '';
326+
position: absolute;
327+
top: 0; left: 0; right: 0;
328+
height: 2px;
329+
background: var(--gc);
330+
opacity: 0.6;
331+
}
332+
.ki-g-tag {
333+
font-family: 'Space Grotesk', sans-serif;
334+
font-size: 9px;
335+
font-weight: 700;
336+
letter-spacing: 0.14em;
337+
text-transform: uppercase;
338+
color: var(--gc);
339+
opacity: 0.8;
340+
margin-bottom: 18px;
341+
text-align: center;
342+
}
343+
.ki-g-svg { width: 148px; height: 88px; display: block; flex-shrink: 0; }
344+
.ki-g-track { fill: none; stroke: rgba(255,255,255,0.07); stroke-width: 10; stroke-linecap: round; }
345+
.ki-g-fill {
346+
fill: none;
347+
stroke-width: 10;
348+
stroke-linecap: round;
349+
stroke-dasharray: 220;
350+
stroke-dashoffset: 220;
351+
transition: stroke-dashoffset 1.8s cubic-bezier(0.4,0,0.2,1);
352+
}
353+
.ki-g-num {
354+
font-family: 'Bricolage Grotesque', sans-serif;
355+
font-size: 40px;
356+
font-weight: 800;
357+
letter-spacing: -0.05em;
358+
line-height: 1;
359+
color: var(--gc);
360+
margin-top: -4px;
361+
margin-bottom: 10px;
362+
}
363+
.ki-g-desc {
364+
font-size: 11px;
365+
color: rgba(255,255,255,0.38);
366+
text-align: center;
367+
line-height: 1.6;
368+
max-width: 160px;
369+
flex: 1;
370+
}
371+
.ki-g-src {
372+
font-family: 'Space Grotesk', sans-serif;
373+
font-size: 8px;
374+
font-weight: 700;
375+
letter-spacing: 0.1em;
376+
text-transform: uppercase;
377+
color: rgba(255,255,255,0.15);
378+
text-align: center;
379+
margin-top: 10px;
380+
}
381+
/* Unlock bar */
382+
.ki-gauges-unlock {
383+
display: flex;
384+
align-items: center;
385+
gap: 18px;
386+
padding: 18px 24px;
387+
background: rgba(0,0,0,0.25);
388+
border-top: 1px solid rgba(255,255,255,0.06);
389+
transition: border-color 1s ease, background 1s ease;
390+
}
391+
.ki-gauges-unlock.on {
392+
border-color: rgba(103,212,135,0.25);
393+
background: rgba(103,212,135,0.04);
394+
}
395+
.ki-unlock-icon {
396+
width: 36px; height: 36px; border-radius: 50%;
397+
border: 1.5px solid rgba(255,255,255,0.1);
398+
display: flex; align-items: center; justify-content: center;
399+
flex-shrink: 0; position: relative;
400+
transition: border-color 0.8s ease, background 0.8s ease;
401+
}
402+
.ki-gauges-unlock.on .ki-unlock-icon {
403+
border-color: rgba(103,212,135,0.45);
404+
background: rgba(103,212,135,0.08);
405+
}
406+
.ki-icon-lock, .ki-icon-open { position: absolute; transition: opacity 0.5s ease; }
407+
.ki-icon-open { opacity: 0; }
408+
.ki-gauges-unlock.on .ki-icon-lock { opacity: 0; }
409+
.ki-gauges-unlock.on .ki-icon-open { opacity: 1; }
410+
.ki-unlock-text { flex: 1; }
411+
.ki-unlock-head {
412+
font-family: 'Space Grotesk', sans-serif;
413+
font-size: 9px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase;
414+
color: rgba(255,255,255,0.2); margin-bottom: 3px;
415+
transition: color 0.8s ease;
416+
}
417+
.ki-gauges-unlock.on .ki-unlock-head { color: rgba(103,212,135,0.7); }
418+
.ki-unlock-body {
419+
font-size: 13px; color: rgba(255,255,255,0.38); line-height: 1.5;
420+
transition: color 0.8s ease;
421+
}
422+
.ki-gauges-unlock.on .ki-unlock-body { color: rgba(255,255,255,0.78); }
423+
.ki-unlock-pips { display: flex; gap: 5px; flex-shrink: 0; }
424+
.ki-pip {
425+
width: 6px; height: 6px; border-radius: 50%;
426+
background: rgba(255,255,255,0.1);
427+
transition: background 0.4s ease;
428+
}
429+
.ki-gauges-unlock.on .ki-pip { background: #67d487; }
430+
.ki-pip:nth-child(2) { transition-delay: 0.18s; }
431+
.ki-pip:nth-child(3) { transition-delay: 0.36s; }
432+
</style>
255433
<script>
256434
(function(){
257-
var wrap = document.getElementById('conv-wrap');
258-
if (!wrap) return;
435+
function setArc(id, pct, delay) {
436+
var el = document.getElementById(id);
437+
if (!el) return;
438+
setTimeout(function(){
439+
el.style.strokeDashoffset = (220 - (pct / 100) * 220).toFixed(1);
440+
}, delay);
441+
}
442+
function countUp(id, target, delay, suffix) {
443+
var el = document.getElementById(id);
444+
if (!el) return;
445+
setTimeout(function(){
446+
var dur = 1800, step = 16, t = 0;
447+
var timer = setInterval(function(){
448+
t += step;
449+
var p = Math.min(t / dur, 1);
450+
var ease = p < 0.5 ? 2*p*p : -1+(4-2*p)*p;
451+
el.textContent = Math.round(ease * target) + suffix;
452+
if (p >= 1) { el.textContent = target + suffix; clearInterval(timer); }
453+
}, step);
454+
}, delay);
455+
}
456+
function runGauges() {
457+
setArc('kgf1', 78, 80); countUp('kgn1', 78, 80, '%');
458+
setArc('kgf2', 48, 380); countUp('kgn2', 48, 380, '%');
459+
setArc('kgf3', 72, 680); countUp('kgn3', 72, 680, '%');
460+
setTimeout(function(){
461+
var ul = document.getElementById('ki-unlock');
462+
if (ul) {
463+
ul.classList.add('on');
464+
var head = document.getElementById('ki-uhead');
465+
var body = document.getElementById('ki-ubody');
466+
if (head) head.textContent = 'All three conditions met';
467+
if (body) body.textContent = 'The knowledge estate is large enough. The cost of losing it is measurable. The confidence gap is unsustainable. This is why now.';
468+
}
469+
}, 2800);
470+
}
471+
var gauges = document.getElementById('ki-gauges');
472+
if (!gauges) return;
259473
var io = new IntersectionObserver(function(entries){
260-
if (entries[0].isIntersecting) { wrap.classList.add('visible'); io.unobserve(wrap); }
474+
if (entries[0].isIntersecting) { runGauges(); io.unobserve(gauges); }
261475
}, { threshold: 0.3 });
262-
io.observe(wrap);
476+
io.observe(gauges);
263477
}());
264478
</script>
265479
</body>

0 commit comments

Comments
 (0)