diff --git a/css/easy-email-preview.css b/css/easy-email-preview.css
index 74b01cb1561802ea18c123fa1deaa6b65287891b..91bdbfe57908be6e06bcc5e3c2ada07aa3ecddd8 100644
--- a/css/easy-email-preview.css
+++ b/css/easy-email-preview.css
@@ -1,47 +1,87 @@
-fieldset.easy-email-type-preview:not(.fieldgroup) {
-  background-color: #ffffcc;
+/* Local custom props. */
+.easy-email-type-preview {
+  --ee-dark: #333;
+  --ee-gray: #888;
+  --ee-light: #fff;
+  --ee-yellow: #ffffcc;
+  --ee-s-s: 0.625rem;
+  --ee-s-m: 1.25rem;
+  --ee-s-l: 2.5rem;
+  --ee-border: 0.075rem;
 }
-fieldset.easy-email-resizable {
-  border: 1px solid #ccc;
-  height: 300px;
-  padding-bottom: 30px !important;
+
+/* Override admin theme styles. */
+.easy-email-type-preview:not(.fieldgroup) {
+  background-color: var(--ee-yellow);
 }
-fieldset {
-  padding-top: 40px !important;
+
+.easy-email-type-preview .fieldset__label {
+  color: var(--ee-dark);
+  font-size: 1.5em;
+  font-weight: bold;
+}
+
+.easy-email__fieldset:not(.fieldgroup) {
+  border: var(--ee-border) solid var(--ee-dark);
+  color: var(--ee-dark);
+  padding: var(--ee-s-m);
 }
-.easy-email-resizable iframe {
-  border: 1px solid #ccc;
+
+/* Layout styles. */
+.easy-email.preview > * + * {
+  margin-block-start: var(--ee-s-l);
 }
-fieldset label {
+
+.easy-email__fieldset {
+  max-inline-size: 100%;
+}
+
+.easy-email__legend {
+  color: var(--ee-dark);
+  font-size: 1.2em;
   font-weight: bold;
-  display: inline;
+  padding-inline: var(--ee-s-s);
+}
+
+.easy-email__resizable {
+  background-color: var(--ee-light);
+  block-size: 18.75rem;
+  border: var(--ee-border) solid var(--ee-dark);
+  min-block-size: 6.25rem;
+  min-inline-size: 12.5rem;
+  overflow: auto;
+  padding: var(--ee-s-m);
+  resize: both;
 }
-.inbox-preview-resizable {
-  background: white;
-  border: 1px solid #ccc;
-  width: 320px;
-  max-height: 5em;
-  height: 5em;
-  padding: 1em;
+
+.easy-email__inbox-preview {
+  block-size: 5rem;
+  inline-size: 20rem;
+  max-block-size: 5rem;
 }
+
+/* Inbox preview view styles. */
 .inbox-preview-view {
+  block-size: 5em;
+  color: var(--ee-dark);
   line-height: 1.3em;
-  height: 5em;
-  max-height: 5em;
-  color: black;
+  max-block-size: 5em;
   overflow: hidden;
 }
+
 .inbox-preview-view .from-name {
-  font-weight: bold;
   font-size: 110%;
+  font-weight: bold;
   overflow: hidden;
   white-space: nowrap;
 }
+
 .inbox-preview-view .subject {
   overflow: hidden;
   white-space: nowrap;
 }
+
 .inbox-preview-view .body-preview {
-  color: #888;
+  color: var(--ee-gray);
   overflow: hidden;
-}
\ No newline at end of file
+}
diff --git a/easy_email.info.yml b/easy_email.info.yml
index 0b7c4a89fea850c44ed365812309b05334e4fc5a..7ae16612b2c8456aee9923a6507110cbb72e1894 100644
--- a/easy_email.info.yml
+++ b/easy_email.info.yml
@@ -7,5 +7,4 @@ configure: entity.easy_email_type.collection
 
 dependencies:
   - drupal:text
-  - jquery_ui_resizable:jquery_ui_resizable
   - token:token
diff --git a/easy_email.libraries.yml b/easy_email.libraries.yml
index d5d7763f3e00636bbdd441a83aa2d1dc66c28e65..829ae55512eb4f814f2d1c6e4de9556134791f0c 100644
--- a/easy_email.libraries.yml
+++ b/easy_email.libraries.yml
@@ -3,10 +3,3 @@ preview:
   css:
     theme:
       css/easy-email-preview.css: {}
-  js:
-    js/easy-email-preview.js: {}
-  dependencies:
-    - core/drupal
-    - core/jquery
-    - core/once
-    - jquery_ui_resizable/resizable
diff --git a/js/easy-email-preview.js b/js/easy-email-preview.js
deleted file mode 100644
index 40bde6afb7ec173364bc52849fbcc03fdd6320ad..0000000000000000000000000000000000000000
--- a/js/easy-email-preview.js
+++ /dev/null
@@ -1,17 +0,0 @@
-(function ($, Drupal, once) {
-
-  'use strict';
-
-  Drupal.behaviors.resizablePreview = {
-    attach: function (context, settings) {
-      $(once('resizable-preview', '.easy-email-resizable', context)).each(function(i, element) {
-
-        $(element).resizable({
-          minHeight: 100,
-          minWidth: 200
-        });
-      });
-    }
-  };
-
-})(jQuery, Drupal, once);
diff --git a/templates/easy-email-type-preview.html.twig b/templates/easy-email-type-preview.html.twig
index cb759d258086af6127ce6e762d7a7081db0c4547..f7a8d4d1caf8a9a1cc10ba81002554959a64ff99 100644
--- a/templates/easy-email-type-preview.html.twig
+++ b/templates/easy-email-type-preview.html.twig
@@ -15,35 +15,64 @@
  * @ingroup themeable
  */
 #}
+
 {{ attach_library('easy_email/preview') }}
+
 <div{{ attributes.addClass('easy-email', 'preview') }}>
-  <fieldset data-drupal-selector="headers">
-    <legend>{{ 'Headers' | t }}</legend>
+  <fieldset class="easy-email__fieldset" data-drupal-selector="headers">
+    <legend class="easy-email__legend">{{ 'Headers'|t }}</legend>
+
     {% for header in headers %}
-      <div data-drupal-selector="header-{{ header.name }}"><label>{{ header.name }}:</label> <span class="value">{{ header.value }}</span></div>
+      <div data-drupal-selector="header-{{ header.name }}">
+        <label>{{ header.name }}:</label> <span class="value">{{ header.value }}</span>
+      </div>
     {% endfor %}
   </fieldset>
-  <fieldset data-drupal-selector="inbox-preview">
-    <legend>{{ 'Inbox preview' | t }}</legend>
-    <div class="easy-email-resizable inbox-preview-resizable">
+
+  <fieldset class="easy-email__fieldset" data-drupal-selector="inbox-preview">
+    <legend class="easy-email__legend">{{ 'Inbox preview'|t }}</legend>
+
+    <div class="easy-email__inbox-preview easy-email__resizable">
       {{ inbox_preview }}
     </div>
   </fieldset>
+
   {% if preview_html_url %}
-    <fieldset data-drupal-selector="html-body" class="easy-email-resizable">
-      <legend>{{ 'HTML body' | t }}</legend>
-      <iframe frameBorder="0" width="100%" height="100%" src="{{ preview_html_url }}"></iframe>
+    <fieldset class="easy-email__fieldset" data-drupal-selector="html-body">
+      <legend class="easy-email__legend">{{ 'HTML body'|t }}</legend>
+
+      <div class="easy-email__resizable">
+        <iframe
+          class="easy-email__iframe"
+          frameBorder="0"
+          height="100%"
+          src="{{ preview_html_url }}"
+          width="100%"
+        ></iframe>
+      </div>
     </fieldset>
   {% endif %}
+
   {% if preview_plain_url %}
-    <fieldset data-drupal-selector="plain-body" class="easy-email-resizable">
-      <legend>{{ 'Plain text body' | t }}</legend>
-      <iframe frameBorder="0" width="100%" height="100%" src="{{ preview_plain_url }}"></iframe>
+    <fieldset class="easy-email__fieldset" data-drupal-selector="plain-body">
+      <legend class="easy-email__legend">{{ 'Plain text body'|t }}</legend>
+
+      <div class="easy-email__resizable">
+        <iframe
+          class="easy-email__iframe"
+          frameBorder="0"
+          height="100%"
+          src="{{ preview_plain_url }}"
+          width="100%"
+        ></iframe>
+      </div>
     </fieldset>
   {% endif %}
+
   {% if attachments %}
-    <fieldset data-drupal-selector="attachments">
-      <legend>{{ 'Attachments' | t }}</legend>
+    <fieldset class="easy-email__fieldset" data-drupal-selector="attachments">
+      <legend class="easy-email__legend">{{ 'Attachments'|t }}</legend>
+
       {{ attachments }}
     </fieldset>
   {% endif %}