Include Custom Style & Script into Custom Post Type Single Template

First, you’ve got a heck of an obvious coding error in every one of your wp_enqueue_style calls: you have spaces in your quotations. Furthermore, because you are choosing not to call the wp_head() method, the hook of the same name will not be called. That hook, in turn, calls the wp_enqueue_scripts method, which calls the hook of the same name. As you’re not doing any of this, your attempts to use the wp_enqueue_scripts hook won’t work. (You’d have to trace the code like I did to know this.) So, there are two reasons why you are FUBAR.

A word on wp_head(): it is used by the WordPress core to do a whole crap ton of things so WordPress can operate properly. It is good practice to use it so WordPress doesn’t break, and it is a basic concept of WP development. If you don’t use the built-in WP core, you’ll continue to encounter these errors and you will have to figure out how to do the required core functions of the WP process on your own (which will definitely season you). 5 second read to learn where to call wp_head(). Spoiler alert: it’s in between the <head> tags.

With all that in mind, here is a solution of stylesheet output only. Modify your template to tell WordPress to output a specific style sheet, then tell it where to output it (as you are choosing not to make the call to wp_print_styles() to output everything else that may be required). This can be done by getting a global instance of an class known as WP_Styles, and “doing” that single item. (Alternatively, and preferably, use wp_head() in place of the wp_styles()... line.)

<?php
** Custom Single Template for MyPlugin
?>
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
    <head>
    <?php
    // Here's where the magic happens
    wp_enqueue_style('myplugin-public-css');        // Tell WP to output this
    wp_styles()->do_item('myplugin-public-css');    // Do the output
    ?>
    ...

Next, you have to tell that WP_Styles instance what that myplugin-public-css is. This is where enqueuing comes into play. The wp_enqueue_style() method loads up the object we will later grab in the above template. As you’re not using wp_head(), you’ll have to hook into something else. So, let’s try the init hook …

// Notice there are no spaces inside the quotation marks ...
// We use register the script so it is not output unless we enqueue it later.  That saves on resources.
function wp_myplugin_register_style() {
    wp_register_style( 'myplugin-public-css', plugin_dir_url(__FILE__).'public/css/wp-myplugin-public.min.css' );
}
add_action( 'init', 'wp_myplugin_register_style' );

That should about do it. And, here’s a protip: put wherever you make the call for your template. That way, your stylesheet is registered sitting in wait until such a time that it is needed: and it is only needed when it is enqueued alongside the calling of your template.

On another note, you said you don’t use get_header(), but I see it plain as day in your code. No need to respond one way or another on this, just wanted to point it out as no one likes to violate their own coding policy!