// Debug - just show the blue layer with text cut out
name = "Bennett";
oval_width = 96;
oval_height = 30;
blue_thickness = 1;
border_width = 2;

name_length = len(name);
text_size = name_length <= 3 ? 18 :
            name_length <= 5 ? 13 :
            name_length <= 8 ? 11 :
            11;

total_width = oval_width + border_width*2;
total_height = oval_height + border_width*2;

module oval(width, height, depth) {
    scale([width/2, height/2, 1])
        cylinder(h=depth, r=1, $fn=100);
}

module bold_text() {
    for (x = [-0.3, 0, 0.3]) {
        for (y = [-0.3, 0, 0.3]) {
            translate([x, y, 0])
                linear_extrude(height=blue_thickness + 0.1)
                    text(name,
                         size=text_size,
                         font="Fordscript",
                         halign="center",
                         valign="center");
        }
    }
}

// Just the blue with text cut - no border cut
color("RoyalBlue")
difference() {
    oval(total_width, total_height, blue_thickness);

    translate([0, 0, -0.05])
        bold_text();
}
