Fintech UI
Fintech UI
10 reglasfont-variant-numeric: tabular-nums en columnas financieras
Toda columna de importes, portfolios y dashboards debe usar font-variant-numeric: tabular-nums para que cada digito ocupe el mismo espacio horizontal. Los valores monetarios deben alinearse a la derecha para que los puntos decimales apilen verticalmente.
.account-no { font-variant-numeric: tabular-nums slashed-zero; }
Validar numero de tarjeta en onblur, no en keystroke; ejecutar Luhn client-side
Disparar la validacion de tarjeta solo cuando el usuario abandona el campo (onblur), nunca mientras escribe. Ejecutar el algoritmo Luhn (mod-10) inmediatamente en el cliente para detectar errores de tipeo antes de cualquier llamada de red. Auto-formatear en grupos de cuatro: 4111 1111 1111 1111.
Tarjeta Visa verificada
Numero de tarjeta invalido
El usuario aun esta escribiendo los 16 digitos
Atributos autocomplete exactos en cada campo de pago
Usar el token exacto de autocomplete para cada campo: cc-name, cc-number, cc-exp, cc-csc. Agregar inputmode="numeric" a numero y CVV para mostrar teclado numerico en movil sin usar type="number". Nunca usar autocomplete="off" en campos de pago.
<input type="text" inputmode="numeric" autocomplete="cc-csc" />
Mostrar skeleton solo despues de 500ms; que coincida con el layout real
El placeholder skeleton debe aparecer unicamente cuando la carga supera 500ms. Por debajo de ese umbral, el estado vacio seguido del contenido es perceptualmente mas rapido. El skeleton debe reflejar el numero exacto de filas visibles (+-1 fila) para evitar content shift al llegar los datos.
Nielsen Norman Group -- Skeleton Screens 101 · Jakob Nielsen -- Response Time LimitsConfirmar transferencias con pantalla completa que muestre los 5 campos clave
Transferencias significativas deben mostrar una pantalla dedicada de revision antes de ejecutarse. La pantalla debe incluir: nombre del destinatario, cuenta/IBAN, institucion, importe con simbolo de moneda y fecha estimada de llegada. El CTA debe ser especifico: "Enviar $1,200.00", no "Confirmar".
Nielsen Norman Group -- Heuristica 5 (Error Prevention) · UX Planet -- Confirmation DialogsEstas seguro?
Nunca usar solo rojo/verde para valores positivos/negativos
Aproximadamente el 8% de los hombres tiene deficiencia rojo-verde. Acompanar siempre el color con un indicador tipografico: signo mas/menos, icono de flecha, o notacion contable ($340). El texto debe alcanzar minimo 4.5:1 de contraste sobre el fondo (WCAG 2.2 AA).
.loss { color: #B71C1C; } /* 5.3:1 */
Dividir KYC en pantallas de tarea unica con checklist previo
Los flujos KYC tienen 50-80% de abandono; la subida de documentos es el paso de mayor fuga. Mostrar una pantalla "Antes de empezar" con: documentos necesarios, tiempo estimado y consejos de entorno. Cada pantalla posterior contiene exactamente una tarea. Mostrar barra de progreso segmentada en cada paso.
Shuftipro -- How to Reduce KYC Drop-Off · KYCAID -- Reducing User Drop-offAntes de empezar
Tendras todo listo en 3 minutos
Mostrar score crediticio como arco con valor numerico, extremos y etiqueta verbal
El gauge de score debe mostrar: el numero (minimo 32px), los extremos del rango etiquetados, y una categoria verbal ("Bueno", "Excelente"). El segmento activo del arco debe alcanzar 3:1 de contraste contra el track inactivo (WCAG 2.2 SC 1.4.11). Animar el fill en 600-800ms ease-out, gateado por prefers-reduced-motion.
Escala 300-850 · Verde #276D3B vs track: 4.2:1
Sin numero, sin escala, sin categoria
Enmascarar numeros de cuenta por default; revelar solo con toggle explicito
PANs, IBANs y numeros de cuenta deben mostrarse enmascarados al cargar (ej. ".... .... .... 4521"). Proveer un icono de ojo (minimo 44x44px) que revele el numero completo maximo 30 segundos antes de re-enmascarar. Usar caracteres de reemplazo en el DOM, nunca CSS blur.
/* Re-mascara a los 30s con setTimeout */
.... .... .... 4521
Toca el ojo para revelar · re-enmascara en 30s
4111 1111 1111 4521
Numero completo expuesto en captura de pantalla y "shoulder surfing"
Campo de monto: simbolo de moneda externo al input, inputmode="decimal"
El simbolo de moneda debe ser un elemento DOM adyacente (no placeholder), para que no desaparezca al escribir y los lectores de pantalla lo anuncien correctamente. Usar inputmode="decimal" (no type="number") para el teclado correcto en movil. Un solo campo para enteros y decimales, con separadores de miles automaticos.
Enviar dinero
El usuario escribio "1500" · separador de miles automatico · inputmode="decimal" activa teclado decimal en iOS/Android
Enviar dinero
El "$" desaparece al escribir; pegar "250.75" no funciona en ningun campo
- R-1605 font-variant-numeric: tabular-nums en columnas financieras
- R-1606 Validar numero de tarjeta en onblur, no en keystroke; ejecutar Luhn client-side
- R-1607 Atributos autocomplete exactos en cada campo de pago
- R-1608 Mostrar skeleton solo despues de 500ms; que coincida con el layout real
- R-1609 Confirmar transferencias con pantalla completa que muestre los 5 campos clave
- R-1610 Nunca usar solo rojo/verde para valores positivos/negativos
- R-1611 Dividir KYC en pantallas de tarea unica con checklist previo
- R-1612 Mostrar score crediticio como arco con valor numerico, extremos y etiqueta verbal
- R-1613 Enmascarar numeros de cuenta por default; revelar solo con toggle explicito
- R-1614 Campo de monto: simbolo de moneda externo al input, inputmode="decimal"