output css text from styles. 
        margin is what to put at the beginning of every line in the output.
        indent is how much to indent indented lines (such as inside braces).

def render(C, styles, margin='', indent='\t'):
        """output css text from styles. 
        margin is what to put at the beginning of every line in the output.
        indent is how much to indent indented lines (such as inside braces).
        """
        from unum import Unum
        s = ""
        # render the css text
        for k in styles.keys():
            s += margin
            if type(styles[k]) == Unum:
                s += k + ' ' + str(styles[k]) + ';'
            elif type(styles[k]) in [str, String]:
                s += k + ' ' + styles[k] + ';'
            elif type(styles[k]) in [dict, Dict]:
                # recurse
                s += k + ' {\n' + C.render(styles[k], margin=margin+indent, indent=indent) + '}\n'
            elif type(styles[k]) in [tuple, list]:
                for i in styles[k]:
                    s += k + ' ' 
                    if type(i) in [str, String]:
                        s += i + ';\n'
                    if type(i) == bytes:
                        s += str(i, 'utf-8') + ';\n'
                    elif type(i) in [dict, Dict]:
                        # recurse
                        s += '{\n' + C.render(i, margin=margin+indent, indent=indent) + '}\n'
            else:
                s += ';'
            s += '\n'
        return s