[Soft Reject] Inline style.

My solution for this was:

  1. Assign shortcode html wrapper an ID.
  2. Generate custom CSS for that ID
  3. Store generated CSS in a PHP global variable, or better in a static class property
  4. Use wp_add_inline_styles to add stored CSS

if( !function_exists( 'videobox_inline_styles' ) ) {

	function videobox_inline_styles(){	
        wp_add_inline_style( 'videobox-collected-styles', videobox_Layout_Compilator::$inline_styles );
	}	
    add_action( 'wp_enqueue_scripts', 'videobox_inline_styles' );
}

In Shortcodes:

/**
 * Example:
 */
$css = "#element-$element_id { background-color: $options['background_color']; }";

videobox_Layout_Compilator::$inline_styles .= $css;