/* Hero — the impact opener. Left: messaging + CTAs. Right: a cinematic "report writing itself" mockup — MRI scan with scanline + crosshair, structured fields typing themselves out, confidence meter, live status. */ function useTypewriter(text, active, delay = 0, speed = 22) { const [out, setOut] = React.useState(""); React.useEffect(() => { if (!active) { setOut(""); return; } let cancel = false; let timeout; const start = () => { let i = 0; const tick = () => { if (cancel) return; setOut(text.slice(0, i)); if (i < text.length) { i++; timeout = setTimeout(tick, speed + Math.random() * 30); } }; tick(); }; timeout = setTimeout(start, delay); return () => { cancel = true; clearTimeout(timeout); }; }, [text, active, delay, speed]); return out; } function ReportMock() { const [phase, setPhase] = React.useState(0); // 0..3 cycling React.useEffect(() => { const t = setTimeout(() => setPhase(p => (p + 1) % 4), [2200, 3000, 3400, 2400][phase]); return () => clearTimeout(t); }, [phase]); const t1 = useTypewriter("Resonancia Magnética de cerebro en múltiples planos y secuencias.", phase >= 0, 200, 14); const t2 = useTypewriter("Área focal de engrosamiento cortical y discreta irregularidad de la unión córtico-subcortical en la región parietal izquierda.", phase >= 1, 100, 12); const t3 = useTypewriter("Hallazgos compatibles con displasia cortical focal en región parietal izquierda.", phase >= 2, 100, 14); const showCursor = phase < 3; return (