Index: ReserveNGo-frontend/src/components/Project/Auth/login_.vue
===================================================================
--- ReserveNGo-frontend/src/components/Project/Auth/login_.vue	(revision 24a9bc0b469d11c8c69b6c1c9a92335ac1667e21)
+++ ReserveNGo-frontend/src/components/Project/Auth/login_.vue	(revision 19271ea34ed0fa40c043347dbeeff1f57aaabdd7)
@@ -126,5 +126,5 @@
     <div v-if="!disabledAccountPage" class="card shadow p-4" style="max-width: 400px; width: 100%">
       <h3 class="text-center mb-4">Login</h3>
-      <form @submit.prevent="makeLogin">
+      <form @submit.prevent="makeLogin(false, null)">
         <div class="mb-3">
           <label for="email" class="form-label">Email address</label>
@@ -156,8 +156,8 @@
           <LoadingIcon v-else></LoadingIcon>
         </button>
-        <div class="mt-3 d-grid">
-          <GoogleLogin :callback="googleLoginCallback" />
-        </div>
       </form>
+      <div class="mt-3 d-grid">
+        <GoogleLogin :callback="googleLoginCallback" />
+      </div>
     </div>
     <DisabledAccountPage :is-loading="isEnableingAccountLoading" @yesPlease="reEnableAccount" @noThankYou="disabledAccountPage = false" v-else></DisabledAccountPage>
Index: ReserveNGo-frontend/src/components/Project/Worker/WorkerReservationsDashboard.vue
===================================================================
--- ReserveNGo-frontend/src/components/Project/Worker/WorkerReservationsDashboard.vue	(revision 24a9bc0b469d11c8c69b6c1c9a92335ac1667e21)
+++ ReserveNGo-frontend/src/components/Project/Worker/WorkerReservationsDashboard.vue	(revision 19271ea34ed0fa40c043347dbeeff1f57aaabdd7)
@@ -19,4 +19,9 @@
       sortKey: '',
       sortOrder: 'asc',
+
+      // Multi-delete state
+      selectionMode: false,
+      selectedIds: [],
+      deletingSelected: false,
     }
   },
@@ -64,4 +69,38 @@
         console.error(error)
         this.showToast('Failed to load reservations.', 'error')
+      }
+    },
+
+    // Multiple delete helpers
+    startSelection() {
+      this.selectionMode = true
+      this.selectedIds = []
+    },
+    cancelSelection() {
+      this.selectionMode = false
+      this.selectedIds = []
+    },
+    toggleSelect(reservation) {
+      const id = reservation?.reservationId ?? null
+      if (id == null) return
+      const idx = this.selectedIds.indexOf(id)
+      if (idx >= 0) this.selectedIds.splice(idx, 1)
+      else this.selectedIds.push(id)
+    },
+    async confirmDeleteSelected() {
+      if (!this.selectedIds.length) return
+      if (!confirm(`Delete ${this.selectedIds.length} reservation(s)?`)) return
+      try {
+        this.deletingSelected = true
+        await useLocalWorker.deleteReservations({ reservationIds: this.selectedIds })
+        const set = new Set(this.selectedIds)
+        this.reservations = this.reservations.filter(r => !set.has(r.reservationId))
+        this.showToast('Selected reservations deleted successfully.', 'success')
+        this.cancelSelection()
+      } catch (error) {
+        console.error(error)
+        this.showToast('Failed to delete selected reservations.', 'error')
+      } finally {
+        this.deletingSelected = false
       }
     },
@@ -153,5 +192,6 @@
 
     <!-- Status Filter -->
-    <div class="mb-3 d-flex gap-2">
+    <div class="mb-3 d-flex gap-2 justify-content-between align-items-center">
+      <!-- Left: filter -->
       <select v-model="statusFilter" class="form-select form-select-sm w-auto">
         <option value="ALL">All</option>
@@ -162,4 +202,25 @@
         <option value="EXPIRED">Expired</option>
       </select>
+
+      <!-- Right: multi-delete controls -->
+      <div class="ms-auto">
+        <template v-if="!selectionMode">
+          <button class="btn btn-outline-danger btn-sm" @click="startSelection" :disabled="filteredReservations.length===0">
+            <i class="fas fa-trash-alt me-1"></i> Delete Reservations
+          </button>
+        </template>
+        <template v-else>
+          <div class="btn-group">
+            <button class="btn btn-danger btn-sm" :disabled="selectedIds.length===0 || deletingSelected" @click="confirmDeleteSelected">
+              <span v-if="deletingSelected" class="spinner-border spinner-border-sm me-1" role="status" aria-hidden="true"></span>
+              <i v-else class="fas fa-check me-1"></i>
+              Confirm delete ({{ selectedIds.length }})
+            </button>
+            <button class="btn btn-secondary btn-sm" :disabled="deletingSelected" @click="cancelSelection">
+              Cancel
+            </button>
+          </div>
+        </template>
+      </div>
     </div>
 
@@ -169,4 +230,5 @@
         <thead class="table-light">
           <tr>
+            <th v-if="selectionMode" style="width: 48px;">Select</th>
             <th style="cursor: pointer" @click="sortBy('customerName')">
               Customer
@@ -203,4 +265,7 @@
         <tbody>
           <tr v-for="reservation in filteredReservations" :key="reservation.reservationId">
+            <td v-if="selectionMode">
+              <input type="checkbox" class="form-check-input" :checked="selectedIds.includes(reservation.reservationId)" @change="toggleSelect(reservation)" />
+            </td>
             <td>{{ reservation.customerName }}</td>
             <td>{{ formatDate(reservation.timeOfReservation) }}</td>
@@ -218,5 +283,5 @@
                   class="btn btn-outline-success"
                   @click="acceptReservation(reservation.reservationId)"
-                  :disabled="acceptingId === reservation.reservationId"
+                  :disabled="acceptingId === reservation.reservationId || selectionMode"
                 >
                   <LoadingIcon v-if="acceptingId === reservation.reservationId" />
@@ -228,5 +293,5 @@
                   class="btn btn-outline-danger"
                   @click="denyReservation(reservation.reservationId)"
-                  :disabled="denyingId === reservation.reservationId"
+                  :disabled="denyingId === reservation.reservationId || selectionMode"
                 >
                   <LoadingIcon v-if="denyingId === reservation.reservationId" />
@@ -238,5 +303,5 @@
                   class="btn btn-outline-primary"
                   @click="finishReservation(reservation.reservationId)"
-                  :disabled="finishingId === reservation.reservationId"
+                  :disabled="finishingId === reservation.reservationId || selectionMode"
                 >
                   <LoadingIcon v-if="finishingId === reservation.reservationId" />
@@ -248,5 +313,5 @@
 
           <tr v-if="filteredReservations.length === 0">
-            <td colspan="5" class="text-center text-muted py-4">No reservations found.</td>
+            <td :colspan="selectionMode ? 6 : 5" class="text-center text-muted py-4">No reservations found.</td>
           </tr>
         </tbody>
Index: ReserveNGo-frontend/src/repository/LocalWorker.ts
===================================================================
--- ReserveNGo-frontend/src/repository/LocalWorker.ts	(revision 24a9bc0b469d11c8c69b6c1c9a92335ac1667e21)
+++ ReserveNGo-frontend/src/repository/LocalWorker.ts	(revision 19271ea34ed0fa40c043347dbeeff1f57aaabdd7)
@@ -37,4 +37,9 @@
     return this.httpClient.put(`reservations/${reservationId}/finish`)
   }
+
+  // DELETE /api/local-worker/reservations/delete
+  deleteReservations(dto: { reservationIds: Array<number | string> }): Promise<void> {
+    return this.httpClient.delete('reservations/delete', dto)
+  }
 }
 
