diff --git a/core/includes/form.inc b/core/includes/form.inc
index 0ef70f8..ac191fc 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -2831,10 +2831,15 @@ function theme_fieldset($variables) {
     $element['#attributes']['aria-describedby'] = $description_id;
   }
 
+  $legend_attributes = array();
+  if (isset($element['#title_display']) && $element['#title_display'] == 'invisible') {
+    $legend_attributes['class'][] = 'element-invisible';
+  }
+
   $output = '<fieldset' . new Attribute($element['#attributes']) . '>';
   if (!empty($element['#title'])) {
     // Always wrap fieldset legends in a SPAN for CSS positioning.
-    $output .= '<legend><span class="fieldset-legend">' . $element['#title'] . '</span></legend>';
+    $output .= '<legend' . new Attribute($legend_attributes) . '><span class="fieldset-legend">' . $element['#title'] . '</span></legend>';
   }
   $output .= '<div class="fieldset-wrapper">';
   if (!empty($element['#description'])) {
@@ -4653,12 +4658,18 @@ function theme_form_element($variables) {
     '#title_display' => 'before',
   );
 
+  // Take over any #wrapper_attributes defined by the element.
+  // @todo Temporary hack for #type 'item'.
+  // @see http://drupal.org/node/1829202
+  if (isset($element['#wrapper_attributes'])) {
+    $attributes = $element['#wrapper_attributes'];
+  }
   // Add element #id for #type 'item'.
   if (isset($element['#markup']) && !empty($element['#id'])) {
     $attributes['id'] = $element['#id'];
   }
   // Add element's #type and #name as class to aid with JS/CSS selectors.
-  $attributes['class'] = array('form-item');
+  $attributes['class'][] = 'form-item';
   if (!empty($element['#type'])) {
     $attributes['class'][] = 'form-type-' . strtr($element['#type'], '_', '-');
   }
@@ -4781,8 +4792,7 @@ function theme_form_element_label($variables) {
     $attributes['for'] = $element['#id'];
   }
 
-  // The leading whitespace helps visually separate fields from inline labels.
-  return ' <label' . new Attribute($attributes) . '>' . $t('!title !required', array('!title' => $title, '!required' => $required)) . "</label>\n";
+  return '<label' . new Attribute($attributes) . '>' . $t('!title!required', array('!title' => $title, '!required' => $required)) . '</label>';
 }
 
 /**
diff --git a/core/modules/node/lib/Drupal/node/NodeFormController.php b/core/modules/node/lib/Drupal/node/NodeFormController.php
index bd8a2cb..55e027c 100644
--- a/core/modules/node/lib/Drupal/node/NodeFormController.php
+++ b/core/modules/node/lib/Drupal/node/NodeFormController.php
@@ -108,54 +108,69 @@ public function form(array $form, array &$form_state, EntityInterface $node) {
       '#access' => isset($language_configuration['language_hidden']) && !$language_configuration['language_hidden'],
     );
 
+    // @todo Change #type to 'container'.
+    // @todo Rename key to 'advanced'.
     $form['additional_settings'] = array(
-      '#type' => 'vertical_tabs',
+      '#type' => 'details',
+      '#attributes' => array('class' => array('entity-meta')),
       '#weight' => 99,
     );
+    $form['additional_settings']['meta'] = array (
+      '#type' => 'fieldset',
+      '#attributes' => array('class' => array('meta', 'flat')),
+      '#type' => 'container',
+      '#weight' => -100,
+      // @todo Geez. Any .status is styled as OK icon? Really?
+      'published' => array(
+        '#type' => 'item',
+        '#wrapper_attributes' => array('class' => array('published')),
+        '#markup' => !empty($node->status) ? t('Published') : t('Not published'),
+        '#access' => !empty($node->nid),
+      ),
+      'changed' => array(
+        '#type' => 'item',
+        '#wrapper_attributes' => array('class' => array('changed', 'container-inline')),
+        '#title' => t('Last saved'),
+        '#markup' => !$node->isNew() ? format_date($node->changed, 'short') : t('Not saved yet'),
+      ),
+      'author' => array(
+        '#type' => 'item',
+        '#wrapper_attributes' => array('class' => array('author', 'container-inline')),
+        '#title' => t('Author'),
+        '#markup' => user_format_name(user_load($node->uid)),
+      ),
+    );
 
     // Add a log field if the "Create new revision" option is checked, or if the
     // current user has the ability to check that option.
-    $form['revision_information'] = array(
-      '#type' => 'details',
+    $form['additional_settings']['meta']['revision_information'] = array(
+      '#type' => 'container',
       '#title' => t('Revision information'),
-      '#collapsible' => TRUE,
-      // Collapsed by default when "Create new revision" is unchecked.
-      '#collapsed' => !$node->isNewRevision(),
-      '#group' => 'additional_settings',
       '#attributes' => array(
         'class' => array('node-form-revision-information'),
       ),
-      '#attached' => array(
-        'js' => array(drupal_get_path('module', 'node') . '/node.js'),
-      ),
       '#weight' => 20,
       '#access' => $node->isNewRevision() || user_access('administer nodes'),
     );
 
-    $form['revision_information']['revision'] = array(
+    $form['additional_settings']['meta']['revision']['revision'] = array(
       '#type' => 'checkbox',
       '#title' => t('Create new revision'),
       '#default_value' => $node->isNewRevision(),
       '#access' => user_access('administer nodes'),
     );
 
-    // Check the revision log checkbox when the log textarea is filled in.
-    // This must not happen if "Create new revision" is enabled by default,
-    // since the state would auto-disable the checkbox otherwise.
-    if (!$node->isNewRevision()) {
-      $form['revision_information']['revision']['#states'] = array(
-        'checked' => array(
-          'textarea[name="log"]' => array('empty' => FALSE),
-        ),
-      );
-    }
-
-    $form['revision_information']['log'] = array(
+    $form['additional_settings']['meta']['revision']['log'] = array(
       '#type' => 'textarea',
       '#title' => t('Revision log message'),
       '#rows' => 4,
       '#default_value' => !empty($node->log) ? $node->log : '',
       '#description' => t('Briefly describe the changes you have made.'),
+      '#states' => array(
+        'visible' => array(
+          ':input[name="revision"]' => array('checked' => TRUE),
+        ),
+      ),
     );
 
     // Node author information for administrators.
@@ -169,15 +184,6 @@ public function form(array $form, array &$form_state, EntityInterface $node) {
       '#attributes' => array(
         'class' => array('node-form-author'),
       ),
-      '#attached' => array(
-        'js' => array(
-          drupal_get_path('module', 'node') . '/node.js',
-          array(
-            'type' => 'setting',
-            'data' => array('anonymous' => $user_config->get('anonymous')),
-          ),
-        ),
-      ),
       '#weight' => 90,
     );
 
@@ -210,9 +216,6 @@ public function form(array $form, array &$form_state, EntityInterface $node) {
       '#attributes' => array(
         'class' => array('node-form-options'),
       ),
-      '#attached' => array(
-        'js' => array(drupal_get_path('module', 'node') . '/node.js'),
-      ),
       '#weight' => 95,
     );
 
diff --git a/core/modules/node/node.js b/core/modules/node/node.js
deleted file mode 100644
index cdc8cbe..0000000
--- a/core/modules/node/node.js
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * @file
- * Defines Javascript behaviors for the node module.
- */
-
-(function ($) {
-
-"use strict";
-
-Drupal.behaviors.nodeDetailsSummaries = {
-  attach: function (context) {
-    var $context = $(context);
-    $context.find('.node-form-revision-information').drupalSetSummary(function (context) {
-      var $context = $(context);
-      var revisionCheckbox = $context.find('.form-item-revision input');
-
-      // Return 'New revision' if the 'Create new revision' checkbox is checked,
-      // or if the checkbox doesn't exist, but the revision log does. For users
-      // without the "Administer content" permission the checkbox won't appear,
-      // but the revision log will if the content type is set to auto-revision.
-      if (revisionCheckbox.is(':checked') || (!revisionCheckbox.length && $context.find('.form-item-log textarea').length)) {
-        return Drupal.t('New revision');
-      }
-
-      return Drupal.t('No revision');
-    });
-
-    $context.find('.node-form-author').drupalSetSummary(function (context) {
-      var $context = $(context);
-      var name = $context.find('.form-item-name input').val() || Drupal.settings.anonymous,
-        date = $context.find('.form-item-date input').val();
-      return date ?
-        Drupal.t('By @name on @date', { '@name': name, '@date': date }) :
-        Drupal.t('By @name', { '@name': name });
-    });
-
-    $context.find('.node-form-options').drupalSetSummary(function (context) {
-      var $context = $(context);
-      var vals = [];
-
-      $context.find('input:checked').parent().each(function () {
-        vals.push(Drupal.checkPlain($.trim($(this).text())));
-      });
-
-      if (!$context.find('.form-item-status input').is(':checked')) {
-        vals.unshift(Drupal.t('Not published'));
-      }
-      return vals.join(', ');
-    });
-
-    $context.find('fieldset.node-translation-options').drupalSetSummary(function (context) {
-      var $context = $(context);
-      var translate;
-      var $checkbox = $context.find('.form-item-translation-translate input');
-
-      if ($checkbox.size()) {
-        translate = $checkbox.is(':checked') ? Drupal.t('Needs to be updated') : Drupal.t('Does not need to be updated');
-      }
-      else {
-        $checkbox = $context.find('.form-item-translation-retranslate input');
-        translate = $checkbox.is(':checked') ? Drupal.t('Flag other translations as outdated') : Drupal.t('Do not flag other translations as outdated');
-      }
-
-      return translate;
-    });
-  }
-};
-
-})(jQuery);
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 9e8fbd3..94941d7 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -3667,19 +3667,6 @@ function node_language_delete($language) {
  * Implements hook_library_info().
  */
 function node_library_info() {
-  $libraries['drupal.node'] = array(
-    'title' => 'Node',
-    'version' => VERSION,
-    'js' => array(
-      drupal_get_path('module', 'node') . '/node.js' => array(),
-    ),
-    'dependencies' => array(
-      array('system', 'jquery'),
-      array('system', 'drupal'),
-      array('system', 'drupalSettings'),
-      array('system', 'drupal.form'),
-    ),
-  );
   $libraries['drupal.node.preview'] = array(
     'title' => 'Node preview',
     'version' => VERSION,
diff --git a/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php b/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php
index 6804b6a..dcf18f7 100644
--- a/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php
+++ b/core/modules/options/lib/Drupal/options/Tests/OptionsWidgetsTest.php
@@ -500,12 +500,12 @@ function testOnOffCheckbox() {
     $this->drupalGet($fieldEditUrl);
 
     $this->assertText(
-      'Use field label instead of the "On value" as label ',
+      'Use field label instead of the "On value" as label',
       t('Display setting checkbox available.')
     );
 
     $this->assertFieldByXPath(
-      '*//label[@for="edit-' . $this->bool['field_name'] . '-und" and text()="MyOnValue "]',
+      '*//label[@for="edit-' . $this->bool['field_name'] . '-und" and text()="MyOnValue"]',
       TRUE,
       t('Default case shows "On value"')
     );
@@ -519,7 +519,7 @@ function testOnOffCheckbox() {
     // is stored and has the expected effect
     $this->drupalGet($fieldEditUrl);
     $this->assertText(
-      'Use field label instead of the "On value" as label ',
+      'Use field label instead of the "On value" as label',
       t('Display setting checkbox is available')
     );
     $this->assertFieldChecked(
@@ -527,7 +527,7 @@ function testOnOffCheckbox() {
       t('Display settings checkbox checked')
     );
     $this->assertFieldByXPath(
-      '*//label[@for="edit-' . $this->bool['field_name'] . '-und" and text()="' . $this->bool['field_name'] . ' "]',
+      '*//label[@for="edit-' . $this->bool['field_name'] . '-und" and text()="' . $this->bool['field_name'] . '"]',
       TRUE,
       t('Display label changes label of the checkbox')
     );
diff --git a/core/modules/system/system.theme.css b/core/modules/system/system.theme.css
index b56d4b5..dd36ce3 100644
--- a/core/modules/system/system.theme.css
+++ b/core/modules/system/system.theme.css
@@ -147,6 +147,9 @@ abbr.form-required, abbr.tabledrag-changed, abbr.ajax-changed {
 /**
  * Inline items.
  */
+.container-inline label:after {
+  content: ':';
+}
 .container-inline .form-actions,
 .container-inline.form-actions {
   margin-top: 0;
diff --git a/core/themes/seven/style.css b/core/themes/seven/style.css
index 9c4fff4..92d97dd 100644
--- a/core/themes/seven/style.css
+++ b/core/themes/seven/style.css
@@ -506,12 +506,6 @@ details summary {
   padding-top: 0.5em;
   padding-bottom: 0.5em;
 }
-details details {
-  background-color: #fff;
-}
-details details details {
-  background-color: #f8f8f8;
-}
 
 /**
  * Form elements.
@@ -1406,3 +1400,57 @@ details.fieldset-no-legend {
 /* @end */
 
 /* @end */
+
+/**
+ * Entity meta settings.
+ */
+.entity-meta {
+  background-color: #f2f2f2;
+}
+.entity-meta > .details-wrapper { /* REMOVEME */
+  padding: 0;
+}
+fieldset.flat { /* unused, but maybe core-worthy */
+  border: 0;
+  margin: 0;
+}
+.entity-meta .meta {
+  overflow: hidden;
+  padding-left: 0.5em;
+  padding-right: 0.5em;
+}
+.entity-meta .meta .published {
+  font-size: 1.231em;
+  font-weight: bold;
+  text-shadow: 0 1px 0 #fff;
+}
+.entity-meta .meta .changed {
+  font-style: italic; /* Eh? */
+}
+.entity-meta details {
+  border-bottom: 1px solid #959595;
+  border-left: 0;
+  border-right: 0;
+  border-top: 1px solid #fff;
+  margin: 0;
+}
+.entity-meta details .summary {
+  display: none; /* Hide JS summaries. @todo Rethink summaries. */
+}
+.entity-meta details > summary {
+  padding-top: 1em;
+  padding-bottom: 1em;
+  text-shadow: 0 1px 0 #fff;
+}
+.entity-meta :not([open]) + [open] {
+  background-color: #e2e2e2;
+  background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, .15), transparent 5px);
+  background-image: -moz-linear-gradient(top, rgba(0, 0, 0, .15), transparent 5px);
+  background-image: -o-linear-gradient(top, rgba(0, 0, 0, .15), transparent 5px);
+  background-image: linear-gradient(to bottom, rgba(0, 0, 0, .15), transparent 5px);
+  border-top: 0 none;
+  padding-top: 1px; /* Replaces former 1px border-top. */
+}
+.entity-meta details > .details-wrapper {
+  padding-top: 0;
+}
