// pesito — Topbar (iOS glass) + Hero (editorial) const Topbar = ({ lang, setLang, onApply, onScroll }) => { const navs = lang === 'es' ? [['calc', 'Calculadora'], ['steps', 'Cómo funciona'], ['faq', 'Preguntas'], ['trust', 'Regulación']] : [['calc', 'Калькулятор'], ['steps', 'Как работает'], ['faq', 'Вопросы'], ['trust', 'Регулирование']]; return (
{lang === 'es' ? 'préstamos honestos' : 'честные займы'}
); }; const Hero = ({ lang, onApply, onScroll }) => { const t = lang === 'es' ? { eyebrow: 'préstamos honestos', h1: ['De pesito', 'a pesito.', Sin letra chica.], sub: 'Préstamos personales en México de $200 a $100,000. Tasas y comisiones a la vista, antes de firmar.', stats: [['3 min', 'solicitud'], ['5 seg', 'depósito SPEI'], ['0', 'letra chica']], cta: 'Pedir préstamo', secondary: 'Calcular primero', cardLabel: 'Tu préstamo', cardTerm: '8 quincenas', cardNote: 'sin penalización por prepago', cardCAT: 'CAT 518% sin IVA', } : { eyebrow: 'честные займы', h1: ['От песо', 'к песо.', Без мелкого шрифта.], sub: 'Личные займы в Мексике от $200 до $100,000. Все ставки и комиссии видны до подписи.', stats: [['3 мин', 'заявка'], ['5 сек', 'перевод SPEI'], ['0', 'скрытых сборов']], cta: 'Подать заявку', secondary: 'Сначала рассчитать', cardLabel: 'Ваш заём', cardTerm: '8 двухнедельных', cardNote: 'без штрафа за досрочное погашение', cardCAT: 'CAT 518% без НДС', }; return (
{t.eyebrow} · es-MX

{t.h1[0]}
{t.h1[1]}
{t.h1[2]}

{t.sub}

{t.stats.map(([n, label], i) => (
{n}
{label}
))}
{/* Editorial card on right */}
); }; const HeroCard = ({ lang, t }) => { const [tilt, setTilt] = React.useState({ x: 0, y: 0 }); const onMove = (e) => { const r = e.currentTarget.getBoundingClientRect(); const x = ((e.clientX - r.left) / r.width - 0.5) * 4; const y = ((e.clientY - r.top) / r.height - 0.5) * -4; setTilt({ x, y }); }; // 8-quincena schedule: heights vary slightly so it reads as data, not decoration const bars = [0.78, 0.82, 0.76, 0.84, 0.80, 0.78, 0.82, 0.78]; const dates = ['14 may','28 may','11 jun','25 jun','9 jul','23 jul','6 ago','20 ago']; const datesRu = ['14.05','28.05','11.06','25.06','09.07','23.07','06.08','20.08']; const ds = lang === 'es' ? dates : datesRu; return (
setTilt({ x: 0, y: 0 })} style={{ position: 'relative', transform: `perspective(1400px) rotateY(${tilt.x}deg) rotateX(${tilt.y}deg)`, transition: 'transform 220ms ease-out', transformStyle: 'preserve-3d', height: '100%', }}> {/* paper sheet — taller, denser, more trust signals */}
{/* corner perforation — paper-fold cue */}
{/* HEADER: contract id + brand mark */}
{t.cardLabel}
SOFOM ENR · MXN-001 · 2026
{/* AMOUNT — bigger, more prominent */}
$5,000MXN
{t.cardTerm} · {t.cardNote}
{/* PAYMENT META */}
{lang === 'es' ? 'Pago quincenal' : 'Платёж раз в 2 нед.'}
$863
{lang === 'es' ? 'Total a pagar' : 'Всего к оплате'}
$6,900
{/* SCHEDULE — 8 quincenas visualised. Trust comes from showing the data. */}
{lang === 'es' ? 'Cronograma · 8 pagos' : 'График · 8 платежей'}
{lang === 'es' ? 'cada 14 días' : 'каждые 14 дней'}
{bars.map((h, i) => (
))}
{ds.map((d, i) => (
{d}
))}
{/* TRUST STRIP — regulatory badges */}
{[ { k: 'CNBV', v: lang === 'es' ? 'regulado' : 'регулир.' }, { k: 'CONDUSEF', v: lang === 'es' ? 'supervisado' : 'надзор' }, { k: 'SPEI', v: lang === 'es' ? 'Banxico' : 'Banxico' }, ].map((b, i) => (
{b.k}
{b.v}
))}
{/* FOOTER — CAT + verified */}
{t.cardCAT} {lang === 'es' ? 'verificado' : 'проверено'}
{/* Stamp — kept smaller, tucked at bottom-right */}
SPEI · {lang === 'es' ? '5 seg' : '5 сек'}
); }; Object.assign(window, { Topbar, Hero });