# review-mockup — E250-C0111

**Aprobada:** `v1-guided-resolution.html` (variante única)
**Motivo:** cubre los 6 estados del contrato (listado con «Eliminar», confirmación fuerte simple, resolución guiada con las 4 resoluciones por espacio, sub-confirmación fuerte, bloqueos self/último-admin, y responsive a 375px), usa el tema real `e250` (OKLCH), DaisyUI semántico, y es coherente con el shell real: el listado replica `PanelIntranetUsersView.vue` (tabla `table-sm align-top`, breadcrumb, badges de membresía, patrón tooltip+botón deshabilitado) y las confirmaciones fuertes replican `IntranetArchiveDialog.vue` (type-the-name con `input-success`/`input-error`, botón deshabilitado hasta coincidir). Banner «MOCKUP — no producción» presente y sticky. La decisión de UI clave (jerarquía de peligro del diálogo de resolución) está resuelta de forma defendible; los hallazgos son menores y no bloqueantes.

## Cobertura de criterios de aceptación (superficie visual)

- [x] Acción «Eliminar» por identidad en el listado, destructiva (rojo), separada de «Editar» (§1).
- [x] Confirmación fuerte de borrado simple: teclear email, botón deshabilitado hasta coincidir, aviso de irreversibilidad + cascada (membresías, flag admin, sesiones). Incluye variante «antes de teclear» (§2).
- [x] Diálogo de resolución guiada: enumera espacios poseídos, 4 resoluciones por espacio (reasignar / vaciar / purgar espacio / purgar organización), estado de progreso resueltos vs. pendientes, botón final deshabilitado mientras quede pendiente, aviso de fallo compuesto sin éxito parcial silencioso (§3).
- [x] «Reasignar» deshabilitado cuando no hay otra membresía elegible, con pista accionable (§6 móvil).
- [x] Sub-confirmación fuerte por acción destructiva: teclear nombre exacto del item (§4, «Purgar el espacio»).
- [x] Bloqueos: self-guard y último platform-admin — deshabilitado con tooltip en el listado (§1) y mensajes de rechazo claros (§5).
- [x] Responsive 375px: listado→tarjetas, resolución guiada en columna única manteniendo el orden de peligro, sub-confirmación (§6).

## Findings por variante

### v1-guided-resolution.html (aprobada)
- ✅ Tema `e250`, DaisyUI semántico, banner de mockup presente, coherencia con SFCs reales.
- [ ] **Menor — jerarquía en grid 2×2 (desktop).** Las 4 resoluciones se disponen en `sm:grid-cols-2`, así que la escalada de peligro se lee en diagonal (safe arriba-izq, máximo alcance abajo-der) en vez de linealmente. Es defendible (las dos opciones «purgar» quedan agrupadas en la fila inferior, y «purgar organización» lleva `border-2` + botón sólido frente a los `btn-outline`), y en móvil §6 sí apila en orden lineal. Sugerencia para build-frontend: valorar columna única ordenada también en desktop, o garantizar que «purgar» nunca quede visualmente contiguo a «reasignar» de forma que invite a un mis-click. No bloqueante.
- [ ] **Menor — sub-confirmación de «Vaciar el espacio» no renderizada y target ambiguo.** §4 sólo materializa la sub-confirmación de «purgar espacio». «Vaciar» es la opción destructiva menos intuitiva (destruye miembros pero conserva el espacio); el contrato dice teclear «el email de la identidad y/o el nombre del espacio». build-frontend debe decidir/fijar explícitamente qué se teclea en la confirmación fuerte de «vaciar» (email vs. nombre de espacio) — el mockup no lo especifica.
- [ ] **Menor — leyenda de escala.** «Purgar espacio» y «purgar org» comparten el mismo rail `bg-error` en la leyenda (§3); el «rojo intenso» / máximo alcance de purgar-org sólo se distingue en la tarjeta (`border-2`), no en la leyenda. Alinear la leyenda con el énfasis de la tarjeta para que la leyenda comunique los 4 niveles distintos.
- [ ] **Menor (a11y) — emoji decorativos.** Algunos emoji en cabeceras de opción (p.ej. «👤 Reasignar», «🧹 Vaciar») van inline sin `aria-hidden`, mientras los SFCs reales marcan consistentemente los emoji decorativos con `aria-hidden="true"`. Replicar esa convención en build-frontend.

## Veredicto

aprobado: `v1-guided-resolution.html` — los 4 findings son menores y se resuelven durante `build-frontend` (TDD); ninguno bloquea la promoción a `to-do/`.
