function PainStats() {
const pains = [
'Inconsistent posting',
'No content strategy',
'Production sludge',
'Editing bottlenecks',
];
const gains = [
{ value: 200, suffix: '%', label: 'More engagement', sub: 'Viral edits' },
{ value: 5, suffix: '×', label: 'More reach', sub: 'Strategic distribution' },
{ value: 50, suffix: '%', label: 'More leads', sub: 'Automated systems' },
];
return (
{/* Compact headline row */}
The cost of waiting
Your dream clients are buying from competitors who actually show up.
Procrastination compounds. Every week without a system is a week of compounding silence — and someone else closing your deals.
{/* The Receipt — single side-by-side ledger */}
{/* LEFT — pain column */}
Without a system
{pains.map((p, i) => (
-
{p}
))}
{/* RIGHT — gain column */}
With Nexcut
{gains.map((g, i) => (
+
{g.suffix}
{g.label}
{g.sub}
))}
{/* Arrow seam — sits over the 0.85/(0.85+1.15) = 42.5% divider */}
);
}
function ArrowSeam() {
// Sits centered on the vertical divider (at 42.5% — left column is 0.85/(0.85+1.15) = 0.425)
return (
);
}
function RollingDigit({ value, delay = 0 }) {
const [current, setCurrent] = useState(0);
const ref = useRef(null);
useEffect(() => {
if (!ref.current) return;
const el = ref.current;
const fire = () => {
const start = Date.now(), dur = 1400;
const tick = () => {
const p = Math.min(1, (Date.now() - start) / dur);
const eased = 1 - Math.pow(1 - p, 3);
setCurrent(Math.floor(eased * value));
if (p < 1) requestAnimationFrame(tick);
else setCurrent(value);
};
setTimeout(() => requestAnimationFrame(tick), delay);
};
const rect = el.getBoundingClientRect();
if (rect.top < window.innerHeight && rect.bottom > 0) fire();
else {
const obs = new IntersectionObserver(([e]) => {
if (e.isIntersecting) { fire(); obs.disconnect(); }
}, { threshold: 0.4 });
obs.observe(el);
return () => obs.disconnect();
}
}, [value, delay]);
return {current};
}
Object.assign(window, { PainStats, RollingDigit });