diff --git a/hshassets/forms/utils.py b/hshassets/forms/utils.py
index 8bd4dc80d9e66923be0df9e98147dd8b86905a5f..50b9b5aa5d2db8e61ca05da6f35fba3d57b18322 100644
--- a/hshassets/forms/utils.py
+++ b/hshassets/forms/utils.py
@@ -1,6 +1,7 @@
 from django.utils.safestring import mark_safe
 from django.utils.html import format_html, format_html_join
 from django.template import defaulttags
+from django.forms import widgets
 
 
 def render_form_field(field, label=None):
@@ -88,7 +89,12 @@ class BulmaFieldMarkup(object):
     @classmethod
     def select(cls, field, content):
         """Dropdowns have an extra wrapping <div class="select">"""
-        return cls.label(field.label, cls.div_control(format_html('<div class="select">{}</div>', content)))
+        if isinstance(field.field.widget, widgets.SelectMultiple):
+            css_classes = 'select is-multiple'
+        else:
+            css_classes = 'select'
+
+        return cls.label(field.label, cls.div_control(format_html('<div class="{}">{}</div>', css_classes, content)))
 
     @classmethod
     def checkbox(cls, field, content):
@@ -142,3 +148,10 @@ def render_form_errors(errors):
         """,
         error_tags=error_tags,
     )
+
+
+def instance_of(field_widget, widget_list):
+    for widget in widget_list:
+        if isinstance(field_widget, widget):
+            return True
+    return False
diff --git a/hshassets/templatetags/bulma.py b/hshassets/templatetags/bulma.py
index 9990c5375d8a2e0b34c4724df83b634e216e737d..3a216fd9c7ff31b876c0ec17d677a1da33ea1bca 100644
--- a/hshassets/templatetags/bulma.py
+++ b/hshassets/templatetags/bulma.py
@@ -1,6 +1,8 @@
 from django import template
 from django.utils.safestring import mark_safe
-from hshassets.forms.utils import render_form_field, render_form_generics, render_form_errors
+from django.forms import widgets
+
+from hshassets.forms.utils import render_form_field, render_form_generics, render_form_errors, instance_of
 from hshassets.forms.elements import Field
 
 register = template.Library()
@@ -16,8 +18,13 @@ def bulma_form_fields(form):
         widget_classes = list()
 
         # not every form element in bulma has the 'input' css class, so we need to differ here
-        if getattr(field.field.widget, 'input_type', None) not in ['checkbox', 'radio']:
+
+        field_widget = field.field.widget
+
+        if instance_of(field_widget, [widgets.TextInput, widgets.NumberInput, widgets.EmailInput, widgets.URLInput, widgets.PasswordInput]):
             widget_classes.append("input")
+        elif isinstance(field.field.widget, widgets.Textarea):
+            widget_classes.append("textarea")
 
         # highlight fields with errors
         if field.errors: