diff --git a/gin.theme b/gin.theme
index 8dc7634..5095918 100755
--- a/gin.theme
+++ b/gin.theme
@@ -101,6 +101,9 @@ function gin_theme_suggestions_page_alter(&$suggestions, $variables) {
     $arg = str_replace(["/", '-'], ['_', '_'], $path);
     $suggestions[] = 'page__' . $arg;
   }
+  if (_gin_is_content_form()) {
+    $suggestions[] = 'page__content_form';
+  }
 }
 
 /**
@@ -197,6 +200,18 @@ function gin_form_alter(&$form, $form_state, $form_id) {
       $form['actions']['submit']['#weight'] = '99';
     }
 
+    $form['#theme'][] = 'node_edit_form';
+    $form['#theme'][] = 'node_form';
+    $form['#attributes']['class'][] = 'node-form';
+    $form['#attached']['library'][] = 'node/form';
+    $form['#attached']['library'][] = 'claro/node-form';
+
+    $form['advanced']['#type'] = 'container';
+    $form['advanced']['#accordion'] = TRUE;
+
+    $form['meta']['#type'] = 'container';
+    $form['meta']['#access'] = TRUE;
+
     if (isset($form['actions'])) {
       // Create gin_sticky group.
       $form['gin_sticky'] = [
@@ -1222,14 +1237,29 @@ function _gin_is_content_form($form = NULL, $form_state = NULL, $form_id = NULL)
 
   // Routes to include.
   $route_names = [
-    'node.add',
-    'entity.node.content_translation_add',
-    'quick_node_clone.node.quick_clone',
-    'entity.node.edit_form',
+    '/^node\.add$/',
+    '/^quick_node_clone\..*\.quick_clone$/',
+    '/^entity\..*\.add_form$/',
+    '/^entity\..*\.content_translation_add$/',
+    '/^entity\..*\.edit_form$/',
+  ];
+  $excluded_routes = [
+    'entity.view.add_form',
+    'entity.view.content_translation_add',
+    'entity.view.edit_form',
+    'entity.menu.add_form',
+    'entity.menu.content_translation_add',
+    'entity.menu.edit_form',
+    'entity.menu_link_content.add_form',
+    'entity.menu_link_content.content_translation_add',
+    'entity.menu_link_content.edit_form',
+    'entity.metatag_defaults.add_form',
+    'entity.metatag_defaults.content_translation_add',
+    'entity.metatag_defaults.edit_form',
   ];
 
   if (
-    in_array($route_name, $route_names, TRUE) ||
+    array_reduce($route_names, function($is_matching, $route_pattern) use ($route_name, $excluded_routes) { return $is_matching || (!in_array($route_name, $excluded_routes) && preg_match($route_pattern, $route_name)); }, false) ||
     ($form_state && ($form_state->getBuildInfo()['base_form_id'] ?? NULL) === 'node_form') ||
     ($route_name === 'entity.group_content.create_form' && strpos($form_id, 'group_node') === FALSE)
   ) {
diff --git a/templates/page/page--clone.html.twig b/templates/page/page--clone.html.twig
index 79b531c..e44829e 100644
--- a/templates/page/page--clone.html.twig
+++ b/templates/page/page--clone.html.twig
@@ -1 +1 @@
-{% extends '@gin/page/page--node.html.twig' %}
+{% extends '@gin/page/page--content-form.html.twig' %}
diff --git a/templates/page/page--content-form.html.twig b/templates/page/page--content-form.html.twig
new file mode 100644
index 0000000..a5a7386
--- /dev/null
+++ b/templates/page/page--content-form.html.twig
@@ -0,0 +1,74 @@
+{#
+/**
+ * @file
+ * Claro's theme implementation to display a single Drupal page.
+ *
+ * The doctype, html, head, and body tags are not in this template. Instead
+ * they can be found in the html.html.twig template normally located in the
+ * core/modules/system directory.
+ *
+ * Available variables:
+ *
+ * General utility variables:
+ * - base_path: The base URL path of the Drupal installation. Will usually be
+ *   "/" unless you have installed Drupal in a sub-directory.
+ * - is_front: A flag indicating if the current page is the front page.
+ * - logged_in: A flag indicating if the user is registered and signed in.
+ * - is_admin: A flag indicating if the user has permission to access
+ *   administration pages.
+ *
+ * Site identity:
+ * - front_page: The URL of the front page. Use this instead of base_path when
+ *   linking to the front page. This includes the language domain or prefix.
+ *
+ * Page content (in order of occurrence in the default page.html.twig):
+ * - node: Fully loaded node, if there is an automatically-loaded node
+ *   associated with the page and the node ID is the second argument in the
+ *   page's path (e.g. node/12345 and node/12345/revisions, but not
+ *   comment/reply/12345).
+ *
+ * Regions:
+ * - page.header: Items for the header region.
+ * - page.pre_content: Items for the pre-content region.
+ * - page.breadcrumb: Items for the breadcrumb region.
+ * - page.highlighted: Items for the highlighted region.
+ * - page.help: Dynamic help text, mostly for admin pages.
+ * - page.content: The main content of the current page.
+ *
+ * @see template_preprocess_page()
+ * @see html.html.twig
+ */
+#}
+{% set page_title_block = active_admin_theme ~ '_page_title' %}
+{% set local_actions_block = active_admin_theme ~ '_local_actions' %}
+
+<div class="page-wrapper__node-edit-form">
+  <header class="region region-sticky">
+    <div class="layout-container region-sticky__items">
+      {{ page.header[page_title_block] }}
+      {{ page.content[local_actions_block] }}
+    </div>
+  </header>
+
+  <div class="content-header clearfix">
+    <div class="layout-container">
+      {{ page.header|without(page_title_block) }}
+    </div>
+  </div>
+
+  <div class="sticky-shadow"></div>
+
+  <div class="layout-container">
+    {{ page.pre_content }}
+    <main class="page-content clearfix" role="main">
+      <div class="visually-hidden"><a id="main-content" tabindex="-1"></a></div>
+      {{ page.highlighted }}
+      {% if page.help %}
+        <div class="help">
+          {{ page.help }}
+        </div>
+      {% endif %}
+      {{ page.content|without(local_actions_block) }}
+    </main>
+  </div>
+</div>
diff --git a/templates/page/page--group.html.twig b/templates/page/page--group.html.twig
index 79b531c..e44829e 100644
--- a/templates/page/page--group.html.twig
+++ b/templates/page/page--group.html.twig
@@ -1 +1 @@
-{% extends '@gin/page/page--node.html.twig' %}
+{% extends '@gin/page/page--content-form.html.twig' %}
diff --git a/templates/page/page--node.html.twig b/templates/page/page--node.html.twig
index a5a7386..e44829e 100644
--- a/templates/page/page--node.html.twig
+++ b/templates/page/page--node.html.twig
@@ -1,74 +1 @@
-{#
-/**
- * @file
- * Claro's theme implementation to display a single Drupal page.
- *
- * The doctype, html, head, and body tags are not in this template. Instead
- * they can be found in the html.html.twig template normally located in the
- * core/modules/system directory.
- *
- * Available variables:
- *
- * General utility variables:
- * - base_path: The base URL path of the Drupal installation. Will usually be
- *   "/" unless you have installed Drupal in a sub-directory.
- * - is_front: A flag indicating if the current page is the front page.
- * - logged_in: A flag indicating if the user is registered and signed in.
- * - is_admin: A flag indicating if the user has permission to access
- *   administration pages.
- *
- * Site identity:
- * - front_page: The URL of the front page. Use this instead of base_path when
- *   linking to the front page. This includes the language domain or prefix.
- *
- * Page content (in order of occurrence in the default page.html.twig):
- * - node: Fully loaded node, if there is an automatically-loaded node
- *   associated with the page and the node ID is the second argument in the
- *   page's path (e.g. node/12345 and node/12345/revisions, but not
- *   comment/reply/12345).
- *
- * Regions:
- * - page.header: Items for the header region.
- * - page.pre_content: Items for the pre-content region.
- * - page.breadcrumb: Items for the breadcrumb region.
- * - page.highlighted: Items for the highlighted region.
- * - page.help: Dynamic help text, mostly for admin pages.
- * - page.content: The main content of the current page.
- *
- * @see template_preprocess_page()
- * @see html.html.twig
- */
-#}
-{% set page_title_block = active_admin_theme ~ '_page_title' %}
-{% set local_actions_block = active_admin_theme ~ '_local_actions' %}
-
-<div class="page-wrapper__node-edit-form">
-  <header class="region region-sticky">
-    <div class="layout-container region-sticky__items">
-      {{ page.header[page_title_block] }}
-      {{ page.content[local_actions_block] }}
-    </div>
-  </header>
-
-  <div class="content-header clearfix">
-    <div class="layout-container">
-      {{ page.header|without(page_title_block) }}
-    </div>
-  </div>
-
-  <div class="sticky-shadow"></div>
-
-  <div class="layout-container">
-    {{ page.pre_content }}
-    <main class="page-content clearfix" role="main">
-      <div class="visually-hidden"><a id="main-content" tabindex="-1"></a></div>
-      {{ page.highlighted }}
-      {% if page.help %}
-        <div class="help">
-          {{ page.help }}
-        </div>
-      {% endif %}
-      {{ page.content|without(local_actions_block) }}
-    </main>
-  </div>
-</div>
+{% extends '@gin/page/page--content-form.html.twig' %}
