{m.name}
{m.when}
-
{m.bullets.map((b, i) => (
-
{b}
))}
/* features.jsx — Improved 4 Modes (2x2 cards) + Comparativa (Prudencia-style 2 col) */
/* ============================== 4 MODES — improved ============================== */
const MODE_DATA = [
{
id: 'general',
name: 'Modo General',
icon: 'scale',
color: 'indigo',
when: 'Cuando necesitas la respuesta jurídica directa, fundamentada y aplicable.',
q: '¿Cuál es el plazo de prescripción de una acción reivindicatoria sobre bien inmueble?',
a: `**Treinta años** (art. 1963 CC). Plazo continuo, no susceptible de interrupción salvo por la propia interposición de la demanda.
**Fundamentos:** art. 1957 y 1963 CC · STS 489/2022, Sala 1ª.`,
bullets: ['Citas verificadas BOE/CENDOJ', 'Estructura: respuesta → fundamentos → aplicación', 'Tono de abogado senior español'],
},
{
id: 'devil',
name: 'Análisis Adverso',
icon: 'gavel',
color: 'red',
when: 'Antes de presentar un escrito. Para que nadie demuela tu argumento antes que el contrario.',
q: '¿Es sólido mi recurso por error en la valoración de la prueba?',
a: `**No del todo.** El TS exige error *patente* — y aquí el juzgador motivó la prueba (STS 412/2024, FJ 4º).
**Riesgo:** la SAP Madrid 89/2023 ha superado tu cita de 2019. Refuerza con motivo procesal o retira ese motivo.`,
bullets: ['Te anticipa los argumentos del contrario', 'Cita jurisprudencia adversa y matizaciones', 'Identifica los puntos débiles antes del juicio'],
},
{
id: 'judge',
name: 'Pronóstico Judicial',
icon: 'judge',
color: 'slate',
when: 'Cuando necesitas saber cómo lo verá el tribunal y qué argumentos pesarán más.',
q: 'Despido improcedente · 8 años de antigüedad · sin causa probada.',
a: `**Pronóstico:** *improcedente con altísima probabilidad.*
**Peso alto:** falta de carta detallada (art. 55.1 ET); ausencia de prueba sobre la causa alegada.
**Indemnización estimada:** 33 días × 8 años = 264 días.`,
bullets: ['Pondera pruebas como un magistrado de apelación', 'Aplica criterios del Pleno y de la Sala', 'Devuelve pronóstico cuantificado'],
},
{
id: 'data',
name: 'Probabilidades',
icon: 'chart',
color: 'emerald',
when: 'Para decidir si entrar en juicio o transigir. Datos en lugar de intuición.',
q: 'Nulidad de cláusula suelo · banco grande · contrato 2010.',
a: `**Estimación de éxito: 84,7 %** sobre 1.412 sentencias análogas (2019-2025).
- Estimación íntegra: 78,2 %
- Costas a tu favor: 71 %
- Tiempo medio: 11,3 meses`,
bullets: ['Análisis estadístico sobre miles de sentencias', 'Probabilidad de éxito, costas y tiempo medio', 'Indica qué refuerzos elevan la estimación'],
},
];
const COLOR_MAP = {
indigo: { surface: 'bg-indigo2-500/[0.08]', border: 'border-indigo2-500/30', accent: 'text-indigo2-600', iconBg: 'bg-indigo2-500/15', pill: 'bg-indigo2-500/10 text-indigo2-700 border-indigo2-500/25', dot: 'bg-indigo2-500', ring: 'shadow-[0_0_0_1px_rgba(99,102,241,.18),0_18px_50px_-20px_rgba(99,102,241,.30)]' },
red: { surface: 'bg-red-500/[0.08]', border: 'border-red-700/30', accent: 'text-red-700', iconBg: 'bg-red-600/15', pill: 'bg-red-100 text-red-700 border-red-200', dot: 'bg-red-600', ring: 'shadow-[0_0_0_1px_rgba(185,28,28,.18),0_18px_50px_-20px_rgba(185,28,28,.28)]' },
slate: { surface: 'bg-slate-900/[0.05]', border: 'border-slate-700/30', accent: 'text-slate-800', iconBg: 'bg-slate-900/10', pill: 'bg-slate-200 text-slate-800 border-slate-300', dot: 'bg-slate-700', ring: 'shadow-[0_0_0_1px_rgba(30,41,59,.20),0_18px_50px_-20px_rgba(30,41,59,.28)]' },
emerald: { surface: 'bg-emerald-500/[0.08]', border: 'border-emerald-500/30', accent: 'text-emerald-700', iconBg: 'bg-emerald-500/15', pill: 'bg-emerald-100 text-emerald-700 border-emerald-200', dot: 'bg-emerald-500', ring: 'shadow-[0_0_0_1px_rgba(16,185,129,.18),0_18px_50px_-20px_rgba(16,185,129,.28)]' },
};
function ModesGrid({ onLoginRequired }) {
return (
Un equipo de cuatro especialistas que razona, ataca, defiende y cuantifica — en paralelo.
↓ Scroll para explorar cada modo
Mentaly elige el modo automáticamente según tu consulta — o lo pides tú.
{m.when}
Una IA generalista te da una respuesta.{' '}
{MODE_DATA.map((m, i) => {
const c = COLOR_MAP[m.color];
return (
{m.name}
{m.bullets.map((b, i) => (