Qiiub POS · Task 11 — Login LIGHT v3. vs v2: (1) cards de tamaño idéntico en ambos pasos (misma estructura: strip de cara + bloque de campo de altura fija + numpad + fila de botón) — el card ya no crece/encoge al pasar de número a PIN, solo cambia el contenido. (2) eliminado el "Ask your manager" (era enlace muerto / afordance falso — mismo problema que los links chiquitos). Recuperación de número/PIN se maneja fuera del terminal (gerente vía portal); si se quiere acción real en el terminal, es mini-feature aparte. (3) Estado pressed definido: reposo → hover (mist, sutil) → pressed (tinte brand). La tecla "5" está pintada en pressed de demo; mantén presionada cualquier tecla/botón para ver el estado real. (4) Distinción visual número vs PIN (se entiende sin leer): el número de empleado se muestra en dígitos visibles + icono de ID (es un identificador, como un usuario); el PIN va enmascarado en dots + icono de candado (es el secreto) — convención universal usuario/contraseña. Decisión de seguridad TUYA: ¿número visible (propuesto) o enmascarado como antes? Visible preserva cero-enumeración (sigue sin placeholder de longitud/prefijo, no revela el roster); el único trade-off es shoulder-surfing del propio número (no es credencial — el PIN sigue oculto).   Created: 2026-06-24 | Last Updated: 2026-06-24
Built by BCPOS
ENES
Farmacia Centro · Terminal 01
17:05
Online
Paso 1 de 2 · Identificación Good afternoon ·
Enter your employee number
Face verification
Captured · tied to session
PBKDF2
Employee number
04
Paso 2 de 2 · PIN Employee 04 ·
Enter your PIN
Face verification
Captured · tied to session
PBKDF2
4-digit PIN

Uniform PIN failure — light (review state)

Mismo banner para PIN incorrecto, cuenta bloqueada o empleado inexistente. Sin contador de intentos.
4-digit PIN
We couldn't verify you
Check your PIN and try again. Trouble? Ask your manager.

Security map — light re-layout (lo que pediste auditar)

Markup NUEVO (no "el mismo pero light"): el re-layout pudo introducir fugas que el dark no tenía. Mapeo de cada invariante:
aEnumeración (by-number). Paso 1 no renderiza roster — solo número + numpad, sin placeholder de longitud ni prefijo (no revela el formato del roster). PROPUESTA: el número se muestra en dígitos visibles (es un ID, no el secreto — el PIN es el que se enmascara). Cero-enumeración se preserva (sigue sin placeholder/prefijo); única exposición nueva = shoulder-surfing del propio número. Tu call: visible o enmascarado.
bFallo uniforme. Un solo banner (arriba) para PIN incorrecto / bloqueado / inexistente; sin contador. Mismo PinAuthService + decoy PBKDF2 (las 3 ramas pagan el costo). ✓
cSin displayName/ownerRef ni sesión previa. Ningún nombre del roster, «último acceso» ni sesión recordada — memory-only (BUG-010). El «Employee 04» del paso 2 es el número que TÚ tecleaste, no un nombre. ✓
dRiesgo del re-layout a vigilar (tu cold-review): contraste WCAG en light (ink sobre card, banner de error ≥4.5:1) y que el campo de número no herede autocompletado del browser (los dots deben venir del estado, no de un <input> autofill).