BUILD 113 – FOTO DE PERFIL CON ACTUALIZACIÓN INMEDIATA

Base:
- BUILD 112.

Validación del comportamiento anterior:
- La foto sí se guardaba en disco y el nombre se actualizaba en la tabla user.
- El JavaScript solo mostraba el mensaje de éxito.
- No actualizaba #load_img ni el avatar de la barra superior.
- El archivo conservaba el nombre original, por lo que la caché del navegador/WebView
  podía seguir mostrando la imagen anterior.

Corrección aplicada:
- action/upload-profile.php
- admin/action/upload-profile.php
  - Cada foto nueva recibe un nombre único:
    profile_<id>_<fecha>_<aleatorio>.<ext>
  - La respuesta ahora es JSON.
  - Se valida sesión, tamaño máximo de 1 MB y MIME real JPG/PNG/GIF.
  - Se usa move_uploaded_file y UPDATE preparado con mysqli.

- view/profile-view.php
- admin/view/profile-view.php
  - Al confirmar el servidor la actualización, la página cambia inmediatamente:
    1. La imagen principal de Perfil (#load_img).
    2. El avatar de la barra móvil.
    3. El avatar del encabezado de escritorio, cuando esté visible.
  - Se añade ?v=Date.now() como protección adicional contra caché.
  - No se requiere recargar la página.

Resultado esperado:
- Seleccionar foto.
- Esperar la confirmación de carga.
- La nueva foto aparece inmediatamente en Perfil y en el avatar superior.

Validación técnica:
- Archivos PHP revisados: 634.
- Errores de sintaxis PHP: 0.

No modificado:
- Permisos del perfil.
- Cambio de contraseña.
- Firebase / FCM / Web Push.
- Menú lateral.
- Base de datos (estructura).
- APK.
