diff --git a/src/modules/events/components/EventList.vue b/src/modules/events/components/EventList.vue
index 8a8ab65..827b651 100644
--- a/src/modules/events/components/EventList.vue
+++ b/src/modules/events/components/EventList.vue
@@ -7,6 +7,10 @@ import type { Event } from '../types/event'
defineProps<{
events: Event[]
isLoading?: boolean
+ /** Render compact rows instead of full-image cards. Used by the
+ * Hosting view so an operator can scan their roster of events
+ * without the visual weight of hero images they already recognize. */
+ compact?: boolean
}>()
const emit = defineEmits<{
@@ -47,12 +51,17 @@ const { t } = useI18n()
-
-
+
+
diff --git a/src/modules/events/views/EventDetailPage.vue b/src/modules/events/views/EventDetailPage.vue
index 8fedfeb..cf24c80 100644
--- a/src/modules/events/views/EventDetailPage.vue
+++ b/src/modules/events/views/EventDetailPage.vue
@@ -170,36 +170,14 @@ function goToMyTickets() {
{{ event.summary }}
@@ -289,24 +285,40 @@ function goToMyTickets() {
{{ event.description }}
-
+
+
+
+
-
+ tickets_* tags on the published event). Skipped for the
+ host entirely — they have the Scan CTA above and don't
+ need a Buy CTA for their own event. -->
+
-
+ strip so the tabs row stays focused on the primary views.
+ Hidden in the Hosting view — operators don't need calendar
+ navigation when they're managing their own roster. -->
+
-
+ past-events toggle + category chips below. Hidden in the
+ Hosting view — the operator's roster doesn't need them. -->
+
@@ -185,10 +188,13 @@ function openCalendar() {
{{ error }}