Please improve the Ren'Py game code below to change the text number color depending on what the current number is compared to that card original number:

- When Normal: White Text
- When Lower: Red Text
- When Higher: Green Text

Please let know know if you need to see any other parts of the current codebase.

```renpy
screen card_preview(card, selected=False, playable=False, size=(150, 210), hoverable=False, on_field=False, no_enlarge=False):
    default outline_color = "#00ff0047" if playable else ("#ffff0047" if selected else "#00000000")
    default hover_state = [False]
    if on_field or no_enlarge:
        $ enlarged = None
    else:
        $ enlarged = selected or (hoverable and hover_state[0])
    if selected and not hover_state[0]:
        $ zoom_factor = 1.2 if enlarged else 1.0
    else:
        $ zoom_factor = 1.8 if enlarged else 1.0
    $ actual_size = (int(size[0] * zoom_factor), int(size[1] * zoom_factor))

    $ offset_x = -((actual_size[0] - size[0]) // 2) if enlarged else 0
    $ offset_y = -((actual_size[1] - size[1]) // 0.68) if enlarged else 0

    $ outline_thickness = max(1, int(size[0] * 0.015 * zoom_factor))

    frame:
        xysize actual_size
        background None
        padding (0, 0)
        
        xoffset offset_x
        yoffset offset_y

        if hoverable:
            mousearea:
                area (0, 0, actual_size[0], actual_size[1])
                unhovered SetDict(hover_state, 0, False)
                hovered [SetDict(hover_state, 0, True), SetVariable("hovered_card", card)]

        add Solid(outline_color) xpos -10 ypos -10 xsize actual_size[0] + 20 ysize actual_size[1] + 20

        fixed:
            xysize actual_size

            # Card Art
            if on_field and isinstance(card, CreatureCard):
                add "images/[card.card_id]-creature.png" xysize actual_size
            else:
                add "images/[card.card_id].png" xysize actual_size

            # Mana
            if not on_field:
                fixed:
                    xpos int(size[0] * 0.02 * zoom_factor)
                    ypos int(size[1] * 0.02 * zoom_factor)
                    xsize int(size[0] * 0.25 * zoom_factor)
                    ysize int(size[0] * 0.25 * zoom_factor)
                    text "[card.mana]" size int(size[0] * 0.12 * zoom_factor) xalign 0.5 yalign 0.5 color "#FFFFFF" outlines [(outline_thickness, "#000000", 0, 0)]

            # Attack
            if on_field:
                fixed:
                    xpos int(size[0] * 0.02 * zoom_factor)
                    ypos actual_size[1] - int(size[1] * 0.25 * zoom_factor)
                    xsize int(size[0] * 0.25 * zoom_factor)
                    ysize int(size[0] * 0.25 * zoom_factor)
                    if isinstance(card, CreatureCard):
                        text "[card.attack]" size int(size[0] * 0.12 * zoom_factor) xalign 0.5 yalign 0.5 color "#FFFFFF" outlines [(outline_thickness, "#000000", 0, 0)]
            else:
                fixed:
                    xpos int(size[0] * 0.02 * zoom_factor)
                    ypos actual_size[1] - int(size[1] * 0.18 * zoom_factor)
                    xsize int(size[0] * 0.25 * zoom_factor)
                    ysize int(size[0] * 0.25 * zoom_factor)
                    if isinstance(card, CreatureCard):
                        text "[card.attack]" size int(size[0] * 0.12 * zoom_factor) xalign 0.5 yalign 0.5 color "#FFFFFF" outlines [(outline_thickness, "#000000", 0, 0)]

            # Health
            if on_field:
                fixed:
                    xpos actual_size[0] - int(size[0] * 0.27 * zoom_factor)
                    ypos actual_size[1] - int(size[1] * 0.25 * zoom_factor)
                    xsize int(size[0] * 0.25 * zoom_factor)
                    ysize int(size[0] * 0.25 * zoom_factor)
                    if isinstance(card, CreatureCard):
                        text "[card.health]" size int(size[0] * 0.12 * zoom_factor) xalign 0.5 yalign 0.5 color "#FFFFFF" outlines [(outline_thickness, "#000000", 0, 0)]
            else:
                fixed:
                    xpos actual_size[0] - int(size[0] * 0.27 * zoom_factor)
                    ypos actual_size[1] - int(size[1] * 0.18 * zoom_factor)
                    xsize int(size[0] * 0.25 * zoom_factor)
                    ysize int(size[0] * 0.25 * zoom_factor)
                    if isinstance(card, CreatureCard):
                        text "[card.health]" size int(size[0] * 0.12 * zoom_factor) xalign 0.5 yalign 0.5 color "#FFFFFF" outlines [(outline_thickness, "#000000", 0, 0)]
```