[ 'invalid_title' => 'Invalid QR access link', 'invalid_message' => 'We could not verify this QR link or access code. Please scan it again or ask the host for a fresh link.', 'expired_title' => 'QR access expired', 'expired_message' => 'This QR access link is no longer valid because the event has already ended.', 'revoked_title' => 'QR access disabled', 'revoked_message' => 'The organiser disabled this QR access link. Please request a new one.', 'rate_limited_title' => 'Too many QR attempts', 'rate_limited_message' => 'You tried to open the QR access too often. Please wait a moment and try again.', 'invalid_attempts_message' => 'Too many invalid QR attempts. Please wait a moment and try again.', 'default_title' => 'Access denied', 'default_message' => 'We could not grant access with this QR link.', ], 'packages' => [ 'event_tier_unavailable' => [ 'title' => 'Selected tier unavailable', 'message' => 'No Event-Bundle is available for the selected event tier. Choose a different tier or purchase the matching Event-Bundle.', ], 'event_limit_exceeded' => [ 'title' => 'Event-Bundle depleted', 'message' => 'Your current Event-Bundle has no remaining events. Purchase another Event-Bundle to create new events.', ], 'event_limit_missing' => [ 'title' => 'No package assigned', 'message' => 'Purchase an Event-Bundle to create events.', ], 'event_not_found' => [ 'title' => 'Event not accessible', 'message' => 'The selected event could not be found or belongs to another tenant.', ], 'event_package_missing' => [ 'title' => 'Event package missing', 'message' => 'No package is attached to this event. Assign a package to enable uploads.', ], 'photo_limit_exceeded' => [ 'title' => 'Photo upload limit reached', 'message' => 'This event has reached its photo allowance. Upgrade the event package to accept more uploads.', ], 'tenant_photo_limit_exceeded' => [ 'title' => 'Tenant photo limit reached', 'message' => 'This tenant has reached its photo allowance for the event.', ], 'tenant_storage_limit_exceeded' => [ 'title' => 'Tenant storage limit reached', 'message' => 'This tenant has reached its storage allowance.', ], ], ];