// Stats.jsx — animated count-up + cursor-reactive spotlight // Values are engagement commitments (the same ones quoted in the timeline, WhyUs and FAQ), // not historical figures — we do not publish client statistics. const STATS = [ { v: 100, suffix: '%', l: 'Manual testing', s: 'every finding found, exploited, and confirmed by hand' }, { v: 60, suffix: ' min', l: 'Critical findings disclosed', s: 'in your shared channel, while testing is still under way' }, { v: 90, suffix: ' days', l: 'Free retest window', s: 'every High and Critical verified fixed, signed off by your tester' }, { v: 48, suffix: ' hrs', l: 'From scoping call to fixed fee', s: 'a written scope and price, with no change orders' }, ]; const Stats = () => { const ref = React.useRef(null); const [mx, setMx] = React.useState(50); const [my, setMy] = React.useState(50); const [active, setActive] = React.useState(false); React.useEffect(() => { const el = ref.current; if (!el) return; const obs = new IntersectionObserver(([e]) => { if (e.isIntersecting) { setActive(true); obs.disconnect(); } }, { threshold: 0.3 }); obs.observe(el); return () => obs.disconnect(); }, []); const onMove = (e) => { const r = ref.current.getBoundingClientRect(); setMx(((e.clientX - r.left) / r.width) * 100); setMy(((e.clientY - r.top) / r.height) * 100); }; return (
{/* Cursor-tracked lavender spotlight */}
{/* Scan-line backdrop */}

Our commitments

What every engagement includes

{STATS.map((s, i) => ( ))}
); }; const StatCell = ({ s, active, divider }) => { const [v, setV] = React.useState(0); React.useEffect(() => { if (!active) return; if (s.literal) { setV(null); return; } const start = performance.now(); const dur = 1400; let raf; const tick = (t) => { const p = Math.min(1, (t - start) / dur); const eased = 1 - Math.pow(1 - p, 3); setV(s.v * eased); if (p < 1) raf = requestAnimationFrame(tick); }; raf = requestAnimationFrame(tick); return () => cancelAnimationFrame(raf); }, [active]); const display = s.literal ? s.literal : (s.decimals ? v.toFixed(s.decimals) : Math.round(v).toLocaleString()) + s.suffix; return (
{display}
{s.l}
{s.s}
); }; Object.assign(window, { Stats });