diff --git a/core/includes/form.inc b/core/includes/form.inc
index ce5779c..8af8ec2 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -964,14 +964,10 @@ function theme_fieldset($variables) {
     $output .= '<legend' . new Attribute($legend_attributes) . '><span class="fieldset-legend">' . $element['#title'] . '</span></legend>';
   }
   $output .= '<div class="fieldset-wrapper">';
+  $output .= $element['#children'];
   if (!empty($element['#description'])) {
-    $attributes = array('class' => 'fieldset-description', 'id' => $description_id);
+    $attributes = array('class' => 'description', 'id' => $description_id);
     $output .= '<div' . new Attribute($attributes) . '>' . $element['#description'] . '</div>';
-
-  }
-  $output .= $element['#children'];
-  if (isset($element['#value'])) {
-    $output .= $element['#value'];
   }
   $output .= '</div>';
   $output .= "</fieldset>\n";
@@ -1256,7 +1252,11 @@ function form_pre_render_conditional_form_element($element) {
   }
 
   if (isset($element['#title']) || isset($element['#description'])) {
-    $element['#theme_wrappers'][] = 'form_element';
+    // @see #type 'fieldgroup'
+    $element['#theme_wrappers'][] = 'fieldset';
+    $element['#attributes']['class'][] = 'fieldgroup';
+    // @todo Duplicated into an additional inner/straw DIV container.
+    $element['#attributes']['class'][] = 'form-composite';
   }
   return $element;
 }
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 0b25e59..3adde1c 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -2572,7 +2572,7 @@ function install_display_requirements($install_state, $requirements) {
  */
 function _install_configure_form($form, &$form_state, &$install_state) {
   $form['site_information'] = array(
-    '#type' => 'details',
+    '#type' => 'fieldgroup',
     '#title' => t('Site information'),
   );
   $form['site_information']['site_name'] = array(
@@ -2589,11 +2589,11 @@ function _install_configure_form($form, &$form_state, &$install_state) {
     '#required' => TRUE,
     '#weight' => -15,
   );
+
   $form['admin_account'] = array(
-    '#type' => 'details',
+    '#type' => 'fieldgroup',
     '#title' => t('Site maintenance account'),
   );
-
   $form['admin_account']['account']['#tree'] = TRUE;
   $form['admin_account']['account']['name'] = array('#type' => 'textfield',
     '#title' => t('Username'),
@@ -2603,7 +2603,6 @@ function _install_configure_form($form, &$form_state, &$install_state) {
     '#weight' => -10,
     '#attributes' => array('class' => array('username')),
   );
-
   $form['admin_account']['account']['mail'] = array(
     '#type' => 'email',
     '#title' => t('E-mail address'),
@@ -2618,10 +2617,9 @@ function _install_configure_form($form, &$form_state, &$install_state) {
   );
 
   $form['regional_settings'] = array(
-    '#type' => 'details',
+    '#type' => 'fieldgroup',
     '#title' => t('Regional settings'),
   );
-
   $countries = \Drupal::service('country_manager')->getList();
   $form['regional_settings']['site_default_country'] = array(
     '#type' => 'select',
@@ -2632,7 +2630,6 @@ function _install_configure_form($form, &$form_state, &$install_state) {
     '#description' => t('Select the default country for the site.'),
     '#weight' => 0,
   );
-
   $form['regional_settings']['date_default_timezone'] = array(
     '#type' => 'select',
     '#title' => t('Default time zone'),
@@ -2644,7 +2641,7 @@ function _install_configure_form($form, &$form_state, &$install_state) {
   );
 
   $form['update_notifications'] = array(
-    '#type' => 'details',
+    '#type' => 'fieldgroup',
     '#title' => t('Update notifications'),
   );
   $form['update_notifications']['update_status_module'] = array(
diff --git a/core/modules/system/css/system.module.css b/core/modules/system/css/system.module.css
index dddac44..318e922 100644
--- a/core/modules/system/css/system.module.css
+++ b/core/modules/system/css/system.module.css
@@ -27,6 +27,14 @@
 }
 
 /**
+ * Unboxed fieldsets for grouping form elements.
+ */
+.fieldgroup {
+  border-width: 0;
+  padding: 0;
+}
+
+/**
  * Collapsible details.
  *
  * @see collapse.js
diff --git a/core/modules/system/css/system.theme.css b/core/modules/system/css/system.theme.css
index f205034..dd03d49 100644
--- a/core/modules/system/css/system.theme.css
+++ b/core/modules/system/css/system.theme.css
@@ -55,6 +55,7 @@ tr.even .form-item {
   margin-bottom: 0;
   white-space: nowrap;
 }
+.form-composite > .fieldset-wrapper > .description,
 .form-item .description {
   font-size: 0.85em;
 }
@@ -62,6 +63,7 @@ label.option {
   display: inline;
   font-weight: normal;
 }
+.form-composite > legend,
 h4.label {
   font-size: inherit;
   font-weight: bold;
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 065d280..2c5e52a 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -551,6 +551,9 @@ function system_element_info() {
     '#pre_render' => array('form_pre_render_group'),
     '#theme_wrappers' => array('fieldset'),
   );
+  $types['fieldgroup'] = $types['fieldset'] + array(
+    '#attributes' => array('class' => array('fieldgroup')),
+  );
   $types['details'] = array(
     '#collapsed' => FALSE,
     '#value' => NULL,
