Remove stylesheets from Campaign Monitor plugin

The string for the handle is custom_cm_monitor_css but it is passed to Helper::tokenize() which turns it into forms-for-campaign-monitor-custom_cm_monitor_css. Note that the ID of the stylesheet in the page source shows forms-for-campaign-monitor-custom_cm_monitor_css-css but the ending -css is appended by WordPress.

So, we need to dequeue the style with the handle:

forms-for-campaign-monitor-custom_cm_monitor_css

This needs to happen later than it is enqueued. It is not clear when loadPublicScripts is hooked from original question, so we’ll just do it really late. After that, we enqueue our own styles.

add_action( 'wp_enqueue_scripts', 'wpse_campaign_monitor_styles', 9999 );
function wpse_campaign_monitor_styles() {
    // Dequeue Campaign Monitor styles.
    wp_dequeue_style( 'forms-for-campaign-monitor-custom_cm_monitor_css' );

    // Deregister Campaign Monitor styles. (Dequeing should be enough to stop it from being loaded though.)
    wp_deregister_style( 'forms-for-campaign-monitor-custom_cm_monitor_css' )

    // Enqueue custom Campaign Monitor styles located in:
    // {theme-or-child-theme-name}/css/wpse-campaign-monitor.css
    wp_enqueue_style(
       'wpse_campaign_monitor_styles',
        get_stylesheet_directory_uri() . '/css/wpse-campaign-monitor.css'
    );
}

This code had not been tested.