To override block styles for rules that can’t be changed through theme.json (complexe rules or non core blocks) , one can use dev__blocks__enqueue_styles
function:
add_action( 'init', 'dev__blocks__enqueue_styles' );
function dev__blocks__enqueue_styles() {
foreach ( glob( get_stylesheet_directory() . '/assets/css/blocks-overriding/*', GLOB_ONLYDIR ) as $directory) {
$namespace = substr( strrchr( $directory, '/' ), 1 );
foreach ( glob( $directory . '/*.css' ) as $file) {
$filename = pathinfo( $file, PATHINFO_FILENAME );
wp_enqueue_block_style(
$namespace . '/' . $filename,
array(
'handle' => 'dw-override--' . $namespace . '-' . $filename,
'src' => get_stylesheet_directory_uri() . '/assets/css/blocks-overriding/' . $namespace . '/' . $filename . '.css',
'path' => get_stylesheet_directory() . '/assets/css/blocks-overriding/' . $namespace . '/' . $filename . '.css',
'ver' => filemtime( get_stylesheet_directory() . '/assets/css/blocks-overriding/' . $namespace . '/' . $filename . '.css' )
)
);
}
}
}
Source : https://developer.wordpress.org/reference/functions/wp_enqueue_block_style/