Index: src/main/java/mk/ukim/finki/synergymed/repositories/ClientRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/repositories/ClientRepository.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/repositories/ClientRepository.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -20,3 +20,6 @@
     Optional<Client> findByUsers(User user);
 
+
+
+
 }
Index: src/main/java/mk/ukim/finki/synergymed/repositories/ClientorderRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/repositories/ClientorderRepository.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/repositories/ClientorderRepository.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -3,5 +3,20 @@
 import mk.ukim.finki.synergymed.models.Clientorder;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+
+import java.util.List;
+import java.util.Optional;
 
 public interface ClientorderRepository extends JpaRepository<Clientorder, Integer> {
+
+    List<Clientorder> findAllByClientIdOrderByOrderDateDesc(Integer clientId);
+
+    @Query("""
+           select o
+           from Clientorder o
+             join fetch o.deliveryCompany dc
+             join fetch o.payment p
+           where o.id = :orderId and o.client.id = :clientId
+           """)
+    Optional<Clientorder> findDetailForClient(Integer orderId, Integer clientId);
 }
Index: src/main/java/mk/ukim/finki/synergymed/repositories/ContactinformationRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/repositories/ContactinformationRepository.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/repositories/ContactinformationRepository.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -4,4 +4,11 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.List;
+import java.util.Optional;
+
 public interface ContactinformationRepository extends JpaRepository<Contactinformation, Integer> {
+    List<Contactinformation> findByUser_Id(Integer userId);
+    List<Contactinformation> findByFacility_Id(Integer facilityId);
+    Optional<Contactinformation> findByIdAndUser_Id(Integer id, Integer userId);
+    Optional<Contactinformation> findByIdAndFacility_Id(Integer id, Integer facilityId);
 }
Index: src/main/java/mk/ukim/finki/synergymed/repositories/FacilityRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/repositories/FacilityRepository.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/repositories/FacilityRepository.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -4,4 +4,8 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.List;
+
 public interface FacilityRepository extends JpaRepository<Facility, Integer> {
+    List<Facility> findAllByCompanyId(Integer companyId);
+    boolean existsByCompanyId(Integer companyId);
 }
Index: src/main/java/mk/ukim/finki/synergymed/repositories/InventoryBrandedmedicineRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/repositories/InventoryBrandedmedicineRepository.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/repositories/InventoryBrandedmedicineRepository.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -1,8 +1,51 @@
 package mk.ukim.finki.synergymed.repositories;
 
+import jakarta.persistence.LockModeType;
 import mk.ukim.finki.synergymed.models.InventoryBrandedmedicine;
 import mk.ukim.finki.synergymed.models.InventoryBrandedmedicineId;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Lock;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.query.Param;
+
+import java.util.List;
 
 public interface InventoryBrandedmedicineRepository extends JpaRepository<InventoryBrandedmedicine, InventoryBrandedmedicineId> {
+
+    @Query("""
+       select ibm
+       from InventoryBrandedmedicine ibm
+         join fetch ibm.brandedMedicine bm
+         join fetch bm.manufacturer m
+         join fetch m.company c
+       where ibm.inventory.id = :inventoryId
+       order by ibm.lastChanged desc
+       """)
+    List<InventoryBrandedmedicine> findAllWithMedicineByInventoryId(@Param("inventoryId") Integer inventoryId);
+
+    @Lock(LockModeType.PESSIMISTIC_WRITE)
+    @Query("""
+           select ibm
+           from InventoryBrandedmedicine ibm
+           where ibm.brandedMedicine.id = :bmId
+           order by ibm.quantity desc
+           """)
+    List<InventoryBrandedmedicine> lockAllByMedicineOrderByQuantityDesc(@Param("bmId") Integer bmId);
+
+    @Lock(LockModeType.PESSIMISTIC_WRITE)
+    @Query("""
+       select ibm
+       from InventoryBrandedmedicine ibm
+         join ibm.inventory inv
+         join inv.facility fac
+       where ibm.brandedMedicine.id = :bmId
+         and exists (
+             select 1 from Pharmacy p
+             where p.id = fac.company.id
+         )
+       order by ibm.quantity desc
+       """)
+    List<InventoryBrandedmedicine> lockAllByMedicineInPharmacies(@Param("bmId") Integer bmId);
+
 }
Index: src/main/java/mk/ukim/finki/synergymed/repositories/InventoryRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/repositories/InventoryRepository.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/repositories/InventoryRepository.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -4,4 +4,8 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.Optional;
+
 public interface InventoryRepository extends JpaRepository<Inventory, Integer> {
+    Optional<Inventory> findByFacilityId(Integer facilityId);
+    void deleteByFacilityId(Integer facilityId);
 }
Index: src/main/java/mk/ukim/finki/synergymed/repositories/PrescriptionRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/repositories/PrescriptionRepository.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/repositories/PrescriptionRepository.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -4,4 +4,7 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.List;
+
 public interface PrescriptionRepository extends JpaRepository<Prescription, Integer> {
+    List<Prescription> findByClient_IdOrderByIssuedAtDesc(Integer clientId);
 }
Index: src/main/java/mk/ukim/finki/synergymed/repositories/SensitiveclientdataRepository.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/repositories/SensitiveclientdataRepository.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/repositories/SensitiveclientdataRepository.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -4,4 +4,11 @@
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.List;
+import java.util.Optional;
+
 public interface SensitiveclientdataRepository extends JpaRepository<Sensitiveclientdata, Integer> {
+    Optional<Sensitiveclientdata> findFirstByClient_IdOrderByIdDesc(Integer clientId);
+    boolean existsByClient_Id(Integer clientId);
+    List<Sensitiveclientdata> findByVerificationStatusOrderByIdAsc(String verificationStatus);
+    Optional<Sensitiveclientdata> findById(Integer id);
 }
Index: src/main/java/mk/ukim/finki/synergymed/security/JwtAuthFilter.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/security/JwtAuthFilter.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/security/JwtAuthFilter.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -3,4 +3,5 @@
 import jakarta.servlet.FilterChain;
 import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
@@ -33,39 +34,56 @@
     }
 
+    private String tokenFromHeader(HttpServletRequest req) {
+        String h = req.getHeader("Authorization");
+        return (h != null && h.startsWith("Bearer ")) ? h.substring(7) : null;
+    }
+
+    private String tokenFromCookie(HttpServletRequest req, String name) {
+        Cookie[] cookies = req.getCookies();
+        if (cookies == null) return null;
+        for (Cookie c : cookies) {
+            if (name.equals(c.getName())) return c.getValue();
+        }
+        return null;
+    }
+
     @Override
-    protected void doFilterInternal(@NonNull HttpServletRequest req,
-                                    @NonNull HttpServletResponse res,
-                                    @NonNull FilterChain chain)
-            throws ServletException, IOException {
+    protected void doFilterInternal(
+            @NonNull HttpServletRequest request,
+            @NonNull HttpServletResponse response,
+            @NonNull FilterChain chain
+    ) throws ServletException, IOException {
 
-        String header = req.getHeader("Authorization");
-        if (header != null && header.startsWith("Bearer ")) {
-            String token = header.substring(7);
+        // If already authenticated, continue
+        if (SecurityContextHolder.getContext().getAuthentication() != null) {
+            chain.doFilter(request, response);
+            return;
+        }
+
+        String token = tokenFromHeader(request);
+        if (token == null) token = tokenFromCookie(request, "AUTH");
+
+        if (token != null) {
             try {
-                var jws = jwtService.parse(token);
+                var jws = jwtService.parse(token); // validates signature + exp
                 var claims = jws.getPayload();
+                String username = claims.getSubject();
+                String jti = claims.getId();
 
-                // check if token is blacklisted
-                String jti = claims.getId();
-                if (jti != null && tokenBlacklistService.contains(jti)) {
-                    res.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Token has been revoked");
-                    return; // stop filter chain
+                if (username != null && !tokenBlacklistService.contains(jti)) {
+                    UserDetails user = userDetailsService.loadUserByUsername(username);
+                    if (user != null) {
+                        UsernamePasswordAuthenticationToken auth =
+                                new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities());
+                        auth.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
+                        SecurityContextHolder.getContext().setAuthentication(auth);
+                    }
                 }
-
-                var username = claims.getSubject();
-                if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
-                    UserDetails ud = userDetailsService.loadUserByUsername(username);
-                    var auth = new UsernamePasswordAuthenticationToken(ud, null, ud.getAuthorities());
-                    auth.setDetails(new WebAuthenticationDetailsSource().buildDetails(req));
-                    SecurityContextHolder.getContext().setAuthentication(auth);
-                }
-
-            } catch (Exception e) {
-                // invalid/expired token -> block request
-                res.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Invalid or expired token");
-                return;
+            } catch (Exception ignore) {
+                // invalid/expired/blacklisted → anonymous
             }
         }
-        chain.doFilter(req, res);
+
+        chain.doFilter(request, response);
     }
 }
Index: src/main/java/mk/ukim/finki/synergymed/service/ClientOrderService.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/ClientOrderService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/ClientOrderService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,11 @@
+package mk.ukim.finki.synergymed.service;
+
+import mk.ukim.finki.synergymed.models.Clientorder;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface ClientOrderService {
+    List<Clientorder> findAllForClient(Integer clientId);
+    Optional<Clientorder> findByIdForClient(Integer orderId, Integer clientId);
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/ClientService.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/ClientService.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/service/ClientService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -11,3 +11,6 @@
     Client findClientById(Integer clientId);
     List<Client> findAll();
+
+    boolean isVerified(Integer userId);
+
 }
Index: src/main/java/mk/ukim/finki/synergymed/service/ContactInformationService.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/ContactInformationService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/ContactInformationService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,20 @@
+package mk.ukim.finki.synergymed.service;
+
+
+import mk.ukim.finki.synergymed.models.Contactinformation;
+
+import java.util.List;
+
+public interface ContactInformationService {
+    List<Contactinformation> listForUser(Integer userId);
+    Contactinformation createForUser(Integer userId, String phone, String address);
+    Contactinformation updateForUser(Integer contactId, Integer userId, String phone, String address);
+    void deleteForUser(Integer contactId, Integer userId);
+
+    // Facility-scoped
+    List<Contactinformation> listForFacility(Integer facilityId);
+    Contactinformation createForFacility(Integer facilityId, String phone, String address);
+    Contactinformation updateForFacility(Integer contactId, Integer facilityId, String phone, String address);
+    void deleteForFacility(Integer contactId, Integer facilityId);
+}
+
Index: src/main/java/mk/ukim/finki/synergymed/service/FacilityService.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/FacilityService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/FacilityService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,19 @@
+package mk.ukim.finki.synergymed.service;
+
+import mk.ukim.finki.synergymed.models.Facility;
+import mk.ukim.finki.synergymed.models.InventoryBrandedmedicine;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface FacilityService {
+    Optional<Facility> findById(Integer id);
+    List<Facility> findAllByCompany(Integer companyId);
+    List<Facility> findAll();
+    Facility create(Integer companyId, String facilityName, String code);
+    Facility update(Integer id, String facilityName, String code);
+    void delete(Integer id);
+
+    List<InventoryBrandedmedicine> listInventoryItems(Integer facilityId);
+
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/InventoryService.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/InventoryService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/InventoryService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,14 @@
+package mk.ukim.finki.synergymed.service;
+
+import mk.ukim.finki.synergymed.models.Facility;
+import mk.ukim.finki.synergymed.models.Inventory;
+
+import java.util.List;
+import java.util.Optional;
+
+
+public interface InventoryService {
+    Optional<Inventory> findByFacilityId(Integer facilityId);
+    Inventory createFor(Facility facility);
+    void deleteForFacility(Integer facilityId);
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/PrescriptionService.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/PrescriptionService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/PrescriptionService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,9 @@
+package mk.ukim.finki.synergymed.service;
+
+import mk.ukim.finki.synergymed.models.Prescription;
+
+import java.util.List;
+
+public interface PrescriptionService {
+    List<Prescription> listForClient(Integer clientId);
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/SensitiveClientDataService.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/SensitiveClientDataService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/SensitiveClientDataService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,13 @@
+package mk.ukim.finki.synergymed.service;
+
+import mk.ukim.finki.synergymed.models.Sensitiveclientdata;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Optional;
+
+public interface SensitiveClientDataService {
+    Sensitiveclientdata applyOrUpdate(Integer clientId, String embg, MultipartFile portrait) throws IOException;
+
+    Optional<Sensitiveclientdata> latestForClient(Integer clientId);
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/VerificationReviewService.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/VerificationReviewService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/VerificationReviewService.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,13 @@
+package mk.ukim.finki.synergymed.service;
+
+import mk.ukim.finki.synergymed.models.Sensitiveclientdata;
+
+import java.util.List;
+import java.util.Optional;
+
+public interface VerificationReviewService {
+    List<Sensitiveclientdata> listPending();
+    Optional<Sensitiveclientdata> get(Integer id);
+    void approve(Integer id);
+    void deny(Integer id);
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/impl/ClientOrderServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/impl/ClientOrderServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/impl/ClientOrderServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,32 @@
+// mk/ukim/finki/synergymed/service/impl/ClientOrderServiceImpl.java
+package mk.ukim.finki.synergymed.service.impl;
+
+import mk.ukim.finki.synergymed.models.Clientorder;
+import mk.ukim.finki.synergymed.repositories.ClientorderRepository;
+import mk.ukim.finki.synergymed.service.ClientOrderService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+@Transactional(readOnly = true)
+public class ClientOrderServiceImpl implements ClientOrderService {
+
+    private final ClientorderRepository repo;
+
+    public ClientOrderServiceImpl(ClientorderRepository repo) {
+        this.repo = repo;
+    }
+
+    @Override
+    public List<Clientorder> findAllForClient(Integer clientId) {
+        return repo.findAllByClientIdOrderByOrderDateDesc(clientId);
+    }
+
+    @Override
+    public Optional<Clientorder> findByIdForClient(Integer orderId, Integer clientId) {
+        return repo.findDetailForClient(orderId, clientId);
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/impl/ClientServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/impl/ClientServiceImpl.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/service/impl/ClientServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -37,3 +37,9 @@
         return clientRepository.findAll();
     }
+
+    public boolean isVerified(Integer userId) {
+        return clientRepository.findById(userId)
+                .map(c -> Boolean.TRUE.equals(c.getIsVerified()))
+                .orElse(false);
+    }
 }
Index: src/main/java/mk/ukim/finki/synergymed/service/impl/ContactInformationServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/impl/ContactInformationServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/impl/ContactInformationServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,92 @@
+package mk.ukim.finki.synergymed.service.impl;
+
+import jakarta.persistence.EntityNotFoundException;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.synergymed.models.Contactinformation;
+import mk.ukim.finki.synergymed.models.Facility;
+import mk.ukim.finki.synergymed.models.User;
+import mk.ukim.finki.synergymed.repositories.ContactinformationRepository;
+import mk.ukim.finki.synergymed.repositories.FacilityRepository;
+import mk.ukim.finki.synergymed.repositories.UserRepository;
+import mk.ukim.finki.synergymed.service.ContactInformationService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@Transactional
+@RequiredArgsConstructor
+public class ContactInformationServiceImpl implements ContactInformationService {
+
+    private final ContactinformationRepository repo;
+    private final UserRepository userRepo;
+    private final FacilityRepository facilityRepo;
+
+    // User-scoped
+    @Override @Transactional(readOnly = true)
+    public List<Contactinformation> listForUser(Integer userId) {
+        return repo.findByUser_Id(userId);
+    }
+
+    @Override
+    public Contactinformation createForUser(Integer userId, String phone, String address) {
+        User user = userRepo.findById(userId).orElseThrow(() -> new EntityNotFoundException("User not found"));
+        Contactinformation ci = new Contactinformation();
+        ci.setUser(user);
+        ci.setFacility(null);
+        ci.setPhone(phone);
+        ci.setAddress(address);
+        return repo.save(ci);
+    }
+
+    @Override
+    public Contactinformation updateForUser(Integer contactId, Integer userId, String phone, String address) {
+        Contactinformation ci = repo.findByIdAndUser_Id(contactId, userId)
+                .orElseThrow(() -> new EntityNotFoundException("Contact not found for user"));
+        ci.setPhone(phone);
+        ci.setAddress(address);
+        return repo.save(ci);
+    }
+
+    @Override
+    public void deleteForUser(Integer contactId, Integer userId) {
+        Contactinformation ci = repo.findByIdAndUser_Id(contactId, userId)
+                .orElseThrow(() -> new EntityNotFoundException("Contact not found for user"));
+        repo.delete(ci);
+    }
+
+    // Facility-scoped
+    @Override @Transactional(readOnly = true)
+    public List<Contactinformation> listForFacility(Integer facilityId) {
+        return repo.findByFacility_Id(facilityId);
+    }
+
+    @Override
+    public Contactinformation createForFacility(Integer facilityId, String phone, String address) {
+        Facility facility = facilityRepo.findById(facilityId)
+                .orElseThrow(() -> new EntityNotFoundException("Facility not found"));
+        Contactinformation ci = new Contactinformation();
+        ci.setFacility(facility);
+        ci.setUser(null);
+        ci.setPhone(phone);
+        ci.setAddress(address);
+        return repo.save(ci);
+    }
+
+    @Override
+    public Contactinformation updateForFacility(Integer contactId, Integer facilityId, String phone, String address) {
+        Contactinformation ci = repo.findByIdAndFacility_Id(contactId, facilityId)
+                .orElseThrow(() -> new EntityNotFoundException("Contact not found for facility"));
+        ci.setPhone(phone);
+        ci.setAddress(address);
+        return repo.save(ci);
+    }
+
+    @Override
+    public void deleteForFacility(Integer contactId, Integer facilityId) {
+        Contactinformation ci = repo.findByIdAndFacility_Id(contactId, facilityId)
+                .orElseThrow(() -> new EntityNotFoundException("Contact not found for facility"));
+        repo.delete(ci);
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/impl/FacilityServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/impl/FacilityServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/impl/FacilityServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,87 @@
+package mk.ukim.finki.synergymed.service.impl;
+
+import jakarta.transaction.Transactional;
+import mk.ukim.finki.synergymed.models.*;
+import mk.ukim.finki.synergymed.repositories.FacilityRepository;
+import mk.ukim.finki.synergymed.repositories.InventoryBrandedmedicineRepository;
+import mk.ukim.finki.synergymed.service.CompanyService;
+import mk.ukim.finki.synergymed.service.FacilityService;
+import mk.ukim.finki.synergymed.service.InventoryService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+@Transactional
+public class FacilityServiceImpl implements FacilityService {
+
+    private final FacilityRepository facilityRepository;
+
+    private final InventoryBrandedmedicineRepository inventoryBrandedmedicineRepository;
+
+    private final CompanyService companyService;
+    private final InventoryService inventoryService;
+
+
+    public FacilityServiceImpl(FacilityRepository facilityRepository,
+                               CompanyService companyService,
+                               InventoryService inventoryService,
+                               InventoryBrandedmedicineRepository inventoryBrandedmedicineRepository) {
+        this.facilityRepository = facilityRepository;
+        this.companyService = companyService;
+        this.inventoryService = inventoryService;
+        this.inventoryBrandedmedicineRepository = inventoryBrandedmedicineRepository;
+    }
+
+    @Transactional
+    @Override
+    public Optional<Facility> findById(Integer id) {
+        return facilityRepository.findById(id);
+    }
+
+    @Transactional
+    @Override
+    public List<Facility> findAllByCompany(Integer companyId) {
+        return facilityRepository.findAllByCompanyId(companyId);
+    }
+
+    @Transactional
+    @Override
+    public List<Facility> findAll() {
+        return facilityRepository.findAll();
+    }
+
+    @Override
+    public Facility create(Integer companyId, String facilityName, String code) {
+        Company company = companyService.findById(companyId).orElseThrow();
+        Facility f = new Facility();
+        f.setCompany(company);
+        f.setFacilityName(facilityName);
+        f.setCode(code);
+        Facility saved = facilityRepository.save(f);
+        inventoryService.createFor(saved);
+        return saved;
+    }
+
+    @Override
+    public Facility update(Integer id, String facilityName, String code) {
+        Facility f = facilityRepository.findById(id).orElseThrow();
+        f.setFacilityName(facilityName);
+        f.setCode(code);
+        return facilityRepository.save(f);
+    }
+
+    @Override
+    public void delete(Integer id) {
+        inventoryService.deleteForFacility(id);
+        facilityRepository.deleteById(id);
+    }
+
+    @Override
+    @Transactional
+    public List<InventoryBrandedmedicine> listInventoryItems(Integer facilityId) {
+        Inventory inv = inventoryService.findByFacilityId(facilityId).orElseThrow();
+        return inventoryBrandedmedicineRepository.findAllWithMedicineByInventoryId(inv.getId());
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/impl/InventoryServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/impl/InventoryServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/impl/InventoryServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,42 @@
+package mk.ukim.finki.synergymed.service.impl;
+
+import jakarta.transaction.Transactional;
+import mk.ukim.finki.synergymed.models.Facility;
+import mk.ukim.finki.synergymed.models.Inventory;
+import mk.ukim.finki.synergymed.repositories.InventoryRepository;
+import mk.ukim.finki.synergymed.service.InventoryService;
+import org.springframework.stereotype.Service;
+
+import java.util.Optional;
+
+@Service
+@Transactional
+public class InventoryServiceImpl implements InventoryService {
+
+    private final InventoryRepository inventoryRepository;
+
+    public InventoryServiceImpl(InventoryRepository inventoryRepository) {
+        this.inventoryRepository = inventoryRepository;
+    }
+
+    @Transactional
+    @Override
+    public Optional<Inventory> findByFacilityId(Integer facilityId) {
+        return inventoryRepository.findByFacilityId(facilityId);
+    }
+
+    @Override
+    public Inventory createFor(Facility facility) {
+        return inventoryRepository.findByFacilityId(facility.getId())
+                .orElseGet(() -> {
+                    Inventory inv = new Inventory();
+                    inv.setFacility(facility);
+                    return inventoryRepository.save(inv);
+                });
+    }
+
+    @Override
+    public void deleteForFacility(Integer facilityId) {
+        inventoryRepository.deleteByFacilityId(facilityId);
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/impl/PaymentServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/impl/PaymentServiceImpl.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/service/impl/PaymentServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -11,4 +11,5 @@
 import java.math.BigDecimal;
 import java.time.LocalDate;
+import java.util.List;
 
 @Service
@@ -22,4 +23,5 @@
     private final PaymentmethodRepository paymentmethodRepo;
     private final DeliverycompanyRepository deliveryRepo;
+    private final InventoryBrandedmedicineRepository inventoryBrandedmedicineRepository;
 
     @Override
@@ -49,5 +51,5 @@
         order.setPayment(payment);
         order.setOrderDate(LocalDate.now());
-        order.setExpectedArrivalDate(LocalDate.now().plusDays(3));
+        order.setExpectedArrivalDate(LocalDate.now().plusDays(7));
         order.setStatus("PROCESSING");
         order.setTotalPrice(total.intValue());
@@ -65,4 +67,29 @@
             order.getItems().add(line);
         });
+        for (ClientorderBrandedmedicine line : order.getItems()) {
+            int remaining = line.getQuantity();
+            Integer bmId = line.getBrandedMedicine().getId();
+
+            List<InventoryBrandedmedicine> facilities =
+                    inventoryBrandedmedicineRepository.lockAllByMedicineInPharmacies(bmId);
+
+            for (InventoryBrandedmedicine ibm : facilities) {
+                if (remaining <= 0) break;
+                int take = Math.min(ibm.getQuantity(), remaining);
+                if (take <= 0) continue;
+
+                ibm.setQuantity(ibm.getQuantity() - take);
+                ibm.setLastChanged(LocalDate.now());
+                inventoryBrandedmedicineRepository.save(ibm);
+
+                remaining -= take;
+
+            }
+
+            if (remaining > 0) {
+                throw new IllegalStateException("Insufficient stock for medicine id=" + bmId);
+            }
+        }
+        order.setStatus("во тек");
 
         orderRepo.save(order);
Index: src/main/java/mk/ukim/finki/synergymed/service/impl/PrescriptionServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/impl/PrescriptionServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/impl/PrescriptionServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,23 @@
+package mk.ukim.finki.synergymed.service.impl;
+
+import jakarta.transaction.Transactional;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.synergymed.models.Prescription;
+import mk.ukim.finki.synergymed.repositories.PrescriptionRepository;
+import mk.ukim.finki.synergymed.service.PrescriptionService;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@Transactional
+@RequiredArgsConstructor
+public class PrescriptionServiceImpl implements PrescriptionService {
+
+    private final PrescriptionRepository prescriptionRepository;
+
+    @Override
+    public List<Prescription> listForClient(Integer clientId) {
+        return prescriptionRepository.findByClient_IdOrderByIssuedAtDesc(clientId);
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/impl/SensitiveClientDataServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/impl/SensitiveClientDataServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/impl/SensitiveClientDataServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,100 @@
+package mk.ukim.finki.synergymed.service.impl;
+
+import jakarta.persistence.EntityNotFoundException;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.synergymed.models.Client;
+import mk.ukim.finki.synergymed.models.Sensitiveclientdata;
+import mk.ukim.finki.synergymed.repositories.ClientRepository;
+import mk.ukim.finki.synergymed.repositories.SensitiveclientdataRepository;
+import mk.ukim.finki.synergymed.service.SensitiveClientDataService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.nio.file.*;
+import java.util.Locale;
+import java.util.Optional;
+import java.util.UUID;
+
+@Service
+@RequiredArgsConstructor
+@Transactional
+public class SensitiveClientDataServiceImpl implements SensitiveClientDataService {
+
+    private final SensitiveclientdataRepository repo;
+    private final ClientRepository clientRepo;
+
+    @Value("${app.upload.portraits-dir:uploads/images/portraits/}")
+    private String uploadDir;
+
+    private static final String[] ALLOWED = {"jpg","jpeg","png","webp","gif"};
+    private static final long MAX_SIZE = 5L * 1024 * 1024;
+
+    @Override
+    public Sensitiveclientdata applyOrUpdate(Integer clientId, String embg, MultipartFile portrait) throws IOException {
+        if (embg == null || embg.isBlank()) throw new IllegalArgumentException("EMBG is required");
+        if (portrait == null || portrait.isEmpty()) throw new IllegalArgumentException("Portrait photo is required");
+
+        Client client = clientRepo.findById(clientId).orElseThrow(() -> new EntityNotFoundException("Client not found"));
+
+        validateImage(portrait);
+        Path base = ensureUploadPath();
+        String name = Optional.ofNullable(portrait.getOriginalFilename()).orElse("portrait");
+        String ext = getExt(name);
+        String storedName = "portrait_" + clientId + "_" + UUID.randomUUID() + "." + ext;
+        Path dest = base.resolve(storedName);
+        Files.copy(portrait.getInputStream(), dest, StandardCopyOption.REPLACE_EXISTING);
+
+        Optional<Sensitiveclientdata> existingOpt = repo.findFirstByClient_IdOrderByIdDesc(clientId);
+        Sensitiveclientdata row = existingOpt.orElseGet(Sensitiveclientdata::new);
+
+        if (existingOpt.isPresent()) {
+            deletePhysicalIfExists(existingOpt.get().getPortraitPhoto());
+        }
+
+        row.setClient(client);
+        row.setPharmacist(null);
+        row.setEmbg(embg.trim());
+        row.setPortraitPhoto(storedName);
+        row.setVerificationStatus("во тек");
+
+        return repo.save(row);
+    }
+
+    @Override
+    @Transactional(readOnly = true)
+    public Optional<Sensitiveclientdata> latestForClient(Integer clientId) {
+        return repo.findFirstByClient_IdOrderByIdDesc(clientId);
+    }
+
+    /* Helpers */
+    private Path ensureUploadPath() throws IOException {
+        Path dir = Paths.get(uploadDir);
+        if (!Files.exists(dir)) Files.createDirectories(dir);
+        return dir;
+    }
+
+    private void validateImage(MultipartFile file) throws IOException {
+        if (file.getSize() > MAX_SIZE) throw new IOException("File exceeds 5MB");
+        String original = file.getOriginalFilename();
+        if (original == null || original.isBlank()) throw new IOException("Invalid filename");
+        String ext = getExt(original);
+        boolean ok = java.util.Arrays.stream(ALLOWED).anyMatch(a -> a.equalsIgnoreCase(ext));
+        if (!ok) throw new IOException("Not an allowed image type");
+        String ct = file.getContentType();
+        if (ct == null || !ct.startsWith("image/")) throw new IOException("Not an image");
+    }
+
+    private String getExt(String fn) {
+        int i = fn.lastIndexOf('.');
+        return (i == -1) ? "jpg" : fn.substring(i+1).toLowerCase(Locale.ROOT);
+    }
+
+    private void deletePhysicalIfExists(String storedName) throws IOException {
+        if (storedName == null || storedName.isBlank()) return;
+        Path p = Paths.get(uploadDir).resolve(Paths.get(storedName).getFileName().toString());
+        if (Files.exists(p)) Files.delete(p);
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/service/impl/VerificationReviewServiceImpl.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/service/impl/VerificationReviewServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/service/impl/VerificationReviewServiceImpl.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,55 @@
+// VerificationReviewServiceImpl.java
+package mk.ukim.finki.synergymed.service.impl;
+
+import jakarta.persistence.EntityNotFoundException;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.synergymed.models.Client;
+import mk.ukim.finki.synergymed.models.Sensitiveclientdata;
+import mk.ukim.finki.synergymed.repositories.ClientRepository;
+import mk.ukim.finki.synergymed.repositories.SensitiveclientdataRepository;
+import mk.ukim.finki.synergymed.service.VerificationReviewService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+@RequiredArgsConstructor
+@Transactional
+public class VerificationReviewServiceImpl implements VerificationReviewService {
+
+    private final SensitiveclientdataRepository sensitiveRepo;
+    private final ClientRepository clientRepo;
+
+    @Override @Transactional(readOnly = true)
+    public List<Sensitiveclientdata> listPending() {
+        return sensitiveRepo.findByVerificationStatusOrderByIdAsc("во тек");
+    }
+
+    @Override @Transactional(readOnly = true)
+    public Optional<Sensitiveclientdata> get(Integer id) {
+        return sensitiveRepo.findById(id);
+    }
+
+    @Override
+    public void approve(Integer id) {
+        Sensitiveclientdata row = sensitiveRepo.findById(id)
+                .orElseThrow(() -> new EntityNotFoundException("Application not found"));
+        row.setVerificationStatus("одобрена");
+        sensitiveRepo.save(row);
+        Integer clientId = row.getClient().getId();
+        Client client = clientRepo.findById(clientId)
+                .orElseThrow(() -> new EntityNotFoundException("Client not found"));
+        client.setIsVerified(Boolean.TRUE);
+        clientRepo.save(client);
+    }
+
+    @Override
+    public void deny(Integer id) {
+        Sensitiveclientdata row = sensitiveRepo.findById(id)
+                .orElseThrow(() -> new EntityNotFoundException("Application not found"));
+        row.setVerificationStatus("одбиена");
+        sensitiveRepo.save(row);
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/web/ClientOrderController.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/web/ClientOrderController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/web/ClientOrderController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,41 @@
+package mk.ukim.finki.synergymed.web;
+
+import jakarta.servlet.http.HttpSession;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.synergymed.models.Clientorder;
+import mk.ukim.finki.synergymed.models.User;
+import mk.ukim.finki.synergymed.service.ClientOrderService;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Controller
+@RequiredArgsConstructor
+public class ClientOrderController {
+
+    private final ClientOrderService orderService;
+
+    @GetMapping("/orders")
+    public String myOrders(HttpSession session, Model model) {
+        User user = (User) session.getAttribute("user");
+        if (user == null) return "redirect:/login";
+        List<Clientorder> orders = orderService.findAllForClient(user.getId());
+        model.addAttribute("orders", orders);
+        return "orders";
+    }
+
+    @GetMapping("/orders/{orderId}")
+    public String myOrderDetail(@PathVariable Integer orderId,
+                                HttpSession session,
+                                Model model) {
+        User user = (User) session.getAttribute("user");
+        if (user == null) return "redirect:/login";
+        Clientorder order = orderService.findByIdForClient(orderId, user.getId()).orElseThrow();
+        model.addAttribute("order", order);
+        model.addAttribute("payment", order.getPayment());
+        model.addAttribute("deliveryCompany", order.getDeliveryCompany());
+        return "order-detail";
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/web/FacilityController.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/web/FacilityController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/web/FacilityController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,148 @@
+package mk.ukim.finki.synergymed.web;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.synergymed.models.Company;
+import mk.ukim.finki.synergymed.models.Facility;
+import mk.ukim.finki.synergymed.models.Contactinformation;
+import mk.ukim.finki.synergymed.service.CompanyService;
+import mk.ukim.finki.synergymed.service.FacilityService;
+import mk.ukim.finki.synergymed.service.ContactInformationService;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Controller
+@RequestMapping("/companies/{companyId}/facilities")
+@RequiredArgsConstructor
+public class FacilityController {
+
+    private final CompanyService companyService;
+    private final FacilityService facilityService;
+    private final ContactInformationService contactInformationService;
+
+    // Grid of facilities for a company
+    @GetMapping
+    public String index(@PathVariable Integer companyId, Model model) {
+        Company company = companyService.findById(companyId).orElseThrow();
+        List<Facility> facilities = facilityService.findAllByCompany(companyId);
+        model.addAttribute("company", company);
+        model.addAttribute("facilities", facilities);
+        return "facilities";
+    }
+
+    @GetMapping("/new")
+    public String createForm(@PathVariable Integer companyId, Model model) {
+        Company company = companyService.findById(companyId).orElseThrow();
+        model.addAttribute("company", company);
+        model.addAttribute("mode", "create");
+        return "facility-form";
+    }
+
+    @PostMapping
+    public String create(@PathVariable Integer companyId,
+                         @RequestParam String facilityName,
+                         @RequestParam String code,
+                         org.springframework.web.servlet.mvc.support.RedirectAttributes ra) {
+        Facility saved = facilityService.create(companyId, facilityName, code);
+        ra.addFlashAttribute("message", "Facility created: " + saved.getFacilityName());
+        return "redirect:/companies/" + companyId + "/facilities";
+    }
+
+    @GetMapping("/{id}/edit")
+    public String editForm(@PathVariable Integer companyId,
+                           @PathVariable Integer id,
+                           Model model) {
+        Company company = companyService.findById(companyId).orElseThrow();
+        Facility facility = facilityService.findById(id).orElseThrow();
+        model.addAttribute("company", company);
+        model.addAttribute("facility", facility);
+        model.addAttribute("mode", "edit");
+        return "facility-form";
+    }
+
+    @PostMapping("/{id}/update")
+    public String update(@PathVariable Integer companyId,
+                         @PathVariable Integer id,
+                         @RequestParam String facilityName,
+                         @RequestParam String code,
+                         org.springframework.web.servlet.mvc.support.RedirectAttributes ra) {
+        Facility updated = facilityService.update(id, facilityName, code);
+        ra.addFlashAttribute("message", "Facility updated: " + updated.getFacilityName());
+        return "redirect:/companies/" + companyId + "/facilities";
+    }
+
+    @PostMapping("/{id}/delete")
+    public String delete(@PathVariable Integer companyId,
+                         @PathVariable Integer id,
+                         org.springframework.web.servlet.mvc.support.RedirectAttributes ra) {
+        facilityService.delete(id);
+        ra.addFlashAttribute("message", "Facility deleted");
+        return "redirect:/companies/" + companyId + "/facilities";
+    }
+
+    @GetMapping("/{id}/inventory")
+    public String inventory(@PathVariable Integer companyId,
+                            @PathVariable Integer id,
+                            Model model) {
+        var company = companyService.findById(companyId).orElseThrow();
+        var facility = facilityService.findById(id).orElseThrow();
+        var items = facilityService.listInventoryItems(id);
+        model.addAttribute("company", company);
+        model.addAttribute("facility", facility);
+        model.addAttribute("items", items);
+        return "facility-inventory";
+    }
+
+    // Contact Info: show/create/update/delete (single contact)
+    @GetMapping("/{id}/contacts")
+    public String facilityContacts(@PathVariable Integer companyId,
+                                   @PathVariable Integer id,
+                                   Model model) {
+        var company = companyService.findById(companyId).orElseThrow();
+        var facility = facilityService.findById(id).orElseThrow();
+        var list = contactInformationService.listForFacility(id);
+        Contactinformation contact = list.isEmpty() ? null : list.get(0);
+        model.addAttribute("company", company);
+        model.addAttribute("facility", facility);
+        model.addAttribute("contact", contact);
+        return "facility-contacts";
+    }
+
+    @GetMapping("/{id}/contacts/new")
+    public String newFacilityContact(@PathVariable Integer companyId,
+                                     @PathVariable Integer id,
+                                     Model model) {
+        var company = companyService.findById(companyId).orElseThrow();
+        var facility = facilityService.findById(id).orElseThrow();
+        model.addAttribute("company", company);
+        model.addAttribute("facility", facility);
+        model.addAttribute("context", "facility");
+        model.addAttribute("postUrl", "/companies/" + companyId + "/facilities/" + id + "/contacts/save");
+        model.addAttribute("backUrl", "/companies/" + companyId + "/facilities/" + id + "/contacts");
+        return "contact-form";
+    }
+
+    @PostMapping("/{id}/contacts/save")
+    public String saveFacilityContact(@PathVariable Integer companyId,
+                                      @PathVariable Integer id,
+                                      @RequestParam(required = false) Integer contactId,
+                                      @RequestParam(required = false) String phone,
+                                      @RequestParam(required = false) String address) {
+        if (contactId == null) {
+            contactInformationService.createForFacility(id, phone, address);
+        } else {
+            contactInformationService.updateForFacility(contactId, id, phone, address);
+        }
+        return "redirect:/companies/" + companyId + "/facilities/" + id + "/contacts";
+    }
+
+    @PostMapping("/{id}/contacts/delete")
+    public String deleteFacilityContact(@PathVariable Integer companyId,
+                                        @PathVariable Integer id,
+                                        @RequestParam Integer contactId) {
+        contactInformationService.deleteForFacility(contactId, id);
+        return "redirect:/companies/" + companyId + "/facilities/" + id + "/contacts";
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/web/GlobalModelAttributes.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/web/GlobalModelAttributes.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/web/GlobalModelAttributes.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,12 @@
+package mk.ukim.finki.synergymed.web;
+
+@org.springframework.web.bind.annotation.ControllerAdvice
+public class GlobalModelAttributes {
+    @org.springframework.web.bind.annotation.ModelAttribute
+    public void addSessionUser(org.springframework.ui.Model model, jakarta.servlet.http.HttpSession session) {
+        Object u = session.getAttribute("user");
+        Object name = session.getAttribute("username");
+        if (name != null) model.addAttribute("username", name);
+        if (u != null) model.addAttribute("user", u);
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/web/PaymentController.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/web/PaymentController.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/web/PaymentController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -35,5 +35,4 @@
         model.addAttribute("methods", paymentMethodService.findAll());
         model.addAttribute("deliveryCompanies", deliveryCompanyService.findAll());
-
         Client client = getClientFromSession(session);
         Shoppingcart cart = shoppingCartService.getOrCreateCart(client);
@@ -43,4 +42,6 @@
         return "payment";
     }
+
+
 
     @PostMapping
Index: src/main/java/mk/ukim/finki/synergymed/web/ProfileController.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/web/ProfileController.java	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/java/mk/ukim/finki/synergymed/web/ProfileController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -1,14 +1,15 @@
 package mk.ukim.finki.synergymed.web;
 
+import jakarta.servlet.http.HttpSession;
 import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.synergymed.models.Contactinformation;
 import mk.ukim.finki.synergymed.models.Healthprofile;
 import mk.ukim.finki.synergymed.models.User;
-import mk.ukim.finki.synergymed.service.HealthProfileService;
+import mk.ukim.finki.synergymed.service.*;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.*;
 
-import jakarta.servlet.http.HttpSession;
+import java.util.List;
 import java.util.Optional;
 
@@ -19,4 +20,8 @@
 
     private final HealthProfileService healthProfileService;
+    private final ContactInformationService contactInformationService;
+    private final SensitiveClientDataService sensitiveClientDataService;
+    private final PrescriptionService prescriptionService;
+    private final ClientService clientService;
 
     @GetMapping
@@ -24,9 +29,5 @@
         User user = (User) session.getAttribute("user");
         String username = (String) session.getAttribute("username");
-
-        if (user == null || username == null) {
-            return "redirect:/login";
-        }
-
+        if (user == null || username == null) return "redirect:/login";
         model.addAttribute("user", user);
         model.addAttribute("username", username);
@@ -34,16 +35,82 @@
         try {
             Optional<Healthprofile> healthProfile = healthProfileService.getByClientId(user.getId());
-
-            if (healthProfile.isPresent()) {
-                model.addAttribute("healthProfile", healthProfile.get());
-                model.addAttribute("hasHealthProfile", true);
-            } else {
-                model.addAttribute("hasHealthProfile", false);
-            }
+            model.addAttribute("healthProfile", healthProfile.orElse(null));
+            model.addAttribute("hasHealthProfile", healthProfile.isPresent());
         } catch (Exception e) {
             model.addAttribute("hasHealthProfile", false);
         }
-
+        model.addAttribute("activeTab", "profile");
         return "profile";
     }
+
+    // Contact Info tab
+    @GetMapping("/contacts")
+    public String profileContacts(HttpSession session, Model model) {
+        User user = (User) session.getAttribute("user");
+        if (user == null) return "redirect:/login";
+        List<Contactinformation> list = contactInformationService.listForUser(user.getId());
+        Contactinformation contact = list.isEmpty() ? null : list.get(0);
+        model.addAttribute("contact", contact);
+        model.addAttribute("activeTab", "contacts");
+        return "profile-contacts";
+    }
+
+    @GetMapping("/contacts/new")
+    public String newProfileContact(HttpSession session, Model model) {
+        User user = (User) session.getAttribute("user");
+        if (user == null) return "redirect:/login";
+        model.addAttribute("context", "profile");
+        model.addAttribute("postUrl", "/profile/contacts/save");
+        model.addAttribute("backUrl", "/profile/contacts");
+        return "contact-form";
+    }
+
+    @PostMapping("/contacts/save")
+    public String saveProfileContact(@RequestParam(required = false) Integer id,
+                                     @RequestParam(required = false) String phone,
+                                     @RequestParam(required = false) String address,
+                                     HttpSession session) {
+        User user = (User) session.getAttribute("user");
+        if (user == null) return "redirect:/login";
+        if (id == null) {
+            contactInformationService.createForUser(user.getId(), phone, address);
+        } else {
+            contactInformationService.updateForUser(id, user.getId(), phone, address);
+        }
+        return "redirect:/profile/contacts";
+    }
+
+    @PostMapping("/contacts/delete")
+    public String deleteProfileContact(@RequestParam Integer id, HttpSession session) {
+        User user = (User) session.getAttribute("user");
+        if (user == null) return "redirect:/login";
+        contactInformationService.deleteForUser(id, user.getId());
+        return "redirect:/profile/contacts";
+    }
+
+    private boolean isVerified(Integer userId) {
+        return clientService.isVerified(userId);
+    }
+
+    /* GET /profile/prescriptions */
+    @GetMapping("/prescriptions")
+    public String prescriptions(jakarta.servlet.http.HttpSession session,
+                                org.springframework.ui.Model model) {
+        var user = (mk.ukim.finki.synergymed.models.User) session.getAttribute("user");
+        if (user == null) return "redirect:/login";
+        Integer clientId = user.getId(); // Client.id == User.id via @MapsId
+
+        boolean verified = isVerified(clientId);
+        boolean pending = sensitiveClientDataService.latestForClient(clientId)
+                .map(s -> "во тек".equalsIgnoreCase(s.getVerificationStatus()))
+                .orElse(false);
+
+        var rx = verified ? prescriptionService.listForClient(clientId) : java.util.List.of();
+
+        model.addAttribute("activeTab", "prescriptions");
+        model.addAttribute("verified", verified);
+        model.addAttribute("pending", pending);
+        model.addAttribute("prescriptions", rx);
+        return "profile-prescriptions";
+    }
 }
Index: src/main/java/mk/ukim/finki/synergymed/web/SensitiveClientDataController.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/web/SensitiveClientDataController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/web/SensitiveClientDataController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,44 @@
+package mk.ukim.finki.synergymed.web;
+
+import jakarta.servlet.http.HttpSession;
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.synergymed.models.User;
+import mk.ukim.finki.synergymed.service.SensitiveClientDataService;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+@Controller
+@RequestMapping("/profile/verification")
+@RequiredArgsConstructor
+public class SensitiveClientDataController {
+
+    private final SensitiveClientDataService sensitiveService;
+
+    @GetMapping("/apply")
+    public String applyForm(HttpSession session, Model model) {
+        User user = (User) session.getAttribute("user");
+        if (user == null) return "redirect:/login"; // require login [18].
+        model.addAttribute("activeTab", "prescriptions");
+        return "verification-apply";
+    }
+
+    @PostMapping("/apply")
+    public String submitApplication(@RequestParam String embg,
+                                    @RequestParam("portrait") MultipartFile portrait,
+                                    HttpSession session,
+                                    RedirectAttributes ra) {
+        User user = (User) session.getAttribute("user");
+        if (user == null) return "redirect:/login";
+        try {
+            sensitiveService.applyOrUpdate(user.getId(), embg, portrait); // single-row upsert [13].
+            ra.addFlashAttribute("message", "Application submitted. Verification is now pending.");
+        } catch (Exception e) {
+            ra.addFlashAttribute("error", e.getMessage());
+            return "redirect:/profile/verification/apply";
+        }
+        return "redirect:/profile/prescriptions";
+    }
+}
Index: src/main/java/mk/ukim/finki/synergymed/web/VerificationController.java
===================================================================
--- src/main/java/mk/ukim/finki/synergymed/web/VerificationController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/java/mk/ukim/finki/synergymed/web/VerificationController.java	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,48 @@
+package mk.ukim.finki.synergymed.web;
+
+import lombok.RequiredArgsConstructor;
+import mk.ukim.finki.synergymed.models.Sensitiveclientdata;
+import mk.ukim.finki.synergymed.service.VerificationReviewService;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Controller
+@RequestMapping("/admin/verification")
+@RequiredArgsConstructor
+public class VerificationController {
+
+    private final VerificationReviewService reviewService;
+
+    // Grid of pending applications
+    @GetMapping
+    public String list(Model model) {
+        List<Sensitiveclientdata> pending = reviewService.listPending();
+        model.addAttribute("pending", pending);
+        return "verification-list";
+    }
+
+    // Detail page
+    @GetMapping("/{id}")
+    public String detail(@PathVariable Integer id, Model model) {
+        Sensitiveclientdata row = reviewService.get(id).orElseThrow();
+        model.addAttribute("item", row);
+        return "verification-approval";
+    }
+
+    // Approve
+    @PostMapping("/{id}/approve")
+    public String approve(@PathVariable Integer id) {
+        reviewService.approve(id);
+        return "redirect:/admin/verification";
+    }
+
+    // Deny
+    @PostMapping("/{id}/deny")
+    public String deny(@PathVariable Integer id) {
+        reviewService.deny(id);
+        return "redirect:/admin/verification";
+    }
+}
Index: src/main/resources/application.properties
===================================================================
--- src/main/resources/application.properties	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/resources/application.properties	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -2,7 +2,7 @@
 
 # Database connection
-spring.datasource.url=jdbc:postgresql://localhost:5432/synergymed
+spring.datasource.url=jdbc:postgresql://localhost:5432/SynergyMed
 spring.datasource.username=postgres
-spring.datasource.password=postgres
+spring.datasource.password=1234
 spring.jpa.properties.hibernate.default_schema=synergymed
 spring.datasource.driver-class-name=org.postgresql.Driver
Index: src/main/resources/templates/companies.html
===================================================================
--- src/main/resources/templates/companies.html	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/resources/templates/companies.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -111,4 +111,8 @@
 
         .row{display:flex;justify-content:space-between;align-items:center;margin-top:12px}
+
+        /* Clickable card cursor */
+        .clickable { cursor: pointer; }
+
         @media (max-width:560px){.page{padding:16px}}
     </style>
@@ -128,5 +132,7 @@
         <div class="card-body">
             <div class="grid">
-                <div class="company-card" th:each="c : ${companies}">
+                <div class="company-card clickable"
+                     th:each="c : ${companies}"
+                     th:attr="data-href=@{/companies/{id}/facilities(id=${c.id})}">
                     <div class="content">
                         <div class="title" th:text="${c.companyName}">Company Name</div>
@@ -149,4 +155,21 @@
                 </div>
             </div>
+
+            <!-- Click navigation script -->
+            <script>
+                document.addEventListener('DOMContentLoaded', function () {
+                    document.querySelectorAll('.company-card.clickable').forEach(function (card) {
+                        const href = card.getAttribute('data-href');
+                        if (!href) return;
+                        card.addEventListener('click', function () {
+                            window.location.assign(href);
+                        });
+                        // Prevent inner interactive elements from triggering card click
+                        card.querySelectorAll('a, button, input, select, textarea, label, form').forEach(function (el) {
+                            el.addEventListener('click', function (e) { e.stopPropagation(); });
+                        });
+                    });
+                });
+            </script>
         </div>
     </div>
Index: src/main/resources/templates/facilities.html
===================================================================
--- src/main/resources/templates/facilities.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/facilities.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,184 @@
+<!-- templates/facilities.html -->
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title th:text="${'SynergyMed – Facilities'}">SynergyMed – Facilities</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Header styles -->
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+
+    <style>
+        :root {
+            --teal-1:#20b2aa; --teal-2:#48d1cc;
+            --bg:#fefeff; --card:#ffffff;
+            --muted:#6c757d; --text:#1f2937;
+            --shadow:0 20px 40px rgba(0,0,0,0.10);
+            --shadow-sm:0 6px 18px rgba(0,0,0,0.08);
+        }
+        *{margin:0;padding:0;box-sizing:border-box}
+
+        body{
+            font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;
+            min-height:100vh;
+            background:linear-gradient(135deg,#a4ecba 0%,#fefeff 100%);
+            color:var(--text);
+        }
+
+        /* Full-width global header - FIXED STYLING */
+        .site-header{
+            position:sticky;
+            top:0;
+            left:0;
+            right:0;
+            width:100%;
+            border-radius:0;
+            margin:0;
+            z-index:1000;
+            background:white !important;
+            box-shadow:0 2px 10px rgba(0,0,0,0.1);
+        }
+
+        .page{width:100%; max-width:1200px; padding:28px; margin:0 auto}
+
+        /* Card wrapper */
+        .card{
+            background:var(--card);
+            border-radius:18px;
+            box-shadow:var(--shadow);
+            margin-bottom:28px;
+            overflow:hidden;
+        }
+
+        .card-header{
+            background:linear-gradient(135deg,var(--teal-1),var(--teal-2));
+            color:#fff;
+            padding:20px 24px;
+            display:flex; justify-content:space-between; align-items:center;
+            font-size:1.3rem; font-weight:600;
+        }
+
+        .card-body{padding:22px}
+
+        .btn{
+            display:inline-block; border:none; cursor:pointer; text-decoration:none;
+            padding:12px 16px; border-radius:12px; font-weight:600;
+            letter-spacing:.5px; transition:.2s ease;
+        }
+        .btn-primary{
+            background:linear-gradient(135deg,var(--teal-1),var(--teal-2));
+            color:#fff;
+            box-shadow:0 10px 20px rgba(32,178,170,.25);
+        }
+        .btn-primary:hover{transform:translateY(-2px)}
+
+        .grid{
+            display:grid;
+            grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
+            gap:22px;
+        }
+        .company-card{
+            background:var(--card);
+            border-radius:18px;
+            box-shadow:var(--shadow-sm);
+            overflow:hidden;
+            display:flex; flex-direction:column;
+        }
+        .content{padding:16px 18px}
+        .title{font-weight:700;margin:6px 0 2px}
+        .muted{color:var(--muted);font-size:.92rem}
+        .btn-outline{
+            background:#fff;
+            border:2px solid rgba(32,178,170,.25);
+            color:#20b2aa;
+            padding:8px 12px;
+            border-radius:10px;
+            text-decoration:none;
+            font-weight:600;
+            transition:.2s ease;
+        }
+        .btn-outline:hover{border-color:#20b2aa;box-shadow:0 6px 14px rgba(32,178,170,.18)}
+        .row{display:flex;justify-content:space-between;align-items:center;margin-top:12px}
+
+        /* Clickable card cursor */
+        .clickable { cursor: pointer; }
+
+        @media (max-width:560px){.page{padding:16px}}
+    </style>
+</head>
+<body>
+
+<!-- Global header -->
+<th:block th:replace="fragments/header :: siteHeader('facilities', ${username})"></th:block>
+
+<div class="page">
+    <div class="card">
+        <div class="card-header">
+            <span th:text="${'Facilities — ' + company.companyName}">Facilities</span>
+            <!-- Always show Add New -->
+            <a class="btn btn-primary"
+               th:href="@{/companies/{cid}/facilities/new(cid=${company.id})}">
+                Add New
+            </a>
+        </div>
+
+        <div class="card-body">
+            <!-- Grid list when facilities exist -->
+            <div class="grid" th:if="${!#lists.isEmpty(facilities)}">
+                <div class="company-card clickable"
+                     th:each="f : ${facilities}"
+                     th:attr="data-href=@{/companies/{cid}/facilities/{id}/inventory(cid=${company.id}, id=${f.id})}">
+                    <div class="content">
+                        <div class="title" th:text="${f.facilityName}">Facility Name</div>
+                        <div class="muted" th:text="${'Code: ' + f.code}">Code</div>
+
+                        <div class="row" style="margin-top:12px;">
+                            <div>
+                                <a class="btn-outline"
+                                   th:href="@{/companies/{cid}/facilities/{id}/edit(cid=${company.id}, id=${f.id})}"
+                                   style="margin-right:8px;">Edit</a>
+
+                                <a class="btn-outline"
+                                   th:href="@{/companies/{cid}/facilities/{id}/contacts(cid=${company.id}, id=${f.id})}"
+                                   style="margin-right:8px;">Contact Info</a>
+                            </div>
+
+                            <form th:action="@{/companies/{cid}/facilities/{id}/delete(cid=${company.id}, id=${f.id})}"
+                                  method="post" style="display:inline">
+                                <button type="submit" class="btn-outline" style="color:#b3261e;border-color:#f0caca">Delete</button>
+                            </form>
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+            <!-- Empty state -->
+            <div th:if="${#lists.isEmpty(facilities)}" class="muted" style="margin-top:8px;">
+                No facilities yet for this company.
+            </div>
+
+            <!-- Click navigation script -->
+            <script>
+                document.addEventListener('DOMContentLoaded', function () {
+                    document.querySelectorAll('.company-card.clickable').forEach(function (card) {
+                        const href = card.getAttribute('data-href');
+                        if (!href) return;
+                        card.addEventListener('click', function () {
+                            window.location.assign(href);
+                        });
+                        // Prevent inner interactive elements from triggering card click
+                        card.querySelectorAll('a, button, input, select, textarea, label, form').forEach(function (el) {
+                            el.addEventListener('click', function (e) { e.stopPropagation(); });
+                        });
+                    });
+                });
+            </script>
+        </div>
+    </div>
+</div>
+
+<!-- Dropdown script -->
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/facility-contacts.html
===================================================================
--- src/main/resources/templates/facility-contacts.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/facility-contacts.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title th:text="${'Facility Contact – ' + facility.facilityName}">Facility Contact</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+    <style>
+        *{margin:0;padding:0;box-sizing:border-box}
+        body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;min-height:100vh;background:linear-gradient(135deg,#a4ecba 0%,#fefeff 100%);color:#1f2937}
+        .page{width:100%;max-width:900px;padding:28px;margin:0 auto}
+        .card{background:#fff;border-radius:18px;box-shadow:0 20px 40px rgba(0,0,0,.10);margin-bottom:28px;overflow:hidden}
+        .card-header{background:linear-gradient(135deg,#20b2aa,#48d1cc);color:#fff;padding:20px 24px;font-size:1.3rem;font-weight:600}
+        .card-body{padding:22px}
+        .row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #f0f0f0;gap:12px}
+        label{font-weight:600;color:#374151;min-width:100px}
+        input[type=text]{padding:10px 12px;border:1px solid #e5e7eb;border-radius:10px;flex:1}
+        .actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}
+        .btn{display:inline-block;padding:10px 16px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;font-weight:600;cursor:pointer}
+        .btn-primary{background:linear-gradient(135deg,#20b2aa,#48d1cc);color:white;border:none}
+        .btn-danger{color:#b3261e;border-color:#f0caca}
+        .muted{color:#6c757d}
+    </style>
+</head>
+<body>
+<th:block th:replace="fragments/header :: siteHeader('facilities', ${username})"></th:block>
+
+<div class="page">
+    <div class="card">
+        <div class="card-header" th:text="${'Contact – ' + facility.facilityName + ' (' + company.companyName + ')'}">Contact</div>
+        <div class="card-body">
+
+            <!-- Single form handles both create and update -->
+            <form th:action="@{/companies/{cid}/facilities/{id}/contacts/save(cid=${company.id}, id=${facility.id})}" method="post">
+                <!-- When updating, send contactId; in create mode contact is null so input is absent -->
+                <input type="hidden" name="contactId" th:if="${contact != null}" th:value="${contact.id}">
+
+                <div class="row">
+                    <label for="phone">Phone</label>
+                    <input id="phone" name="phone" type="text"
+                           th:value="${contact != null ? contact.phone : ''}"
+                           placeholder="+389 70 000 000">
+                </div>
+
+                <div class="row">
+                    <label for="address">Address</label>
+                    <input id="address" name="address" type="text"
+                           th:value="${contact != null ? contact.address : ''}"
+                           placeholder="Street, City">
+                </div>
+
+                <div class="actions">
+                    <!-- Primary button toggles label based on create vs update -->
+                    <button type="submit" class="btn btn-primary"
+                            th:text="${contact != null} ? 'Update' : 'Create'">Create</button>
+
+                    <!-- Delete only visible when contact exists -->
+                    <form th:if="${contact != null}"
+                          th:action="@{/companies/{cid}/facilities/{id}/contacts/delete(cid=${company.id}, id=${facility.id})}"
+                          method="post" style="display:inline;">
+                        <input type="hidden" name="contactId" th:value="${contact.id}">
+                        <button type="submit" class="btn btn-danger">Delete</button>
+                    </form>
+
+                    <a class="btn" th:href="@{/companies/{cid}/facilities(cid=${company.id})}">Back</a>
+                </div>
+            </form>
+
+            <!-- Helper text for empty state (optional) -->
+            <p class="muted" th:if="${contact == null}" style="margin-top:8px;">No contact exists yet — fill the fields and press Create.</p>
+        </div>
+    </div>
+</div>
+
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/facility-form.html
===================================================================
--- src/main/resources/templates/facility-form.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/facility-form.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,132 @@
+<!-- templates/facility-form.html -->
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title th:text="${mode=='create' ? 'Create Facility' : 'Edit Facility'}">Facility</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Shared global header styles -->
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+
+    <style>
+        :root {
+            --teal-1:#20b2aa;
+            --teal-2:#48d1cc;
+            --muted:#6c757d;
+            --shadow:0 20px 40px rgba(0,0,0,.1);
+        }
+        * { margin:0; padding:0; box-sizing:border-box; }
+        body {
+            font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;
+            min-height:100vh;
+            background:linear-gradient(135deg,#a4ecba 0%,#fefeff 100%);
+        }
+
+        /* Full-width global header - FIXED STYLING */
+        .site-header {
+            position:sticky;
+            top:0;
+            left:0;
+            right:0;
+            width:100%;
+            border-radius:0;
+            margin:0;
+            z-index:1000;
+            background:white !important;
+            box-shadow:0 2px 10px rgba(0,0,0,0.1);
+        }
+
+        .content-wrapper { padding:24px; }
+        .wrap {
+            width:100%;
+            max-width:720px;
+            margin:40px auto;
+            background:#fff;
+            border-radius:20px;
+            overflow:hidden;
+            box-shadow:var(--shadow);
+        }
+        .head {
+            background:linear-gradient(135deg,var(--teal-1),var(--teal-2));
+            color:#fff;
+            padding:26px 24px;
+        }
+        .body { padding:26px 24px; }
+        .row { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
+        .row-1 { display:grid; grid-template-columns:1fr; gap:16px; margin-bottom:6px; }
+        label { display:block; margin-bottom:8px; color:#334155; font-weight:600; font-size:.95rem; }
+        input {
+            width:100%; padding:14px 12px;
+            border:2px solid #e6ebf0;
+            border-radius:12px;
+            background:#f8fafc;
+            transition:.2s ease;
+            font-size:1rem;
+        }
+        input:focus {
+            outline:none; border-color:var(--teal-1);
+            background:#fff;
+            box-shadow:0 0 0 3px rgba(32,178,170,.12);
+        }
+        .actions { display:flex; gap:12px; padding:0 24px 24px 24px; }
+        .btn { border:none; padding:12px 16px; border-radius:12px; cursor:pointer; font-weight:700; letter-spacing:.4px; }
+        .btn-primary {
+            background:linear-gradient(135deg,var(--teal-1),var(--teal-2));
+            color:#fff;
+            box-shadow:0 10px 20px rgba(32,178,170,.25);
+        }
+        .btn-secondary {
+            background:#fff; color:#111;
+            border:2px solid rgba(32,178,170,.25);
+        }
+    </style>
+</head>
+<body>
+
+<!-- Global sticky header (white, full width) -->
+<th:block th:replace="fragments/header :: siteHeader('facilities', ${username})"></th:block>
+
+<div class="content-wrapper">
+    <div class="wrap">
+        <div class="head">
+            <h2 th:text="${mode=='create' ? 'Create Facility' : 'Edit Facility'}">Facility</h2>
+        </div>
+
+        <div class="body">
+            <form th:action="${mode=='create'} ? @{/companies/{cid}/facilities(cid=${company.id})}
+                                 : @{/companies/{cid}/facilities/{id}/update(cid=${company.id}, id=${facility.id})}"
+                  method="post">
+
+                <div class="row">
+                    <div>
+                        <label>Facility Name</label>
+                        <input type="text" name="facilityName"
+                               th:value="${mode=='edit' ? facility.facilityName : ''}" required>
+                    </div>
+                    <div>
+                        <label>Code</label>
+                        <input type="text" name="code"
+                               th:value="${mode=='edit' ? facility.code : ''}" required>
+                    </div>
+                </div>
+
+                <div class="actions">
+                    <button class="btn btn-primary" type="submit"
+                            th:text="${mode=='create' ? 'Create' : 'Update'}">
+                        Save
+                    </button>
+                    <a class="btn btn-secondary"
+                       th:href="@{/companies/{cid}/facilities(cid=${company.id})}">
+                        Cancel
+                    </a>
+                </div>
+            </form>
+        </div>
+    </div>
+</div>
+
+<!-- Scripts for dropdown etc. -->
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/facility-inventory.html
===================================================================
--- src/main/resources/templates/facility-inventory.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/facility-inventory.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,141 @@
+<!-- templates/facility-inventory.html -->
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title th:text="${'Inventory — ' + facility.facilityName}">Inventory</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Shared header styles -->
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+
+    <style>
+        :root {
+            --teal-1:#20b2aa; --teal-2:#48d1cc;
+            --bg:#fefeff; --card:#ffffff;
+            --muted:#6c757d; --text:#1f2937;
+            --shadow:0 20px 40px rgba(0,0,0,0.10);
+        }
+        *{margin:0;padding:0;box-sizing:border-box}
+        body{
+            font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;
+            min-height:100vh;
+            background:linear-gradient(135deg,#a4ecba 0%,#fefeff 100%);
+            color:var(--text);
+        }
+
+        /* Full-width global header - FIXED STYLING */
+        .site-header{
+            position:sticky; top:0; left:0; right:0; width:100%;
+            border-radius:0; margin:0; z-index:1000;
+            background:white !important;
+            box-shadow:0 2px 10px rgba(0,0,0,0.1);
+        }
+
+        .page{width:100%; max-width:1200px; padding:28px; margin:0 auto}
+
+        /* Card wrapper */
+        .card{
+            background:var(--card);
+            border-radius:18px;
+            box-shadow:var(--shadow);
+            margin-bottom:28px;
+            overflow:hidden;
+        }
+
+        .card-header{
+            background:linear-gradient(135deg,var(--teal-1),var(--teal-2));
+            color:#fff;
+            padding:20px 24px;
+            display:flex; justify-content:space-between; align-items:center;
+            font-size:1.3rem; font-weight:600;
+        }
+
+        .card-body{padding:22px}
+
+        .btn{
+            display:inline-block; text-decoration:none;
+            padding:12px 16px; border-radius:12px; font-weight:600;
+        }
+        .btn-primary{
+            background:linear-gradient(135deg,var(--teal-1),var(--teal-2));
+            color:#fff; box-shadow:0 10px 20px rgba(32,178,170,.25);
+        }
+
+        .list{display:grid; grid-template-columns:1fr; gap:12px;}
+
+        .row{
+            display:grid;
+            grid-template-columns:2fr 2fr 1fr 1.3fr;
+            gap:14px; align-items:center;
+            padding:14px 16px; background:#fff;
+            border:1px solid #eef2f7; border-radius:12px;
+        }
+
+        .muted{color:var(--muted); font-size:.92rem}
+
+        @media (max-width:800px){
+            .row{grid-template-columns:1fr; gap:6px;}
+        }
+    </style>
+</head>
+<body>
+
+<!-- Global header -->
+<th:block th:replace="fragments/header :: siteHeader('facilities', ${username})"></th:block>
+
+<div class="page">
+    <div class="card">
+        <div class="card-header">
+            <span th:text="${'Inventory — ' + facility.facilityName}">Inventory</span>
+            <a class="btn btn-primary"
+               th:href="@{/companies/{cid}/facilities(cid=${company.id})}">
+                Back to Facilities
+            </a>
+        </div>
+
+        <div class="card-body">
+            <div class="muted" th:text="${'Company: ' + company.companyName}" style="margin-bottom:10px;">
+                Company: ACME
+            </div>
+
+            <div th:if="${#lists.isEmpty(items)}" class="muted">
+                No stock entries yet for this facility.
+            </div>
+
+            <div class="list" th:if="${!#lists.isEmpty(items)}">
+                <div class="row" th:each="it : ${items}">
+                    <div>
+                        <div th:text="${it.brandedMedicine.name}">Medicine Name</div>
+                        <div class="muted"
+                             th:text="${'Manufacturer: ' + it.brandedMedicine.manufacturer.company.companyName}">
+                            Manufacturer
+                        </div>
+                    </div>
+
+                    <div>
+                        <div class="muted">Dosage</div>
+                        <div th:text="${it.brandedMedicine.dosageForm + ' • ' + it.brandedMedicine.strength}">
+                            Dosage • Strength
+                        </div>
+                    </div>
+
+                    <div>
+                        <div class="muted">Quantity</div>
+                        <div th:text="${it.quantity}">0</div>
+                    </div>
+
+                    <div>
+                        <div class="muted">Last stocked</div>
+                        <div th:text="${#temporals.format(it.lastChanged, 'dd MMM yyyy')}">01 Jan 2025</div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!-- Shared scripts -->
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/fragments/header.html
===================================================================
--- src/main/resources/templates/fragments/header.html	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/resources/templates/fragments/header.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -132,4 +132,7 @@
             <a class="nav-btn" th:href="@{/companies}"
                th:classappend="${activePage}=='companies' ? ' active'">Companies</a>
+            <!-- New: Verification list link -->
+            <a class="nav-btn" th:href="@{/admin/verification}"
+               th:classappend="${activePage}=='verification' ? ' active'">Verification</a>
         </nav>
 
@@ -146,4 +149,7 @@
                 <div class="dropdown" id="userDropdown" role="menu" aria-labelledby="userButton">
                     <a class="dropdown-item" th:href="@{/profile}" role="menuitem">Profile settings</a>
+                    <a class="dropdown-item" th:href="@{/orders}" role="menuitem">My orders</a>
+                    <!-- New: Cart link -->
+                    <a class="dropdown-item" th:href="@{/cart}" role="menuitem">Cart 🛒</a>
                     <form th:action="@{/logout}" method="post" style="margin:0">
                         <input type="hidden" th:name="${_csrf?.parameterName}" th:value="${_csrf?.token}">
Index: src/main/resources/templates/index.html
===================================================================
--- src/main/resources/templates/index.html	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/resources/templates/index.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -232,5 +232,4 @@
         <div class="header-buttons">
             <a class="btn btn-primary" th:href="@{/branded-medicines/new}">Create</a>
-            <a class="btn btn-primary" th:href="@{/cart}">🛒 Cart</a>
         </div>
     </div>
Index: src/main/resources/templates/order-detail.html
===================================================================
--- src/main/resources/templates/order-detail.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/order-detail.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,60 @@
+<!-- templates/order-detail.html -->
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title th:text="${'Order #' + order.id + ' – Details'}">Order Details</title>
+
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+
+    <style>
+        * { margin:0; padding:0; box-sizing:border-box; }
+        body {
+            font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+            background:linear-gradient(135deg, #a4ecba 0%, #f7f7f8 100%);
+            min-height:100vh;
+        }
+        .site-header { position:sticky; top:0; left:0; right:0; width:100%; border-radius:0; z-index:1000; }
+        .container { max-width:800px; margin:0 auto; padding:20px; }
+        .card { background:white; border-radius:20px; box-shadow:0 10px 30px rgba(0,0,0,.1); overflow:hidden; margin-top:50px; text-align:center; }
+        .card-header { background:linear-gradient(135deg,#20b2aa,#48d1cc); color:white; padding:30px; font-size:1.8rem; font-weight:600; }
+        .card-body { padding:40px 30px; }
+        .card-body p { margin-bottom:14px; font-size:1rem; color:#333; }
+        .success-icon { font-size:4rem; color:#20b2aa; margin-bottom:20px; }
+        .btn-back { display:inline-block; margin-top:25px; padding:12px 25px; background:linear-gradient(135deg,#20b2aa,#48d1cc); color:white; border-radius:12px; font-weight:600; text-decoration:none; transition:.3s; }
+        .btn-back:hover { transform:translateY(-2px); box-shadow:0 10px 20px rgba(32,178,170,.3); }
+    </style>
+</head>
+<body>
+
+<th:block th:replace="fragments/header :: siteHeader('orders', ${username})"></th:block>
+
+<div class="container">
+    <div class="card">
+        <div class="card-header" th:text="${'Order #' + order.id}">Order #123</div>
+        <div class="card-body">
+            <div class="success-icon">✔</div>
+
+            <p><strong>Date:</strong> <span th:text="${order.orderDate}">2025-08-30</span></p>
+            <p><strong>Status:</strong> <span th:text="${order.status}">во тек</span></p>
+            <p><strong>Total Paid:</strong> <span th:text="${order.totalPrice + ' ден.'}">0 ден.</span></p>
+            <p><strong>Expected Arrival:</strong> <span th:text="${order.expectedArrivalDate}">2025-09-05</span></p>
+
+            <p><strong>Delivery Company:</strong>
+                <span th:text="${deliveryCompany.company != null ? deliveryCompany.company.companyName : 'N/A'}">Courier</span>
+            </p>
+
+            <p><strong>Payment Status:</strong> <span th:text="${payment.status}">COMPLETED</span></p>
+            <p><strong>Payment Method:</strong>
+                <span th:text="${payment.paymentMethod != null ? payment.paymentMethod.methodName : '—'}">CARD</span>
+            </p>
+
+            <a class="btn-back" th:href="@{/orders}">Back to Orders</a>
+        </div>
+    </div>
+</div>
+
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/orders.html
===================================================================
--- src/main/resources/templates/orders.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/orders.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,97 @@
+<!-- templates/orders.html -->
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>SynergyMed – Orders</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+
+    <style>
+        :root {
+            --teal-1:#20b2aa; --teal-2:#48d1cc;
+            --bg:#fefeff; --card:#ffffff;
+            --muted:#6c757d; --text:#1f2937;
+            --shadow:0 20px 40px rgba(0,0,0,0.10);
+            --shadow-sm:0 6px 18px rgba(0,0,0,0.08);
+            --green:#16a34a; --yellow:#ca8a04;
+            --green-bg:rgba(22,163,74,.12); --yellow-bg:rgba(202,138,4,.12);
+        }
+        *{margin:0;padding:0;box-sizing:border-box}
+        body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;min-height:100vh;background:linear-gradient(135deg,#a4ecba 0%,#fefeff 100%);color:var(--text)}
+        .site-header{position:sticky;top:0;left:0;right:0;width:100%;border-radius:0;margin:0;z-index:1000;background:white !important;box-shadow:0 2px 10px rgba(0,0,0,.1)}
+        .page{width:100%; max-width:1200px; padding:28px; margin:0 auto}
+        .card{background:var(--card);border-radius:18px;box-shadow:var(--shadow);margin-bottom:28px;overflow:hidden}
+        .card-header{background:linear-gradient(135deg,var(--teal-1),var(--teal-2));color:#fff;padding:20px 24px;display:flex;justify-content:space-between;align-items:center;font-size:1.3rem;font-weight:600}
+        .card-body{padding:22px}
+        .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:22px}
+        .company-card{background:var(--card);border-radius:18px;box-shadow:var(--shadow-sm);overflow:hidden;display:flex;flex-direction:column}
+        .content{padding:16px 18px}
+        .title{font-weight:700;margin:6px 0 2px}
+        .muted{color:var(--muted);font-size:.92rem}
+        .badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:.80rem;font-weight:700}
+        .badge-green{background:var(--green-bg);color:var(--green)}
+        .badge-yellow{background:var(--yellow-bg);color:var(--yellow)}
+        .row{display:flex;justify-content:space-between;align-items:center;margin-top:12px}
+        .clickable{cursor:pointer}
+        @media (max-width:560px){.page{padding:16px}}
+    </style>
+</head>
+<body>
+
+<th:block th:replace="fragments/header :: siteHeader('orders', ${username})"></th:block>
+
+<div class="page">
+    <div class="card">
+        <div class="card-header">
+            <span>Orders</span>
+        </div>
+        <div class="card-body">
+
+            <!-- Empty state -->
+            <div th:if="${#lists.isEmpty(orders)}" class="muted">You have not made any orders.</div>
+
+            <!-- Orders grid -->
+            <div class="grid" th:if="${!#lists.isEmpty(orders)}">
+                <div class="company-card clickable"
+                     th:each="o : ${orders}"
+                     th:attr="data-href=@{/orders/{oid}(oid=${o.id})}">
+                    <div class="content">
+                        <div class="title" th:text="${'Order • ' + o.orderDate}">Order • 2025-08-30</div>
+                        <div class="muted" th:text="${'Total: ' + o.totalPrice + ' ден.'}">Total</div>
+
+                        <div style="margin-top:8px;">
+                          <span class="badge"
+                                th:text="${o.status}"
+                                th:classappend="${o.status == 'испорачана'} ? ' badge-green' : (${o.status == 'во тек'} ? ' badge-yellow' : '')">
+                            Status
+                          </span>
+                        </div>
+
+                        <div class="row">
+                            <div class="muted" th:text="${'Expected: ' + o.expectedArrivalDate}">Expected</div>
+                            <div class="muted" th:text="${'#' + o.id}">#ID</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+
+            <script>
+                document.addEventListener('DOMContentLoaded', function () {
+                    document.querySelectorAll('.company-card.clickable').forEach(function (card) {
+                        const href = card.getAttribute('data-href');
+                        if (!href) return;
+                        card.addEventListener('click', function () { window.location.assign(href); });
+                        card.querySelectorAll('a, button, input, select, textarea, label, form')
+                            .forEach(function (el) { el.addEventListener('click', function (e) { e.stopPropagation(); }); });
+                    });
+                });
+            </script>
+        </div>
+    </div>
+</div>
+
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/profile-contacts.html
===================================================================
--- src/main/resources/templates/profile-contacts.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/profile-contacts.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,206 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>SynergyMed - Profile</title>
+
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+
+    <style>
+        * { margin: 0; padding: 0; box-sizing: border-box; }
+        body {
+            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+            background: linear-gradient(135deg, #a4ecba 0%, #f7f7f8 100%);
+            min-height: 100vh;
+        }
+
+        .site-header { position: sticky; top: 0; left: 0; right: 0; width: 100%; border-radius: 0; z-index: 1000; }
+
+        /* container same size and spacing as profile */
+        .container { max-width: 1200px; margin: 0 auto; padding: 20px; }
+
+        .header {
+            background: white;
+            border-radius: 20px;
+            box-shadow: 0 10px 30px rgba(0, 0, 0, .1);
+            margin-bottom: 30px;
+            overflow: hidden;
+        }
+
+        .header-content {
+            background: linear-gradient(135deg, #20b2aa, #48d1cc);
+            color: white;
+            padding: 30px;
+            display: flex;
+            align-items: center;
+            gap: 30px;
+        }
+
+        .profile-picture {
+            width: 120px; height: 120px; border-radius: 50%;
+            background: #888; display: flex; align-items: center; justify-content: center;
+            font-size: 48px; font-weight: bold; color: white;
+            border: 4px solid rgba(255,255,255,.3);
+        }
+
+        .profile-info h1 { font-size: 2.5rem; font-weight: 300; margin-bottom: 10px; }
+        .profile-info p { font-size: 1.1rem; opacity: .9; margin-bottom: 5px; }
+
+        .profile-meta { display: flex; gap: 30px; margin-top: 15px; flex-wrap: wrap; }
+        .meta-item { background: rgba(255,255,255,.2); padding: 8px 16px; border-radius: 20px; font-size: .9rem; }
+
+        .nav-bar {
+            background: white; border-radius: 15px;
+            box-shadow: 0 5px 15px rgba(0,0,0,.1);
+            margin-bottom: 30px; padding: 20px 30px;
+        }
+        .nav-links { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
+        .nav-link { color:#20b2aa; text-decoration:none; padding:10px 20px; border-radius:25px; transition:.3s; font-weight:500; }
+        .nav-link:hover, .nav-link.active { background:linear-gradient(135deg,#20b2aa,#48d1cc); color:white; }
+
+        /* Ensure logout looks identical to profile */
+        .logout-btn {
+            margin-left:auto;
+            background:linear-gradient(135deg,#ff6b6b,#ee5a24);
+            color:#fff;
+            padding:10px 20px;
+            border-radius:25px;
+            text-decoration:none;
+            font-weight:600;
+            border:none;
+            box-shadow: 0 5px 15px rgba(238,90,36,.30);
+            transition: transform .2s ease, box-shadow .2s ease;
+            display:inline-flex; align-items:center; justify-content:center;
+        }
+        .logout-btn:hover { transform:translateY(-2px); box-shadow:0 10px 20px rgba(238,90,36,.35); }
+
+        .main-content { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
+
+        .card {
+            background: white; border-radius: 20px;
+            box-shadow: 0 10px 30px rgba(0,0,0,.1);
+            overflow: hidden;
+        }
+        .card-header { background: linear-gradient(135deg,#20b2aa,#48d1cc); color:white; padding:25px 30px; font-size:1.3rem; font-weight:600; }
+        .card-body { padding: 30px; }
+
+        .info-grid { display: grid; gap: 20px; }
+        .info-item { display: flex; justify-content: space-between; padding: 15px 0; border-bottom: 1px solid #f0f0f0; }
+        .info-item:last-child { border-bottom: none; }
+
+        .info-label { font-weight: 600; color: #555; font-size: .95rem; }
+        .info-value { color: #333; font-size: 1rem; }
+
+        /* Contact form rows (right column) */
+        .row { display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid #f0f0f0; gap:12px; }
+        label { font-weight:600; color:#374151; min-width:120px; }
+        input[type=text] { padding:10px 12px; border:1px solid #e5e7eb; border-radius:10px; flex:1; }
+        .actions { display:flex; gap:12px; flex-wrap:wrap; margin-top:16px; }
+        .btn { display:inline-block; padding:10px 16px; border-radius:10px; border:1px solid #e5e7eb; background:#fff; font-weight:600; cursor:pointer; }
+        .btn-primary { background:linear-gradient(135deg,#20b2aa,#48d1cc); color:#fff; border:none; }
+        .btn-danger { color:#b3261e; border-color:#f0caca; }
+
+        @media(max-width: 992px) { .main-content { grid-template-columns: 1fr; } }
+    </style>
+</head>
+<body>
+
+<th:block th:replace="fragments/header :: siteHeader(${null}, ${username})"></th:block>
+
+<div class="container">
+    <!-- Profile Header (same as profile) -->
+    <div class="header">
+        <div class="header-content">
+            <div class="profile-picture">
+                <span th:text="${user.firstName.substring(0,1).toUpperCase() + user.lastName.substring(0,1).toUpperCase()}">AB</span>
+            </div>
+            <div class="profile-info">
+                <h1 th:text="${user.firstName + ' ' + user.lastName}">John Doe</h1>
+                <p th:text="'@' + ${username}">@johndoe</p>
+                <p th:text="${user.email}">john.doe@email.com</p>
+                <div class="profile-meta">
+                    <div class="meta-item" th:text="'Member since ' + ${#temporals.format(user.dateCreated, 'MMM yyyy')}">Member since Jan 2024</div>
+                    <div class="meta-item" th:text="'Age ' + ${T(java.time.Period).between(user.dateOfBirth, T(java.time.LocalDate).now()).getYears()}">Age 30</div>
+                    <div class="meta-item" th:text="${user.gender ?: 'Not specified'}">Male</div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <!-- Nav with Contact Info active -->
+    <div class="nav-bar">
+        <div class="nav-links">
+            <a th:href="@{/profile}" class="nav-link" th:classappend="${activeTab}=='profile' ? ' active'">Profile</a>
+            <a href="#" class="nav-link">Medical History</a>
+            <a th:href="@{/profile/prescriptions}" class="nav-link" th:classappend="${activeTab}=='prescriptions' ? ' active'">Prescriptions</a>
+            <a href="#" class="nav-link">Club Card</a>
+            <a th:href="@{/allergies/manage}" class="nav-link">Manage Allergies</a>
+            <a th:href="@{/profile/contacts}" class="nav-link" th:classappend="${activeTab}=='contacts' ? ' active'">Contact Info</a>
+            <a th:href="@{/logout}" class="logout-btn">Logout</a>
+        </div>
+    </div>
+
+
+    <!-- Main Content -->
+    <div class="main-content">
+        <!-- Left: same personal info card as profile -->
+        <div class="card">
+            <div class="card-header">Personal Information</div>
+            <div class="card-body">
+                <div class="info-grid">
+                    <div class="info-item"><span class="info-label">Full Name</span><span class="info-value" th:text="${user.firstName + ' ' + user.lastName}">John Doe</span></div>
+                    <div class="info-item"><span class="info-label">Username</span><span class="info-value" th:text="${username}">johndoe</span></div>
+                    <div class="info-item"><span class="info-label">Email</span><span class="info-value" th:text="${user.email}">john@email.com</span></div>
+                    <div class="info-item"><span class="info-label">Date of Birth</span><span class="info-value" th:text="${#temporals.format(user.dateOfBirth, 'dd MMM yyyy')}">15 Jan 1990</span></div>
+                    <div class="info-item"><span class="info-label">Gender</span><span class="info-value" th:text="${user.gender ?: 'Not specified'}">Male</span></div>
+                    <div class="info-item"><span class="info-label">Member Since</span><span class="info-value" th:text="${#temporals.format(user.dateCreated, 'dd MMM yyyy')}">01 Jan 2024</span></div>
+                </div>
+            </div>
+        </div>
+
+        <!-- Right: Contact Information (two editable fields; create/update in one form) -->
+        <div class="card">
+            <div class="card-header">Contact Information</div>
+            <div class="card-body">
+                <!-- Save form (create or update) -->
+                <form th:action="@{/profile/contacts/save}" method="post" style="display:inline;">
+                    <input type="hidden" name="id" th:if="${contact != null}" th:value="${contact.id}">
+                    <div class="row">
+                        <label for="phone">Phone</label>
+                        <input id="phone" name="phone" type="text"
+                               th:value="${contact != null ? contact.phone : ''}"
+                               placeholder="+389 70 000 000">
+                    </div>
+                    <div class="row">
+                        <label for="address">Address</label>
+                        <input id="address" name="address" type="text"
+                               th:value="${contact != null ? contact.address : ''}"
+                               placeholder="Street, City">
+                    </div>
+                    <div class="actions" style="align-items:center;">
+                        <button type="submit" class="btn btn-primary"
+                                th:text="${contact != null} ? 'Update' : 'Create'">Create</button>
+                    </div>
+                </form>
+
+                <!-- Delete form (separate to avoid nested forms) -->
+                <form th:if="${contact != null}"
+                      th:action="@{/profile/contacts/delete}"
+                      method="post" style="display:inline;">
+                    <input type="hidden" name="id" th:value="${contact.id}">
+                    <button type="submit" class="btn btn-danger" style="margin-left:12px;">Delete</button>
+                </form>
+
+                <!-- Optional helper when creating -->
+                <p class="info-value" th:if="${contact == null}" style="margin-top:10px;color:#6b7280;">
+                    Fill the fields and press Create to add contact info.
+                </p>
+            </div>
+        </div>
+    </div>
+</div>
+
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/profile-prescriptions.html
===================================================================
--- src/main/resources/templates/profile-prescriptions.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/profile-prescriptions.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>SynergyMed - Profile</title>
+
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+
+    <style>
+        * { margin: 0; padding: 0; box-sizing: border-box; }
+        body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+            background: linear-gradient(135deg, #a4ecba 0%, #f7f7f8 100%); min-height: 100vh; }
+        .site-header { position: sticky; top: 0; left: 0; right: 0; width: 100%; border-radius: 0; z-index: 1000; }
+
+        .container { max-width: 1200px; margin: 0 auto; padding: 20px; }
+        .header { background: white; border-radius: 20px; box-shadow: 0 10px 30px rgba(0,0,0,.1); margin-bottom: 30px; overflow: hidden; }
+        .header-content { background: linear-gradient(135deg, #20b2aa, #48d1cc); color: white; padding: 30px; display: flex; align-items: center; gap: 30px; }
+        .profile-picture { width: 120px; height: 120px; border-radius: 50%; background: #888; display: flex; align-items: center; justify-content: center;
+            font-size: 48px; font-weight: bold; color: white; border: 4px solid rgba(255,255,255,.3); }
+        .profile-info h1 { font-size: 2.5rem; font-weight: 300; margin-bottom: 10px; }
+        .profile-info p { font-size: 1.1rem; opacity: .9; margin-bottom: 5px; }
+        .profile-meta { display: flex; gap: 30px; margin-top: 15px; flex-wrap: wrap; }
+        .meta-item { background: rgba(255,255,255,.2); padding: 8px 16px; border-radius: 20px; font-size: .9rem; }
+
+        .nav-bar { background: white; border-radius: 15px; box-shadow: 0 5px 15px rgba(0,0,0,.1); margin-bottom: 30px; padding: 20px 30px; }
+        .nav-links { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
+        .nav-link { color:#20b2aa; text-decoration:none; padding:10px 20px; border-radius:25px; transition:.3s; font-weight:500; }
+        .nav-link:hover, .nav-link.active { background:linear-gradient(135deg,#20b2aa,#48d1cc); color:white; }
+        .logout-btn { margin-left:auto; background:linear-gradient(135deg,#ff6b6b,#ee5a24); color:white; padding:10px 20px; border-radius:25px;
+            text-decoration:none; font-weight:600; border:none; box-shadow:0 5px 15px rgba(238,90,36,.30); transition:.2s; display:inline-flex; align-items:center; }
+        .logout-btn:hover { transform:translateY(-2px); box-shadow:0 10px 20px rgba(238,90,36,.35); }
+
+        .main-content { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }
+        .card { background: white; border-radius: 20px; box-shadow: 0 10px 30px rgba(0,0,0,.1); overflow: hidden; }
+        .card-header { background: linear-gradient(135deg,#20b2aa,#48d1cc); color:white; padding:25px 30px; font-size:1.3rem; font-weight:600; }
+        .card-body { padding: 30px; }
+
+        .info-grid { display: grid; gap: 20px; }
+        .info-item { display: flex; justify-content: space-between; padding: 15px 0; border-bottom: 1px solid #f0f0f0; }
+        .info-item:last-child { border-bottom: none; }
+        .info-label { font-weight: 600; color: #555; font-size: .95rem; }
+        .info-value { color: #333; font-size: 1rem; }
+
+        .rx-list { display: grid; gap: 14px; }
+        .rx { border:1px solid #eef2f7; border-radius:12px; padding:14px 16px; background:#fff; box-shadow: 0 4px 10px rgba(0,0,0,.04); }
+        .rx-title { font-weight:700; margin-bottom:6px; }
+        .rx-sub { color:#6b7280; font-size:.92rem; display:flex; gap:14px; flex-wrap:wrap; }
+        .muted { color:#6b7280; }
+
+        .pending-wrap { display:flex; align-items:center; justify-content:center; padding:24px; }
+        .pending-text { text-align:center; font-weight:600; color:#1f2937; }
+
+        @media (max-width: 992px) { .main-content { grid-template-columns: 1fr; } }
+    </style>
+</head>
+<body>
+
+<th:block th:replace="fragments/header :: siteHeader(${null}, ${username})"></th:block>
+
+<div class="container">
+    <!-- Profile Header -->
+    <div class="header">
+        <div class="header-content">
+            <div class="profile-picture">
+                <span th:text="${user.firstName.substring(0,1).toUpperCase() + user.lastName.substring(0,1).toUpperCase()}">AB</span>
+            </div>
+            <div class="profile-info">
+                <h1 th:text="${user.firstName + ' ' + user.lastName}">John Doe</h1>
+                <p th:text="'@' + ${username}">@johndoe</p>
+                <p th:text="${user.email}">john@example.com</p>
+                <div class="profile-meta">
+                    <div class="meta-item" th:text="'Member since ' + ${#temporals.format(user.dateCreated, 'MMM yyyy')}">Member since Jan 2024</div>
+                    <div class="meta-item" th:text="'Age ' + ${T(java.time.Period).between(user.dateOfBirth, T(java.time.LocalDate).now()).getYears()}">Age 30</div>
+                    <div class="meta-item" th:text="${user.gender ?: 'Not specified'}">Male</div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <!-- Navigation -->
+    <div class="nav-bar">
+        <div class="nav-links">
+            <a th:href="@{/profile}" class="nav-link">Profile</a>
+            <a href="#" class="nav-link">Medical History</a>
+            <a th:href="@{/profile/prescriptions}" class="nav-link active">Prescriptions</a>
+            <a href="#" class="nav-link">Club Card</a>
+            <a th:href="@{/allergies/manage}" class="nav-link">Manage Allergies</a>
+            <a th:href="@{/profile/contacts}" class="nav-link">Contact Info</a>
+            <a th:href="@{/logout}" class="logout-btn">Logout</a>
+        </div>
+    </div>
+
+    <div class="main-content">
+        <!-- Left: Personal Information -->
+        <div class="card">
+            <div class="card-header">Personal Information</div>
+            <div class="card-body">
+                <div class="info-grid">
+                    <div class="info-item"><span class="info-label">Full Name</span><span class="info-value" th:text="${user.firstName + ' ' + user.lastName}">John Doe</span></div>
+                    <div class="info-item"><span class="info-label">Username</span><span class="info-value" th:text="${username}">johndoe</span></div>
+                    <div class="info-item"><span class="info-label">Email</span><span class="info-value" th:text="${user.email}">john@example.com</span></div>
+                    <div class="info-item"><span class="info-label">Date of Birth</span><span class="info-value" th:text="${#temporals.format(user.dateOfBirth, 'dd MMM yyyy')}">15 Jan 1990</span></div>
+                    <div class="info-item"><span class="info-label">Gender</span><span class="info-value" th:text="${user.gender ?: 'Not specified'}">Male</span></div>
+                    <div class="info-item"><span class="info-label">Member Since</span><span class="info-value" th:text="${#temporals.format(user.dateCreated, 'dd MMM yyyy')}">01 Jan 2024</span></div>
+                </div>
+            </div>
+        </div>
+
+        <!-- Right: Prescriptions -->
+        <div class="card">
+            <div class="card-header">Prescriptions</div>
+            <div class="card-body">
+
+                <!-- Not verified -->
+                <div th:if="${!verified}">
+                    <!-- If sensitiveclientdata.verificationStatus == 'во тек' show pending text -->
+                    <div th:if="${sensitive != null and sensitive.verificationStatus == 'во тек'}" class="pending-wrap">
+                        <div class="pending-text">Фармацевт ќе ви ги прегледа вашите податоци во најбрз можен рок.</div>
+                    </div>
+
+                    <!-- Otherwise show Apply button -->
+                    <div th:if="${sensitive == null or sensitive.verificationStatus != 'во тек'}">
+                        <div class="muted" style="margin-bottom:10px;">
+                            Profile is not verified; prescriptions are available once verification is completed.
+                        </div>
+                        <a class="nav-link" th:href="@{/profile/verification/apply}"
+                           style="display:inline-block; background:linear-gradient(135deg,#20b2aa,#48d1cc); color:#fff; border-radius:25px; padding:10px 20px; text-decoration:none; font-weight:600;">
+                            Apply for verification
+                        </a>
+                    </div>
+                </div>
+
+                <!-- Verified: list prescriptions -->
+                <div th:if="${verified}">
+                    <div th:if="${#lists.isEmpty(prescriptions)}" class="muted">No prescriptions found.</div>
+
+                    <div class="rx-list" th:if="${!#lists.isEmpty(prescriptions)}">
+                        <div class="rx" th:each="p : ${prescriptions}">
+                            <div class="rx-title" th:text="${p.medicine.medicineName}">Medicine name</div>
+                            <div class="rx-sub">
+                                <span th:text="${'Issued by: ' + p.issuedBy}">Issued by</span>
+                                <span th:text="${'Issued: ' + #temporals.format(p.issuedAt, 'dd MMM yyyy')}">Issued</span>
+                                <span th:text="${'Valid to: ' + #temporals.format(p.validTo, 'dd MMM yyyy')}">Valid to</span>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+
+            </div>
+        </div>
+    </div>
+</div>
+
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/profile.html
===================================================================
--- src/main/resources/templates/profile.html	(revision 8b8dd49e059bb37734d9b42f4ceaa147d69bb509)
+++ src/main/resources/templates/profile.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -141,10 +141,14 @@
     <div class="nav-bar">
         <div class="nav-links">
-            <a href="#" class="nav-link active">Profile</a>
+            <a th:href="@{/profile}" class="nav-link" th:classappend="${activeTab}=='profile' ? ' active'">Profile</a>
             <a href="#" class="nav-link">Medical History</a>
-            <a href="/allergies/manage" class="nav-link">Manage Allergies</a>
-            <a href="/logout" class="logout-btn">Logout</a>
+            <a th:href="@{/profile/prescriptions}" class="nav-link" th:classappend="${activeTab}=='prescriptions' ? ' active'">Prescriptions</a>
+            <a href="#" class="nav-link">Club Card</a>
+            <a th:href="@{/allergies/manage}" class="nav-link">Manage Allergies</a>
+            <a th:href="@{/profile/contacts}" class="nav-link" th:classappend="${activeTab}=='contacts' ? ' active'">Contact Info</a>
+            <a th:href="@{/logout}" class="logout-btn">Logout</a>
         </div>
     </div>
+
 
     <!-- Main Content -->
Index: src/main/resources/templates/verification-apply.html
===================================================================
--- src/main/resources/templates/verification-apply.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/verification-apply.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,60 @@
+<!-- templates/verification-apply.html -->
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Apply for Verification</title>
+
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+    <style>
+        *{margin:0;padding:0;box-sizing:border-box}
+        body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;min-height:100vh;background:linear-gradient(135deg,#a4ecba 0%,#f7f7f8 100%);color:#1f2937}
+        .page{width:100%;max-width:840px;padding:28px;margin:0 auto}
+        .card{background:#fff;border-radius:18px;box-shadow:0 20px 40px rgba(0,0,0,.10);overflow:hidden}
+        .card-header{background:linear-gradient(135deg,#20b2aa,#48d1cc);color:#fff;padding:20px 24px;font-size:1.3rem;font-weight:600}
+        .card-body{padding:22px}
+        .row{display:flex;gap:14px;align-items:center;margin:12px 0}
+        label{min-width:140px;font-weight:600}
+        input[type=text]{flex:1;padding:12px;border:1px solid #e5e7eb;border-radius:10px}
+        input[type=file]{flex:1}
+        .actions{display:flex;gap:12px;margin-top:16px}
+        .btn{display:inline-block;padding:10px 16px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;font-weight:600;cursor:pointer}
+        .btn-primary{background:linear-gradient(135deg,#20b2aa,#48d1cc);color:#fff;border:none}
+        .notice{margin-bottom:12px;padding:10px 12px;border-radius:10px;background:#f1f5f9;color:#0f172a}
+        .error{background:#fdecec;color:#b3261e}
+        .hint{color:#6b7280;font-size:.9rem}
+    </style>
+</head>
+<body>
+<th:block th:replace="fragments/header :: siteHeader(${null}, ${username})"></th:block>
+
+<div class="page">
+    <div class="card">
+        <div class="card-header">Apply for Verification</div>
+        <div class="card-body">
+            <div th:if="${message}" class="notice" th:text="${message}">Message</div>
+            <div th:if="${error}" class="notice error" th:text="${error}">Error</div>
+
+            <form th:action="@{/profile/verification/apply}" method="post" enctype="multipart/form-data">
+                <div class="row">
+                    <label for="embg">EMBG</label>
+                    <input id="embg" name="embg" type="text" placeholder="EMBG" required>
+                </div>
+                <div class="row">
+                    <label for="portrait">Portrait photo</label>
+                    <input id="portrait" name="portrait" type="file" accept="image/*" required>
+                </div>
+                <div class="hint">Accepted: jpg, jpeg, png, webp, gif. Max 5MB.</div>
+                <div class="actions">
+                    <button type="submit" class="btn btn-primary">Apply</button>
+                    <a class="btn" th:href="@{/profile/prescriptions}">Back to Prescriptions</a>
+                </div>
+            </form>
+        </div>
+    </div>
+</div>
+
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/verification-approval.html
===================================================================
--- src/main/resources/templates/verification-approval.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/verification-approval.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,60 @@
+<!-- templates/verification_approval.html -->
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Verification Review</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+    <style>
+        *{margin:0;padding:0;box-sizing:border-box}
+        body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;min-height:100vh;background:linear-gradient(135deg,#a4ecba 0%,#fefeff 100%);color:#1f2937}
+        .page{width:100%;max-width:900px;padding:28px;margin:0 auto}
+        .card{background:#fff;border-radius:18px;box-shadow:0 20px 40px rgba(0,0,0,.10);overflow:hidden;margin-bottom:28px}
+        .card-header{background:linear-gradient(135deg,#20b2aa,#48d1cc);color:#fff;padding:20px 24px;font-size:1.3rem;font-weight:600}
+        .card-body{padding:22px}
+        .row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #f0f0f0}
+        .label{font-weight:600;color:#374151;min-width:140px}
+        .val{flex:1}
+        .portrait{max-width:260px;border-radius:12px;border:1px solid #eef2f7;box-shadow:0 6px 18px rgba(0,0,0,.08)}
+        .actions{display:flex;gap:12px;margin-top:18px}
+        .btn{display:inline-block;padding:10px 16px;border-radius:10px;border:1px solid #e5e7eb;background:#fff;font-weight:600;cursor:pointer}
+        .btn-primary{background:linear-gradient(135deg,#20b2aa,#48d1cc);color:#fff;border:none}
+        .btn-danger{color:#b3261e;border-color:#f0caca}
+    </style>
+</head>
+<body>
+<th:block th:replace="fragments/header :: siteHeader('verification', ${username})"></th:block>
+
+<div class="page">
+    <div class="card">
+        <div class="card-header" th:text="${item.client.users.firstName + ' ' + item.client.users.lastName}">Client Name</div>
+        <div class="card-body">
+            <div class="row">
+                <div class="label">EMBG</div>
+                <div class="val" th:text="${item.embg}">0000000000000</div>
+            </div>
+            <div class="row" style="align-items:flex-start;">
+                <div class="label">Portrait</div>
+                <!-- Adjust the src mapping to how portraits are served in your app -->
+                <img class="portrait"
+                     th:src="@{'/uploads/images/portraits/' + ${item.portraitPhoto}}"
+                     alt="portrait">
+            </div>
+
+            <div class="actions">
+                <form th:action="@{/admin/verification/{id}/approve(id=${item.id})}" method="post">
+                    <button type="submit" class="btn btn-primary">Approve</button>
+                </form>
+                <form th:action="@{/admin/verification/{id}/deny(id=${item.id})}" method="post">
+                    <button type="submit" class="btn btn-danger">Deny</button>
+                </form>
+                <a class="btn" th:href="@{/admin/verification}">Back</a>
+            </div>
+        </div>
+    </div>
+</div>
+
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
Index: src/main/resources/templates/verification-list.html
===================================================================
--- src/main/resources/templates/verification-list.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
+++ src/main/resources/templates/verification-list.html	(revision 8e5e404f6f4fa19e0457c3b7e0fdeccea32987ea)
@@ -0,0 +1,54 @@
+<!-- templates/verification-list.html -->
+<!DOCTYPE html>
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <title>Pending Verifications</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <th:block th:replace="fragments/header :: headerStyles"></th:block>
+    <style>
+        *{margin:0;padding:0;box-sizing:border-box}
+        body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;min-height:100vh;background:linear-gradient(135deg,#a4ecba 0%,#fefeff 100%);color:#1f2937}
+        .page{width:100%;max-width:1200px;padding:28px;margin:0 auto}
+        .card{background:#fff;border-radius:18px;box-shadow:0 20px 40px rgba(0,0,0,.10);overflow:hidden;margin-bottom:28px}
+        .card-header{background:linear-gradient(135deg,#20b2aa,#48d1cc);color:#fff;padding:20px 24px;font-size:1.3rem;font-weight:600}
+        .card-body{padding:22px}
+        .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:22px}
+        .tile{background:#fff;border-radius:16px;box-shadow:0 6px 18px rgba(0,0,0,.08);padding:18px;cursor:pointer;border:1px solid #eef2f7}
+        .tile:hover{transform:translateY(-2px);transition:.2s}
+        .name{font-weight:700}
+        .muted{color:#6c757d}
+    </style>
+</head>
+<body>
+<th:block th:replace="fragments/header :: siteHeader('verification', ${username})"></th:block>
+
+<div class="page">
+    <div class="card">
+        <div class="card-header">Pending Verifications</div>
+        <div class="card-body">
+            <div th:if="${#lists.isEmpty(pending)}" class="muted">No applications are currently pending.</div>
+            <div class="grid" th:if="${!#lists.isEmpty(pending)}">
+                <!-- Iterate pending rows with th:each -->
+                <div class="tile"
+                     th:each="p : ${pending}"
+                     th:attr="data-href=@{/admin/verification/{id}(id=${p.id})}">
+                    <div class="name" th:text="${p.client.users.firstName + ' ' + p.client.users.lastName}">Client Name</div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<script>
+    document.addEventListener('DOMContentLoaded',function(){
+        document.querySelectorAll('.tile').forEach(function(t){
+            const href=t.getAttribute('data-href'); if(!href) return;
+            t.addEventListener('click',()=>window.location.assign(href));
+        });
+    });
+</script>
+
+<th:block th:replace="fragments/header :: headerScripts"></th:block>
+</body>
+</html>
