You don't need to run that SOQL query at all. All of the data you need is already present in the records in `Trigger.new`. Further, you likely don't need to be running this `after insert` and incurring the overhead of another DML operation.

Instead, run the trigger `before insert`, iterate over `Trigger.new`, and apply your logic via a simple `if` statement. 

As to your direct question,

    l.Systems_Group__c = Campaign.Systems_Group__c;
    l.System_Type__c = Campaign.System_Type__c;

This won't work because you are attempting to traverse a relationship by using the bare sObject name, `Campaign`. You can't do that in Apex; that reference is to the field entity itself, which has type `Schema.SObjectField`.

Instead, you'd need to collect the Campaign Ids of the Campaign Members matching your criteria, query the Campaigns into a Map, and then access the values by keying into the Map with the Campaign Id. Now, you _could_ also do this by querying the `CampaignMember`s themselves and traversing the relationship in SOQL, but then you're locked in to running the trigger `after insert` and using another DML operation.

In total, your trigger would have a _structure_ much like this:

```apex
trigger MyTrigger on CampaignMember (before insert) {
    Set<Id> campaignIds = new Set<Id>();

    for (CampaignMember cm : Trigger.new) {
        if (THIS CAMPAIGN MEMBER MATCHES CRITERIA) {
            campaignIds.add(cm.CampaignId);
        }
    }

    Map<Id, Campaign> campaignMap = new Map<Id, Campaign>([
        SELECT (FIELDS DESIRED)
        FROM Campaign
        WHERE Id IN :campaignIds
    ]);

    for (CampaignMember cm : Trigger.new) {
        if (THIS CAMPAIGN MEMBER MATCHES CRITERIA) {
            Campaign thisCampaign = campaignMap.get(cm.CampaignId);
            
            cm.YOUR_DESIRED_FIELD__C = thisCampaign.YOUR_SOURCE_FIELD__C;
        }
    }
}
```

No DML required at all.