eventIdentifier() to UrlService to extract event identifiers from both area/<id> and area/<slug>/view|edit URL patternspathContainsEventIdOrSlug() to recognise 3-segment paths ending in "edit"<area>/<event-slug>/edit instead of <area>/<mongo-id>/edit<area>/<event-slug> instead of <area>/<mongo-id>routerLink with slug-based URLs instead of [href] with MongoDB IDshasTrailingEditPath URL matcher for <area>/<slug>/edit pattern in path-matchers.ts<area>/<slug>/edit to SocialEditComponent for dynamically named social event areas (e.g. group-events)hasDynamicPath catch-all to ensure edit routes are matched before falling through to dynamic contentCardImageOrMap renders navigation links using [href] with type-aware URL resolution for walks and social eventsWalksViewSelector dispatches to SocialViewPageComponent when viewing a GROUP_EVENT within walks routesWalkDisplayService.edit() routes social events to the social edit page with slug-based URLsadvancedSearchSummary() as a reusable function from EventsFull for use in both EventsFull and WalkListadvancedSearchChange output event to WalkSearch, replacing BroadcastService for advanced search eventsAdvancedSearchPane wraps populateFromCriteria and convertKebabLabelsToIds in try/finally to ensure suppressCriteriaChanges is always resetapplyFilterRangePreset accepts an emit parameter to prevent spurious criteria emissions during initialisationrangesAreClose() uses PRESET_MATCH_THRESHOLD_MS for consistent preset matchingresetQueryDrivenState() clears filters, pagination, and view when navigating without query parametersalertUsesFullRow() and showResultsHeaderRow() control layout based on message lengthmt-2 margin when alerts are visibleHeightResizerComponent to walks map view for user-adjustable map heightUIDateFormat.DAY_NAME and UIDateFormat.YEAR_MONTH_DAY_T_HHMM enum valuestoFormat() calls with dateUtils.asString() using UIDateFormat enums in DateRangeSlider, MigrationSettings, and WalkExportDateUtilsService.asDateTime() now handles DateTime inputs directlydaysOfWeek() and mongoDayOfWeekFromName() use UIDateFormat.DAY_NAME formatSocialDisplayService.socialArea() and WalkDisplayService.socialArea() resolve the current area from URL or page configurationnavigateTo(["walks", "admin"]) with Location.back() in 6 walk admin sub-pages (add-slots, config, export, import, meetup-settings, event-data-management)/walks/admin<href>#social-content fragments) to root pages with an events row for group-event typegroup.pagesSocialHomeComponent — no longer needed after migration creates root social pagesSocialViewSelector treats LIST dispatch as DYNAMIC_CONTENT, rendering the dynamic content page for both casesEVENT_TYPE_GROUP_WALK, EVENT_TYPE_GROUP_EVENT) instead of inline literalsNew backgrounds album view with smooth crossfade transitions between photos and wave-transparency overlays. Text and event links are displayed over the imagery with configurable colours, scale, padding, and markdown content that can now be edited directly in-place on the preview. Colour selections (Title Colour, Text Colour) now persist correctly after saving. The admin panel has been tidied up with consistent range sliders for padding and offset controls, and a reusable RangeSliderComponent for future use. Events can now be displayed as a page content row with server-side pagination that no longer causes a full page refresh. Walks pages are migrated to use this new events row pattern. Also removed the legacy social carousel, fixed a gap above the gallery view, added PNG upload preview support, and ensured the selected album view persists across page refreshes in edit mode.