diff --git a/lib/plausible_web.ex b/lib/plausible_web.ex
index 4288cecb9a3546d023d66a4655c2936deaeaf229..5918928b799797ec1018364ff15d92dff8c5e98c 100644
--- a/lib/plausible_web.ex
+++ b/lib/plausible_web.ex
@@ -22,6 +22,7 @@ defmodule PlausibleWeb do
       use Phoenix.HTML
 
       import PlausibleWeb.ErrorHelpers
+      import PlausibleWeb.FormHelpers
       alias PlausibleWeb.Router.Helpers, as: Routes
     end
   end
diff --git a/lib/plausible_web/templates/site/import_from_google_confirm.html.eex b/lib/plausible_web/templates/site/import_from_google_confirm.html.eex
index 07c68b28688aacf5750d99a81f60c0d6b83aac93..e47949b1385d242668e8cdc1823692eea86db675 100644
--- a/lib/plausible_web/templates/site/import_from_google_confirm.html.eex
+++ b/lib/plausible_web/templates/site/import_from_google_confirm.html.eex
@@ -6,27 +6,27 @@
   <%= case @start_date do %>
     <% {:ok, start_date} -> %>
 
-      <div class="mt-6 text-sm text-gray-500">
+      <div class="mt-6 text-sm text-gray-500 dark:text-gray-200">
         Choose the view in your Google Analytics account that will be imported to the <%= @site.domain %> dashboard
       </div>
 
       <div class="mt-3">
-        <%= label f, :view_id, "Google Analytics view", class: "block text-sm font-medium text-gray-700"  %>
-        <%= select f, :view_display, @view_ids, disabled: "true", selected: @selected_view_id, class: "bg-gray-50 mt-1 block w-full pl-3 pr-10 py-2 text-base border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" %>
+        <%= styled_label(f, :view_id, "Google Analytics view") %>
+        <%= styled_select f, :view_display, @view_ids, disabled: "true", selected: @selected_view_id %>
         <%= hidden_input f, :view_id, readonly: "true", value: @selected_view_id %>
       </div>
-      <div class="mt-6 text-sm text-gray-500">
+      <div class="mt-6 text-sm text-gray-500 dark:text-gray-200">
         Import historical data from your first Google Analytics visitor to your first Plausible visitor
       </div>
       <div class="flex justify-between mt-3">
         <div class="w-36">
-          <%= label f, :start_date, "From", class: "block text-sm font-medium text-gray-700"  %>
-          <%= date_input f, :start_date, value: start_date, readonly: "true", class: "bg-gray-50 mt-1 block w-full px-3 py-2 text-base border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" %>
+          <%= styled_label f, :start_date, "From"  %>
+          <%= styled_date_input f, :start_date, value: start_date, readonly: "true" %>
         </div>
         <div class="align-middle pt-8">&rarr;</div>
         <div class="w-36">
-          <%= label f, :end_date, "To", class: "block text-sm font-medium text-gray-700"  %>
-          <%= date_input f, :end_date, value: @end_date, readonly: "true", class: "bg-gray-50 mt-1 block w-full px-3 py-2 text-base border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" %>
+          <%= styled_label f, :end_date, "To"  %>
+          <%= styled_date_input f, :end_date, value: @end_date, readonly: "true" %>
         </div>
       </div>
     <% {:error, error} -> %>
diff --git a/lib/plausible_web/templates/site/import_from_google_user_metric_form.html.eex b/lib/plausible_web/templates/site/import_from_google_user_metric_form.html.eex
index 54789c3429857ffb84aa5651142e8c2ff40454dd..a71f9d7a8fda1bb291c03753c00dd0b9dd08d543 100644
--- a/lib/plausible_web/templates/site/import_from_google_user_metric_form.html.eex
+++ b/lib/plausible_web/templates/site/import_from_google_user_metric_form.html.eex
@@ -1,7 +1,7 @@
 <div class="max-w-md w-full mx-auto bg-white dark:bg-gray-800 shadow-md rounded px-8 pt-6 pb-8 mb-4 mt-8">;
   <h2 class="text-xl font-black dark:text-gray-100">Import from Google Analytics</h2>
 
-  <div class="mt-6 text-sm text-gray-500">
+  <div class="mt-6 text-sm text-gray-500 dark:text-gray-200">
     <p>
     <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 inline text-orange-600" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
       <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
diff --git a/lib/plausible_web/templates/site/import_from_google_view_id_form.html.eex b/lib/plausible_web/templates/site/import_from_google_view_id_form.html.eex
index 04297e9554931985a66182c97de4fba52e67ea85..330680a9e627e895a69b2ea7a48e475455d9abe1 100644
--- a/lib/plausible_web/templates/site/import_from_google_view_id_form.html.eex
+++ b/lib/plausible_web/templates/site/import_from_google_view_id_form.html.eex
@@ -6,13 +6,13 @@
   <%= case @view_ids do %>
     <% {:ok, view_ids} -> %>
 
-      <div class="mt-6 text-sm text-gray-500">
+      <div class="mt-6 text-sm text-gray-500 dark:text-gray-200">
         Choose the view in your Google Analytics account that will be imported to the <%= @site.domain %> dashboard.
       </div>
 
       <div class="mt-3">
-        <%= label f, :view_id, "Google Analytics view", class: "block text-sm font-medium text-gray-700"  %>
-        <%= select f, :view_id, view_ids, prompt: "(Choose view)", required: "true", class: "mt-1 block w-full pl-3 pr-10 py-2 text-base border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md" %>
+        <%= styled_label(f, :view_id, "Google Analytics view") %>
+        <%= styled_select f, :view_id, view_ids, prompt: "(Choose view)", required: "true" %>
       </div>
     <% {:error, error} -> %>
       <p class="text-gray-700 dark:text-gray-300 mt-6">The following error occurred when fetching your Google Analytics view ids.</p>
diff --git a/lib/plausible_web/templates/site/settings_general.html.eex b/lib/plausible_web/templates/site/settings_general.html.eex
index aadc764a173e31fdc68030b840b039154b88b49d..1d03cdcb4607881a3422f15c37d91c1797074b67 100644
--- a/lib/plausible_web/templates/site/settings_general.html.eex
+++ b/lib/plausible_web/templates/site/settings_general.html.eex
@@ -98,15 +98,18 @@
         <div class="flex">
           <%= button(to: Plausible.Google.Api.authorize_url(@site.id, "import"), class: "inline-flex pr-4 items-center border border-gray-100 shadow rounded-md focus:outline-none focus:ring-1 focus:ring-offset-1 focus:ring-gray-200 mt-8 hover:bg-gray-50") do %>
             <%= google_logo() %>
-            <span style="font-family: Roboto, system-ui" class="text-sm font-medium text-gray-600">Continue with Google<span>
+            <span style="font-family: Roboto, system-ui" class="text-sm font-medium text-gray-600 dark:text-gray-50">Continue with Google<span>
           <% end %>
         </div>
 
       <% true -> %>
-        <div class="flex">
-          <%= button(to: Plausible.Google.Api.authorize_url(@site.id, "import"), class: "inline-flex pr-4 items-center border border-gray-100 shadow rounded-md focus:outline-none focus:ring-1 focus:ring-offset-1 focus:ring-gray-200 mt-8 hover:bg-gray-50") do %>
+        <%= if @site.imported_data && @site.imported_data.status == "error" do %>
+          <div class="text-sm mt-2">Your latest import has failed. You can try importing again by clicking the button below. If you try multiple times and the import keeps failing, please contact support.</div>
+        <% end %>
+        <div class="flex mt-2">
+          <%= button(to: Plausible.Google.Api.authorize_url(@site.id, "import"), class: "inline-flex pr-4 items-center border border-gray-100 shadow rounded-md focus:outline-none focus:ring-1 focus:ring-offset-1 focus:ring-gray-200 mt-8 hover:bg-gray-50 dark:hover:bg-gray-700") do %>
             <%= google_logo() %>
-            <span style="font-family: Roboto, system-ui" class="text-sm font-medium text-gray-600">Continue with Google<span>
+            <span style="font-family: Roboto, system-ui" class="text-sm font-medium text-gray-600 dark:text-gray-50">Continue with Google<span>
           <% end %>
         </div>
 
diff --git a/lib/plausible_web/views/form_helpers.ex b/lib/plausible_web/views/form_helpers.ex
new file mode 100644
index 0000000000000000000000000000000000000000..c96375ee0bc25d038298118a5949b4b6107f4d89
--- /dev/null
+++ b/lib/plausible_web/views/form_helpers.ex
@@ -0,0 +1,26 @@
+defmodule PlausibleWeb.FormHelpers do
+  @label_opts [class: "block text-sm font-medium text-gray-700 dark:text-gray-100"]
+  def styled_label(form, field, text, opts \\ []) do
+    opts = Keyword.merge(@label_opts, opts)
+    Phoenix.HTML.Form.label(form, field, text, opts)
+  end
+
+  @date_input_opts [
+    class:
+      "mt-1 block w-full px-3 py-2 text-base dark:bg-gray-900 dark:text-gray-300 dark:border-gray-500 border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md"
+  ]
+  def styled_date_input(form, field, opts \\ []) do
+    opts = Keyword.merge(@date_input_opts, opts)
+    Phoenix.HTML.Form.date_input(form, field, opts)
+  end
+
+  @select_opts [
+    class:
+      "mt-1 block w-full pl-3 pr-10 py-2 text-base dark:bg-gray-900 dark:text-gray-100 dark:border-gray-500 border-gray-300 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm rounded-md"
+  ]
+
+  def styled_select(form, field, options, opts \\ []) do
+    opts = Keyword.merge(@select_opts, opts)
+    Phoenix.HTML.Form.select(form, field, options, opts)
+  end
+end