Index: ReserveNGo-frontend/src/components/Project/Event/events_carousel.vue
===================================================================
--- ReserveNGo-frontend/src/components/Project/Event/events_carousel.vue	(revision 5499a049336938a26fa80d56f5bdea72adfbe4d9)
+++ ReserveNGo-frontend/src/components/Project/Event/events_carousel.vue	(revision 4185157c516ed5a33d48b6a996c0496310fd6294)
@@ -13,29 +13,10 @@
       pankake: pankake,
       itemsPerSlide: 3,
+      processedEventIds: new Set(), // Track which events we've already processed
+      processedLocalIds: new Set(), // Track which locales we've already fetched
     }
   },
   props: ['allEvents'],
 
-  watch: {
-    allEvents: {
-      handler(events) {
-        if (events && events.length > 0) {
-          events.forEach((eventGroup) => {
-            eventGroup.forEach((event) => {
-              useLocales.getSpecificLocale(event.localId).then((locale) => {
-                event.logo = locale.logo
-              })
-            })
-          })
-        } else {
-          console.log('allEvents is still empty or undefined.')
-        }
-      },
-      immediate: true,
-      deep: true,
-    },
-  },
-
-  // 2. COMPUTED: Create a property that automatically recalculates when its dependencies change.
   computed: {
     /**
@@ -44,5 +25,4 @@
      */
     chunkedEvents() {
-    /*  console.log("CHUNKED EVENTS",this.allEvents)*/
       // Return empty array if the prop is not yet ready.
       if (!this.allEvents || this.allEvents.length === 0) {
@@ -53,9 +33,7 @@
       // e.g., [[1,2,3], [4,5,6]] becomes [1,2,3,4,5,6]
       const flatEvents = this.allEvents.flat()
-      /*console.log('flatEvents', flatEvents)*/
 
       // This is the abstract "resize the array" method you mentioned.
       // It chunks the flat list into new sub-arrays.
-
       return transformArray(flatEvents, this.itemsPerSlide, false)
     },
@@ -63,4 +41,42 @@
 
   methods: {
+    processEventsForLogos(events) {
+      if (!events || events.length === 0) return
+      
+      const flatEvents = events.flat()
+      flatEvents.forEach((event) => {
+        // Only fetch if:
+        // 1. Event has a localId
+        // 2. We haven't processed this event ID
+        // 3. We haven't already fetched this locale
+        // 4. Event doesn't already have a logo
+        if (event && event.localId && 
+            !this.processedEventIds.has(event.id) && 
+            !this.processedLocalIds.has(event.localId) &&
+            !event.logo) {
+          this.processedEventIds.add(event.id)
+          this.processedLocalIds.add(event.localId)
+          
+          useLocales.getSpecificLocale(event.localId)
+            .then((locale) => {
+              if (locale && locale.logo) {
+                // Set logo for all events with this localId
+                flatEvents.forEach(e => {
+                  if (e.localId === event.localId) {
+                    e.logo = locale.logo
+                  }
+                })
+              }
+            })
+            .catch((error) => {
+              console.error('Error fetching locale for event:', error)
+              // Remove from sets on error so we can retry if needed
+              this.processedEventIds.delete(event.id)
+              this.processedLocalIds.delete(event.localId)
+            })
+        }
+      })
+    },
+
     /**
      * Checks the window width and updates the `itemsPerSlide` data property.
@@ -91,7 +107,12 @@
 
   mounted() {
- /*   setInterval(() => {
-      console.log(this.chunkedEvents)
-    }, 1000)*/
+    // Process events only once when component mounts
+    // Use nextTick to ensure props are fully initialized
+    this.$nextTick(() => {
+      if (this.allEvents && this.allEvents.length > 0) {
+        this.processEventsForLogos(this.allEvents)
+      }
+    })
+    
     // Call the method once on component mount to set the initial state.
     this.updateItemsPerSlide()
@@ -105,9 +126,10 @@
     window.removeEventListener('resize', this.updateItemsPerSlide)
   },
+
 }
 </script>
 
 <template>
-  <div id="carouselMulti3" class="carousel slide col-12" data-bs-ride="carousel">
+  <div v-if="chunkedEvents && chunkedEvents.length > 0" id="carouselMulti3" class="carousel slide events-carousel-wrapper" data-bs-ride="carousel">
     <div class="carousel-inner">
       <div
@@ -117,22 +139,36 @@
         :class="{ active: index === 0 }"
       >
-        <div style="gap: 0.2rem" class="d-flex justify-content-center">
+        <div class="d-flex justify-content-center gap-2 px-4">
           <!-- The inner loop now iterates over the `eventGroup` (the chunk) -->
-          <div class="" v-for="event in eventGroup" :key="event.id">
-            <div class="card" style="width: 18rem">
-              <img
-                height="100"
-                :src="getImageLogo(event.logo) || pankake"
-                class="card-img-top"
-                alt="..."
-              />
-              <div class="card-body">
-                <h5 class="card-title fw-bold">{{ event.name }}</h5>
-                <div class="card-text d-flex justify-content-between">
-                  <div class="text-muted">{{ event.eventType }}</div>
-                  <div class="text-muted">
-                    {{ event.eventStart.date }} <br />
-                    <i class="fas fa-clock me-2 text-secondary"></i> {{ event.eventStart.time }}
+          <div v-for="event in eventGroup" :key="event.id" class="event-card-container">
+            <div class="card event-card h-100">
+              <div class="d-flex flex-row">
+                <!-- Image on left -->
+                <div class="event-image-wrapper">
+                  <img
+                    :src="getImageLogo(event.logo) || pankake"
+                    class="event-image"
+                    alt="Event image"
+                  />
+                  <div class="event-type-badge">
+                    <span class="badge bg-primary">{{ event.eventType }}</span>
                   </div>
+                </div>
+                <!-- Content on right -->
+                <div class="card-body d-flex flex-column p-2">
+                  <h6 class="card-title fw-bold mb-1">{{ event.name }}</h6>
+                  <div class="event-details">
+                    <div class="d-flex align-items-center text-muted mb-1">
+                      <i class="fas fa-calendar-alt me-1"></i>
+                      <span>{{ event.eventStart.date }}</span>
+                    </div>
+                    <div class="d-flex align-items-center text-muted">
+                      <i class="fas fa-clock me-1"></i>
+                      <span>{{ event.eventStart.time }}</span>
+                    </div>
+                  </div>
+                  <button class="btn btn-outline-dark btn-sm mt-1" style="font-size: 0.7rem; padding: 0.2rem 0.4rem;">
+                    <i class="fas fa-info-circle me-1"></i>Details
+                  </button>
                 </div>
               </div>
@@ -143,5 +179,6 @@
     </div>
     <button
-      class="carousel-control-prev"
+      v-if="chunkedEvents.length > 1"
+      class="carousel-control-prev carousel-control-custom"
       type="button"
       data-bs-target="#carouselMulti3"
@@ -151,5 +188,6 @@
     </button>
     <button
-      class="carousel-control-next"
+      v-if="chunkedEvents.length > 1"
+      class="carousel-control-next carousel-control-custom"
       type="button"
       data-bs-target="#carouselMulti3"
@@ -159,10 +197,182 @@
     </button>
   </div>
+  <div v-else class="empty-events-state">
+    <div class="text-center py-2">
+      <p class="text-muted small mb-0">No events available</p>
+    </div>
+  </div>
 </template>
 
 <style scoped>
+.events-carousel-wrapper {
+  position: relative;
+  padding: 0 2.5rem;
+}
+
+.event-card-container {
+  flex: 0 0 auto;
+}
+
+.event-card {
+  width: 280px;
+  height: 90px;
+  border-left: 3px solid #5ea5bc;
+  border-radius: 0.375rem;
+  overflow: hidden;
+  transition: all 0.2s ease;
+  background: #fff;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+}
+
+.event-card:hover {
+  transform: translateY(-1px);
+  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2) !important;
+  background-color: #f9f9f9;
+}
+
+.event-image-wrapper {
+  position: relative;
+  overflow: hidden;
+  width: 90px;
+  height: 90px;
+  flex-shrink: 0;
+}
+
+.event-image {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
+}
+
+.event-type-badge {
+  position: absolute;
+  top: 0.25rem;
+  right: 0.25rem;
+  z-index: 2;
+}
+
+.event-type-badge .badge {
+  font-size: 0.6rem;
+  padding: 0.2rem 0.4rem;
+  font-weight: 500;
+  text-transform: uppercase;
+  letter-spacing: 0.2px;
+  background-color: #5ea5bc !important;
+  border: none;
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
+}
+
+.event-card .card-body {
+  padding: 0.5rem;
+  flex: 1;
+  min-width: 0;
+}
+
+.event-card .card-title {
+  font-size: 0.85rem;
+  color: #212529;
+  line-height: 1.2;
+  margin-bottom: 0.25rem;
+  font-weight: 600;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.event-details {
+  font-size: 0.7rem;
+  flex-grow: 1;
+}
+
+.event-details i {
+  font-size: 0.65rem;
+  width: 12px;
+}
+
+.carousel-control-custom {
+  width: auto;
+  height: auto;
+  background: none;
+  border: none;
+  top: 50%;
+  transform: translateY(-50%);
+  opacity: 0.7;
+  transition: opacity 0.2s ease;
+  z-index: 10;
+}
+
+.carousel-control-custom:hover {
+  opacity: 1;
+  background: none;
+  box-shadow: none;
+}
+
+.carousel-control-prev {
+  left: 0;
+}
+
+.carousel-control-next {
+  right: 0;
+}
+
 .carousel-control-prev-icon,
 .carousel-control-next-icon {
-  filter: invert(100%); /* This turns white into black */
+  width: 30px;
+  height: 40px;
+  background-size: 100% 100%;
+  background-color: transparent;
+  opacity: 1;
+  filter: none;
+}
+
+.carousel-control-prev-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e");
+}
+
+.carousel-control-next-icon {
+  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
+}
+
+.empty-events-state {
+  padding: 0.5rem;
+  text-align: center;
+}
+
+.empty-events-state p {
+  font-size: 0.75rem;
+  margin: 0;
+}
+
+@media (max-width: 992px) {
+  .event-card {
+    width: 240px;
+  }
+  
+  .events-carousel-wrapper {
+    padding: 0 2rem;
+  }
+}
+
+@media (max-width: 768px) {
+  .event-card {
+    width: 200px;
+    height: 80px;
+  }
+  
+  .event-image-wrapper {
+    width: 80px;
+    height: 80px;
+  }
+  
+  .events-carousel-wrapper {
+    padding: 0 1.5rem;
+  }
+  
+  .carousel-control-prev-icon,
+  .carousel-control-next-icon {
+    width: 24px;
+    height: 32px;
+    background-size: 100% 100%;
+  }
 }
 </style>
Index: ReserveNGo-frontend/src/components/Project/Event/events_carousel_in_locale.vue
===================================================================
--- ReserveNGo-frontend/src/components/Project/Event/events_carousel_in_locale.vue	(revision 5499a049336938a26fa80d56f5bdea72adfbe4d9)
+++ ReserveNGo-frontend/src/components/Project/Event/events_carousel_in_locale.vue	(revision 4185157c516ed5a33d48b6a996c0496310fd6294)
@@ -100,20 +100,32 @@
         :class="{ active: index === 0 }"
       >
-        <div style="gap: 0.2rem" class="d-flex justify-content-center">
+        <div class="d-flex justify-content-center gap-3 px-2">
           <!-- The inner loop now iterates over the `eventGroup` (the chunk) -->
-          <div class="" v-for="event in eventGroup" :key="event.id">
-            <div class="card" style="width: 18rem">
-              <div class="card-body mb-2">
-                <h5 class="card-title fw-bold">{{ event.name }}</h5>
-                <p>{{event.description}}</p>
-                <div class="card-text d-flex justify-content-between">
-                  <div class="text-muted">{{ event.eventType }}</div>
-                  <div class="text-muted">
-                    {{ event.eventStart.date }} <br />
-                    <i class="fas fa-clock me-2 text-secondary mb-2"></i> {{ event.eventStart.time }}
+          <div v-for="event in eventGroup" :key="event.id" class="event-card-wrapper">
+            <div class="card shadow-sm h-100 event-card">
+              <div class="card-body d-flex flex-column">
+                <h5 class="card-title fw-bold mb-2">{{ event.name }}</h5>
+                <p class="card-text text-muted small mb-3 flex-grow-1">{{ event.description }}</p>
+                <div class="mb-3">
+                  <div class="d-flex align-items-center mb-2">
+                    <span class="badge bg-primary me-2">{{ event.eventType }}</span>
+                  </div>
+                  <div class="text-muted small">
+                    <div class="mb-1">
+                      <i class="fas fa-calendar me-2"></i>{{ event.eventStart.date }}
+                    </div>
+                    <div>
+                      <i class="fas fa-clock me-2"></i>{{ event.eventStart.time }}
+                    </div>
                   </div>
                 </div>
-                <button v-if="userStore_.isLocaleManager" class="btn btn-dark " @click="$emit('edit-started', event.id)">Edit event</button>
-                <button v-if="userStore_.isLocaleManager" class="btn btn-danger " @click="deleteEvent(event.id)">Delete event</button>
+                <div v-if="userStore_.isLocaleManager" class="d-flex gap-2 mt-auto">
+                  <button class="btn btn-dark btn-sm flex-fill" @click="$emit('edit-started', event.id)">
+                    <i class="fas fa-edit me-1"></i>Edit
+                  </button>
+                  <button class="btn btn-danger btn-sm flex-fill" @click="deleteEvent(event.id)">
+                    <i class="fas fa-trash me-1"></i>Delete
+                  </button>
+                </div>
               </div>
             </div>
@@ -146,3 +158,40 @@
   filter: invert(100%); /* This turns white into black */
 }
+
+.event-card-wrapper {
+  flex: 0 0 auto;
+}
+
+.event-card {
+  width: 18rem;
+  min-height: 280px;
+  transition: transform 0.2s ease, box-shadow 0.2s ease;
+  border: 1px solid #e9ecef;
+}
+
+.event-card:hover {
+  transform: translateY(-2px);
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15) !important;
+}
+
+.event-card .card-body {
+  padding: 1.25rem;
+}
+
+.event-card .card-title {
+  font-size: 1.1rem;
+  color: #212529;
+}
+
+.event-card .card-text {
+  font-size: 0.9rem;
+  line-height: 1.5;
+}
+
+@media (max-width: 768px) {
+  .event-card {
+    width: 100%;
+    max-width: 18rem;
+  }
+}
 </style>
Index: ReserveNGo-frontend/src/components/Project/Restaurant/Locale_.vue
===================================================================
--- ReserveNGo-frontend/src/components/Project/Restaurant/Locale_.vue	(revision 5499a049336938a26fa80d56f5bdea72adfbe4d9)
+++ ReserveNGo-frontend/src/components/Project/Restaurant/Locale_.vue	(revision 4185157c516ed5a33d48b6a996c0496310fd6294)
@@ -345,43 +345,48 @@
         <!-- Right: Details -->
         <div class="col-12 col-md-8">
-          <div class="card p-4 shadow-sm">
-            <!-- Name -->
-            <h3 v-if="!isEditing" class="mb-3">{{ locale.name }}</h3>
-            <div v-else class="mb-3">
-              <label for="nameInput" class="form-label fw-bold">Name</label>
-              <input type="text" id="nameInput" class="form-control" v-model="locale.name" />
-            </div>
-
-            <!-- Address -->
-            <div v-if="!isEditing" class="mb-3 text-muted">
-              <i class="fas fa-map-marker-alt me-2"></i> {{ locale.address }}
-            </div>
-            <div v-else class="mb-3">
-              <label for="addressInput" class="form-label fw-bold">Address</label>
-              <input type="text" id="addressInput" class="form-control" v-model="locale.address" />
-            </div>
-
-            <!-- Star Rating (Not Editable) -->
-            <div class="mb-3 d-flex align-items-center">
-              <div class="text-warning me-2">
-                <i
-                  v-for="n in 5"
-                  :key="n"
-                  :class="[
-                    roundedRating >= n
-                      ? 'fas fa-star'
-                      : roundedRating >= n - 0.5
-                        ? 'fas fa-star-half-alt'
-                        : 'far fa-star',
-                  ]"
-                ></i>
+          <!-- Header Section -->
+          <div class="card p-4 shadow-sm mb-4">
+            <div class="d-flex justify-content-between align-items-start mb-3">
+              <div class="flex-grow-1">
+                <!-- Name -->
+                <h2 v-if="!isEditing" class="mb-2 fw-bold">{{ locale.name }}</h2>
+                <div v-else class="mb-3">
+                  <label for="nameInput" class="form-label fw-bold">Name</label>
+                  <input type="text" id="nameInput" class="form-control" v-model="locale.name" />
+                </div>
+
+                <!-- Address -->
+                <div v-if="!isEditing" class="text-muted mb-2">
+                  <i class="fas fa-map-marker-alt me-2"></i> {{ locale.address }}
+                </div>
+                <div v-else class="mb-3">
+                  <label for="addressInput" class="form-label fw-bold">Address</label>
+                  <input type="text" id="addressInput" class="form-control" v-model="locale.address" />
+                </div>
+
+                <!-- Star Rating (Not Editable) -->
+                <div class="d-flex align-items-center">
+                  <div class="text-warning me-2">
+                    <i
+                      v-for="n in 5"
+                      :key="n"
+                      :class="[
+                        roundedRating >= n
+                          ? 'fas fa-star'
+                          : roundedRating >= n - 0.5
+                            ? 'fas fa-star-half-alt'
+                            : 'far fa-star',
+                      ]"
+                    ></i>
+                  </div>
+                  <small class="text-muted">({{ locale.ratingAvg }})</small>
+                </div>
               </div>
-              <small class="text-muted">({{ locale.ratingAvg }})</small>
             </div>
 
             <!-- Description -->
-            <div class="mb-3">
-              <h6 class="fw-bold">Description</h6>
-              <p v-if="!isEditing">{{ locale.description }}</p>
+            <div class="mb-0">
+              <h6 class="fw-bold mb-2">About</h6>
+              <p v-if="!isEditing" class="text-muted mb-0">{{ locale.description }}</p>
               <textarea
                 v-else
@@ -392,107 +397,137 @@
               ></textarea>
             </div>
-
-            <!-- Working Hours (Read-only) -->
-            <div class="mb-3">
-              <h6 class="fw-bold">Working Hours</h6>
-              <!-- This component simply displays whatever data it is given -->
-              <WorkingHoursTable :workingHours="locale.workingHours"></WorkingHoursTable>
-            </div>
-
-            <!-- Contact Info -->
-            <div class="mb-3">
-              <h6 class="fw-bold">Contact</h6>
-              <ul v-if="!isEditing" class="list-unstyled">
-                <li v-if="locale.contact.phone">
-                  <strong>Phone:</strong> {{ locale.contact.phone }}
-                </li>
-                <li v-if="locale.contact.email">
-                  <strong>Email:</strong> {{ locale.contact.email }}
-                </li>
-              </ul>
-              <div v-else class="mt-2">
-                <div class="mb-2">
-                  <label for="phoneInput" class="form-label">Phone</label>
-                  <input
-                    type="text"
-                    id="phoneInput"
-                    class="form-control"
-                    v-model="locale.contact.phone"
-                  />
+          </div>
+
+          <!-- Information Grid -->
+          <div class="row g-4 mb-4">
+            <!-- Working Hours -->
+            <div class="col-12 col-lg-6">
+              <div class="card p-3 shadow-sm h-100">
+                <h6 class="fw-bold mb-3">
+                  <i class="fas fa-clock me-2 text-primary"></i>Working Hours
+                </h6>
+                <WorkingHoursTable :workingHours="locale.workingHours"></WorkingHoursTable>
+              </div>
+            </div>
+
+            <!-- Contact & Menu -->
+            <div class="col-12 col-lg-6">
+              <div class="card p-3 shadow-sm h-100">
+                <h6 class="fw-bold mb-3">
+                  <i class="fas fa-phone me-2 text-primary"></i>Contact & Menu
+                </h6>
+                <div v-if="!isEditing">
+                  <div v-if="locale.contact.phone" class="mb-2">
+                    <i class="fas fa-phone-alt me-2 text-muted"></i>
+                    <span class="text-dark">{{ locale.contact.phone }}</span>
+                  </div>
+                  <div v-if="locale.contact.email" class="mb-3">
+                    <i class="fas fa-envelope me-2 text-muted"></i>
+                    <span class="text-dark">{{ locale.contact.email }}</span>
+                  </div>
+                  <div class="pt-2 border-top">
+                    <strong class="d-block mb-1">Menu</strong>
+                    <a v-if="locale.menuLink" :href="locale.menuLink" target="_blank" class="text-decoration-none">
+                      <i class="fas fa-external-link-alt me-1"></i>View Menu
+                    </a>
+                    <span v-else class="text-muted small">Not available</span>
+                  </div>
                 </div>
-                <div class="mb-2">
-                  <label for="emailInput" class="form-label">Email</label>
-                  <input
-                    type="email"
-                    id="emailInput"
-                    class="form-control"
-                    v-model="locale.contact.email"
-                  />
+                <div v-else>
+                  <div class="mb-2">
+                    <label for="phoneInput" class="form-label small">Phone</label>
+                    <input
+                      type="text"
+                      id="phoneInput"
+                      class="form-control form-control-sm"
+                      v-model="locale.contact.phone"
+                    />
+                  </div>
+                  <div class="mb-2">
+                    <label for="emailInput" class="form-label small">Email</label>
+                    <input
+                      type="email"
+                      id="emailInput"
+                      class="form-control form-control-sm"
+                      v-model="locale.contact.email"
+                    />
+                  </div>
+                  <div>
+                    <label for="menuLinkInput" class="form-label small">Menu Link</label>
+                    <input
+                      type="url"
+                      id="menuLinkInput"
+                      class="form-control form-control-sm"
+                      v-model="locale.menuLink"
+                      placeholder="https://example.com/menu"
+                    />
+                  </div>
                 </div>
               </div>
             </div>
-
-            <!-- Menu Link -->
-            <div class="mb-3">
-              <h6 class="fw-bold">Menu</h6>
-              <template v-if="!isEditing">
-                <a v-if="locale.menuLink" :href="locale.menuLink" target="_blank">{{
-                  locale.menuLink
-                }}</a>
-                <span v-else class="text-muted">Not available.</span>
-              </template>
-              <div v-else>
-                <input
-                  type="url"
-                  id="menuLinkInput"
-                  class="form-control"
-                  v-model="locale.menuLink"
-                  placeholder="https://example.com/menu"
-                />
+          </div>
+
+          <!-- Services Section -->
+          <div class="card p-3 shadow-sm mb-4">
+            <h6 class="fw-bold mb-3">
+              <i class="fas fa-concierge-bell me-2 text-primary"></i>Services & Amenities
+            </h6>
+            <div v-if="!isEditing">
+              <div v-if="locale.services && locale.services.length > 0" class="services-grid">
+                <span
+                  v-for="service in locale.services"
+                  :key="service"
+                  class="service-badge"
+                >{{ service }}</span>
               </div>
-            </div>
-
-            <!-- Services -->
-            <div class="mb-4">
-              <h6 class="fw-bold">Services</h6>
-              <HorizontalScroller v-if="!isEditing">
-                  <div
-                    v-for="service in locale.services"
-                    :key="service"
-                    class="badge bg-primary text-light p-2"
-                    >{{ service }}</div>
-              </HorizontalScroller>
-              <div v-else>
-                <label for="servicesInput" class="form-label">Services (comma-separated)</label>
-                <input
-                  type="text"
-                  id="servicesInput"
-                  class="form-control"
-                  v-model="servicesAsString"
-                />
-              </div>
-            </div>
-
-            <!--Rating component-->
-            <div class="mb-3 row" v-if="userStore.data.role === 'ROLE_CUSTOMER'">
-              <RatingsForLocal :local-id="this.local_id" @rating-updated="fetchLocaleData" />
-            </div>
-
-            <!-- Events Carousel (Read-only) -->
-            <h6 class="fw-bold">Events</h6>
-
-            <div class="mb-2 row">
-              <events_carousel @edit-started="startEditingEvent" :all-events="eventsForCarousel" @event-deleted="deleteEvent" />
-            </div>
-            <button
-              v-if="userStore.isLocaleManager"
-              class="btn btn-primary btn-sm mb-2"
-              @click="isEventModalVisible = true"
-            >
-              <i class="fas fa-plus me-1"></i> Add Event
-            </button>
-
-            <!-- Main Action Buttons -->
-            <div class="d-flex flex-wrap gap-2 mb-4">
+              <p v-else class="text-muted small mb-0">No services listed</p>
+            </div>
+            <div v-else>
+              <label for="servicesInput" class="form-label small">Services (comma-separated)</label>
+              <input
+                type="text"
+                id="servicesInput"
+                class="form-control form-control-sm"
+                v-model="servicesAsString"
+                placeholder="WIFI, PARKING, PET_FRIENDLY"
+              />
+            </div>
+          </div>
+
+          <!--Rating component-->
+          <div class="card p-3 shadow-sm mb-4" v-if="userStore.data.role === 'ROLE_CUSTOMER'">
+            <RatingsForLocal :local-id="this.local_id" @rating-updated="fetchLocaleData" />
+          </div>
+
+          <!-- Events Section -->
+          <div class="card p-4 shadow-sm mb-4">
+            <div class="d-flex justify-content-between align-items-center mb-3">
+              <h6 class="fw-bold mb-0">
+                <i class="fas fa-calendar-alt me-2 text-primary"></i>Upcoming Events
+              </h6>
+              <button
+                v-if="userStore.isLocaleManager"
+                class="btn btn-primary btn-sm"
+                @click="isEventModalVisible = true"
+              >
+                <i class="fas fa-plus me-1"></i> Add Event
+              </button>
+            </div>
+            <div v-if="locale.events && locale.events.length > 0">
+              <events_carousel
+                @edit-started="startEditingEvent"
+                :all-events="eventsForCarousel"
+                @event-deleted="deleteEvent"
+              />
+            </div>
+            <div v-else class="text-center py-4">
+              <i class="fas fa-calendar-times fa-2x text-muted mb-2"></i>
+              <p class="text-muted mb-0">No events scheduled</p>
+            </div>
+          </div>
+
+          <!-- Main Action Buttons -->
+          <div class="card p-3 shadow-sm">
+            <div class="d-flex flex-wrap gap-2">
               <template v-if="userStore.data.role === 'ROLE_CUSTOMER'">
                 <button class="btn btn-dark">
@@ -553,3 +588,42 @@
   height: auto;
 }
+
+.services-grid {
+  display: flex;
+  flex-wrap: wrap;
+  gap: 0.5rem;
+}
+
+.service-badge {
+  display: inline-block;
+  padding: 0.5rem 1rem;
+  background-color: #e7f3ff;
+  color: #0d6efd;
+  border: 1px solid #b3d9ff;
+  border-radius: 0.375rem;
+  font-size: 0.875rem;
+  font-weight: 500;
+  transition: all 0.2s ease;
+}
+
+.service-badge:hover {
+  background-color: #cfe2ff;
+  border-color: #86b7fe;
+  transform: translateY(-1px);
+}
+
+.card {
+  border: none;
+  border-radius: 0.5rem;
+}
+
+.card h6 {
+  color: #212529;
+  font-size: 1rem;
+}
+
+.card h2 {
+  color: #212529;
+  font-size: 1.75rem;
+}
 </style>
Index: ReserveNGo-frontend/src/components/Project/Restaurant/Locale_listing_container.vue
===================================================================
--- ReserveNGo-frontend/src/components/Project/Restaurant/Locale_listing_container.vue	(revision 5499a049336938a26fa80d56f5bdea72adfbe4d9)
+++ ReserveNGo-frontend/src/components/Project/Restaurant/Locale_listing_container.vue	(revision 4185157c516ed5a33d48b6a996c0496310fd6294)
@@ -55,12 +55,15 @@
       .catch(err => console.log("The locals are not being caught.", err))
 
-    fetch('http://localhost:8080/api/customer/favourite-locals', {
-      headers: {
-        Authorization: this.userStore.getToken,
-      },
-    })
-      .then(res => res.json())
-      .then(data => (this.favourite_locals = data.map(local => local.id)))
-      .catch(err => console.log(err))
+    // Only fetch favourite locals if user is logged in and is a customer
+    if (this.userStore && this.userStore.data && this.userStore.data.role === 'ROLE_CUSTOMER') {
+      fetch('http://localhost:8080/api/customer/favourite-locals', {
+        headers: {
+          Authorization: this.userStore.getToken,
+        },
+      })
+        .then(res => res.json())
+        .then(data => (this.favourite_locals = data.map(local => local.id)))
+        .catch(err => console.log(err))
+    }
   },
 })
Index: ReserveNGo-frontend/src/components/Project/Restaurant/home_.vue
===================================================================
--- ReserveNGo-frontend/src/components/Project/Restaurant/home_.vue	(revision 5499a049336938a26fa80d56f5bdea72adfbe4d9)
+++ ReserveNGo-frontend/src/components/Project/Restaurant/home_.vue	(revision 4185157c516ed5a33d48b6a996c0496310fd6294)
@@ -15,4 +15,39 @@
     return {
       allEvents: [],
+      showBackToTop: true,
+    }
+  },
+
+  mounted() {
+    const wrapper = this.$el.querySelector('.home-page-wrapper')
+    if (wrapper) {
+      wrapper.addEventListener('scroll', this.handleScroll)
+      // Check initial scroll position
+      this.handleScroll()
+    }
+  },
+
+  beforeUnmount() {
+    const wrapper = this.$el.querySelector('.home-page-wrapper')
+    if (wrapper) {
+      wrapper.removeEventListener('scroll', this.handleScroll)
+    }
+  },
+
+  methods: {
+    handleScroll() {
+      const wrapper = this.$el.querySelector('.home-page-wrapper')
+      if (wrapper) {
+        this.showBackToTop = wrapper.scrollTop > 0
+      }
+    },
+    scrollToTop() {
+      const wrapper = this.$el.querySelector('.home-page-wrapper')
+      if (wrapper) {
+        wrapper.scrollTo({
+          top: 0,
+          behavior: 'smooth'
+        })
+      }
     }
   },
@@ -33,21 +68,47 @@
 
 <template>
-  <div class="container-fluid px-0">
-    <div class="row justify-content-center">
-      <!-- Sticky Search and Filter Bar -->
-      <SearchFilterPanel />
+  <div>
+    <div class="home-page-wrapper">
+      <div class="container-fluid px-0">
+        <div class="row justify-content-center">
+          <!-- Sticky Search and Filter Bar -->
+          <SearchFilterPanel />
 
-      <!-- Carousel -->
-      <Events_carousel :all-events="allEvents" />
+          <!-- Events Section - Compact Secondary Feature -->
+          <div class="col-12 events-section-wrapper">
+            <div class="container">
+              <Events_carousel :all-events="allEvents" />
+            </div>
+          </div>
 
-      <!-- Scrollable Local Listings -->
-      <div class=" col-md-8 listing-column">
-        <Locale_listing_container :mode="'all'" />
+          <!-- Scrollable Local Listings -->
+          <div class="col-md-8 listing-column">
+            <Locale_listing_container :mode="'all'" />
+          </div>
+        </div>
       </div>
     </div>
+
+    <!-- Back to Top Button -->
+    <transition name="fade">
+      <button
+        v-if="showBackToTop"
+        @click="scrollToTop"
+        class="back-to-top-btn"
+        aria-label="Back to top"
+      >
+        <i class="fas fa-arrow-up"></i>
+      </button>
+    </transition>
   </div>
 </template>
 
 <style scoped>
+.home-page-wrapper {
+  height: calc(100vh - 80px);
+  overflow-y: auto;
+  overflow-x: hidden;
+}
+
 .search-bar {
   background-color: #f3f5f8;
@@ -55,16 +116,69 @@
 }
 
-/* ✅ SCROLL FIX APPLIED HERE */
+.events-section-wrapper {
+  background-color: #f3f5f8;
+  padding: 0.75rem 0;
+  margin-bottom: 0.5rem;
+  border-bottom: 1px solid #dee2e6;
+}
+
 .listing-column {
-  height: calc(100vh - 80px - 96px - 250px); /* Adjust 250px based on your carousel height */
-  overflow-y: auto;
   background-color: #f3f5f8;
   padding: 1rem;
-  scrollbar-width: none;
-  -ms-overflow-style: none;
 }
 
-.listing-column::-webkit-scrollbar {
-  display: none;
+.back-to-top-btn {
+  position: fixed;
+  bottom: 2rem;
+  right: 2rem;
+  width: 50px;
+  height: 50px;
+  border-radius: 50%;
+  background-color: #5ea5bc;
+  color: #fff;
+  border: none;
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
+  cursor: pointer;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  z-index: 9999;
+  transition: all 0.3s ease;
+  font-size: 1.2rem;
+}
+
+.back-to-top-btn:hover {
+  background-color: #4a8fa3;
+  transform: translateY(-2px);
+  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
+}
+
+.back-to-top-btn:active {
+  transform: translateY(0);
+}
+
+.fade-enter-active,
+.fade-leave-active {
+  transition: opacity 0.3s ease, transform 0.3s ease;
+}
+
+.fade-enter-from,
+.fade-leave-to {
+  opacity: 0;
+  transform: scale(0.8);
+}
+
+@media (max-width: 768px) {
+  .events-section-wrapper {
+    padding: 0.5rem 0;
+  }
+
+  .back-to-top-btn {
+    bottom: 1.5rem;
+    right: 1.5rem;
+    width: 45px;
+    height: 45px;
+    font-size: 1rem;
+  }
 }
 </style>
Index: ReserveNGo-frontend/src/components/Project/Restaurant/local_in_local_listing.vue
===================================================================
--- ReserveNGo-frontend/src/components/Project/Restaurant/local_in_local_listing.vue	(revision 5499a049336938a26fa80d56f5bdea72adfbe4d9)
+++ ReserveNGo-frontend/src/components/Project/Restaurant/local_in_local_listing.vue	(revision 4185157c516ed5a33d48b6a996c0496310fd6294)
@@ -27,4 +27,19 @@
       .then((base64) => this.localeLogo = base64)
       .catch(error => console.log(error))
+  },
+
+  computed: {
+    locale_logo() {
+      if (this.local.logo === null) {return this.pankake}
+      const url = new URL(this.local.logo, config.API_BASE_URL)
+      return url.toString();
+    },
+    
+    openStatus() {
+      if (this.local && typeof this.local.open === 'boolean') {
+        return this.local.open ? 'Open' : 'Closed'
+      }
+      return 'Status unavailable'
+    }
   },
 
@@ -52,11 +67,4 @@
       this.$emit('hover-leave')
     },
-  },
-  computed: {
-    locale_logo() {
-      if (this.local.logo === null) {return this.pankake}
-      const url = new URL(this.local.logo, config.API_BASE_URL)
-      return url.toString();
-    }
   }
 }
@@ -86,5 +94,10 @@
       <h5 class="mb-1 fw-bold">{{ local.name }}</h5>
       <p class="mb-1 text-muted"><i class="fas fa-map-marker-alt me-1"></i>{{ local.address }}</p>
-      <p class="mb-1 text-muted"><i class="fas fa-clock me-2 text-secondary"></i>{{}}</p>
+      <p class="mb-1 text-muted">
+        <i class="fas fa-clock me-2 text-secondary"></i>
+        <span :class="{'text-danger': openStatus === 'Closed', 'text-success': openStatus === 'Open'}">
+          {{ openStatus }}
+        </span>
+      </p>
       <p class="mb-0 text-muted">
         <i class="fas fa-star text-warning me-1"></i>{{ local.averageRating }}
Index: ReserveNGo-frontend/src/components/Project/Restaurant/working-hours-table.vue
===================================================================
--- ReserveNGo-frontend/src/components/Project/Restaurant/working-hours-table.vue	(revision 5499a049336938a26fa80d56f5bdea72adfbe4d9)
+++ ReserveNGo-frontend/src/components/Project/Restaurant/working-hours-table.vue	(revision 4185157c516ed5a33d48b6a996c0496310fd6294)
@@ -1,11 +1,55 @@
 <script lang="ts">
-
 export default {
   props: ["workingHours"],
 
-
-
-  mounted() {
-    console.log("WORKING HOURS INSIDE COMPONENT", this.workingHours);
+  computed: {
+    daysOfWeek() {
+      return [
+        'MONDAY',
+        'TUESDAY',
+        'WEDNESDAY',
+        'THURSDAY',
+        'FRIDAY',
+        'SATURDAY',
+        'SUNDAY'
+      ]
+    },
+    
+    workingHoursMap() {
+      if (!this.workingHours || !Array.isArray(this.workingHours)) {
+        return {}
+      }
+      
+      const map = {}
+      this.workingHours.forEach(wh => {
+        if (wh.dayOfWeek) {
+          // Handle both uppercase and any case format
+          const dayKey = wh.dayOfWeek.toUpperCase()
+          map[dayKey] = {
+            openTime: wh.openTime || '',
+            closeTime: wh.closeTime || ''
+          }
+        }
+      })
+      return map
+    },
+    
+    daysWithHours() {
+      return this.daysOfWeek.map(day => {
+        const hours = this.workingHoursMap[day]
+        return {
+          day: day,
+          hours: hours && hours.openTime && hours.closeTime 
+            ? `${hours.openTime} - ${hours.closeTime}` 
+            : null
+        }
+      })
+    }
+  },
+  
+  methods: {
+    formatDayName(day) {
+      return day.charAt(0) + day.slice(1).toLowerCase()
+    }
   }
 }
@@ -13,26 +57,19 @@
 
 <template>
-  <div class="working-hours-container">
-    <h3>Working Hours</h3>
-    <table class="hours-table">
+  <div class="table-responsive">
+    <table class="table table-sm table-borderless mb-0">
       <thead>
         <tr>
-          <th>Monday</th>
-          <th>Tuesday</th>
-          <th>Wednesday</th>
-          <th>Thursday</th>
-          <th>Friday</th>
-          <th>Saturday</th>
+          <th class="text-muted fw-normal small">Day</th>
+          <th class="text-muted fw-normal small">Hours</th>
         </tr>
       </thead>
       <tbody>
-       <tr>
-          <td v-for="(wh, index) in workingHours" :key="index" class="time">
-            {{ wh.openTime }} - {{ wh.closeTime }}
+        <tr v-for="item in daysWithHours" :key="item.day">
+          <td class="fw-medium">{{ formatDayName(item.day) }}</td>
+          <td>
+            <span v-if="item.hours" class="text-dark">{{ item.hours }}</span>
+            <span v-else class="text-muted fst-italic small">Closed</span>
           </td>
-
-        <td class="status-closed">Closed</td>
-        <td class="status-closed">Closed</td>
-
         </tr>
       </tbody>
@@ -42,49 +79,17 @@
 
 <style scoped>
-/* General container styling */
-.working-hours-container {
-  font-family: Arial, sans-serif;
-  max-width: 600px; /* Increased width for horizontal layout */
-  margin: 20px auto;
-  padding: 20px;
-  border: 1px solid #e0e0e0;
-  border-radius: 8px;
-  background-color: #f9f9f9;
+.table th {
+  padding: 0.5rem;
+  font-size: 0.875rem;
+  border-bottom: 1px solid #dee2e6;
 }
 
-/* Heading style */
-.working-hours-container h3 {
-  margin-top: 0;
-  margin-bottom: 15px;
-  font-weight: bold;
-  text-align: center;
+.table td {
+  padding: 0.5rem;
+  vertical-align: middle;
 }
 
-/* Table styling */
-.hours-table {
-  width: 100%;
-  border-collapse: collapse;
-  text-align: center;
-}
-
-.hours-table th,
-.hours-table td {
-  padding: 10px 8px;
-  border: none; /* Removed internal borders for a cleaner look */
-}
-
-.hours-table th {
-  font-weight: 600; /* Bold headers for days */
-}
-
-/* Closed status */
-.status-closed {
-  color: #888;
-  font-style: italic;
-}
-
-/* Time styling */
-.time {
-  font-weight: 500;
+.table tbody tr:not(:last-child) td {
+  border-bottom: 1px solid #f0f0f0;
 }
 </style>
