diff --git a/core/modules/node/node.admin.css b/core/modules/node/node.admin.css
new file mode 100644
index 0000000000000000000000000000000000000000..5777b1f15963061355d755805a47e4abb1020815
--- /dev/null
+++ b/core/modules/node/node.admin.css
@@ -0,0 +1,12 @@
+
+/**
+ * @file
+ * Styles for administration pages.
+ */
+
+/**
+ * Revisions overview screen.
+ */
+.revision-current {
+  background: #ffc;
+}
diff --git a/core/modules/node/node.css b/core/modules/node/node.css
deleted file mode 100644
index 07540fa90b94a6138305a7bf573b5a432c662ee5..0000000000000000000000000000000000000000
--- a/core/modules/node/node.css
+++ /dev/null
@@ -1,10 +0,0 @@
-
-.node-unpublished {
-  background-color: #fff4f4;
-}
-.preview .node {
-  background-color: #ffffea;
-}
-td.revision-current {
-  background: #ffc;
-}
diff --git a/core/modules/node/node.info b/core/modules/node/node.info
index 33b5dd2457b14c98bf5da9b5dcf34472b46c2f0e..0e9a3af3b58c51e32e3109864c8b4e29c88f679b 100644
--- a/core/modules/node/node.info
+++ b/core/modules/node/node.info
@@ -7,4 +7,3 @@ files[] = node.module
 files[] = node.test
 dependencies[] = entity
 configure = admin/structure/types
-stylesheets[all][] = node.css
diff --git a/core/modules/node/node.module b/core/modules/node/node.module
index 5cb80789826c552e36249caa5cda8e39cd121f8c..152360f48151adce03be7744d9a9da02fd4312e4 100644
--- a/core/modules/node/node.module
+++ b/core/modules/node/node.module
@@ -1565,19 +1565,19 @@ function template_preprocess_node(&$variables) {
   // Gather node classes.
   $variables['classes_array'][] = drupal_html_class('node-' . $node->type);
   if ($variables['promote']) {
-    $variables['classes_array'][] = 'node-promoted';
+    $variables['classes_array'][] = 'promoted';
   }
   if ($variables['sticky']) {
-    $variables['classes_array'][] = 'node-sticky';
+    $variables['classes_array'][] = 'sticky';
   }
   if (!$variables['status']) {
-    $variables['classes_array'][] = 'node-unpublished';
+    $variables['classes_array'][] = 'unpublished';
   }
-  if ($variables['teaser']) {
-    $variables['classes_array'][] = 'node-teaser';
+  if ($variables['view_mode']) {
+    $variables['classes_array'][] = drupal_html_class('view-mode-' . $variables['view_mode']);
   }
   if (isset($variables['preview'])) {
-    $variables['classes_array'][] = 'node-preview';
+    $variables['classes_array'][] = 'preview';
   }
 
   // Clean up name so there are no underscores.
diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc
index 30d4164ad62be0f189b643611e97a73d03ea62a6..34a8d4f3be9c8123c1dc83ecb874ef1307fac31a 100644
--- a/core/modules/node/node.pages.inc
+++ b/core/modules/node/node.pages.inc
@@ -449,7 +449,7 @@ function node_preview($node) {
 function theme_node_preview($variables) {
   $node = $variables['node'];
 
-  $output = '<div class="preview">';
+  $output = '';
 
   $preview_trimmed_version = FALSE;
 
@@ -469,7 +469,6 @@ function theme_node_preview($variables) {
   else {
     $output .= $full;
   }
-  $output .= "</div>\n";
 
   return $output;
 }
@@ -630,6 +629,9 @@ function node_revision_overview($node) {
     '#theme' => 'table',
     '#rows' => $rows,
     '#header' => $header,
+    '#attached' => array (
+      'css' => array(drupal_get_path('module', 'node') . '/node.admin.css'),
+    ),
   );
 
   return $build;
diff --git a/core/modules/node/node.tpl.php b/core/modules/node/node.tpl.php
index adb9aa2f65473e78ee8fe30da9690e9bb07d5f5a..a251ecc6c038ff8cba550fd394d4f8f683f6aef4 100644
--- a/core/modules/node/node.tpl.php
+++ b/core/modules/node/node.tpl.php
@@ -26,13 +26,13 @@
  *   - node-[type]: The current node type. For example, if the node is a
  *     "Article" it would result in "node-article". Note that the machine
  *     name will often be in a short form of the human readable label.
- *   - node-teaser: Nodes in teaser form.
- *   - node-preview: Nodes in preview mode.
+ *   - view-mode-[view_mode]: The View Mode of the node e.g. teaser or full.
+ *   - preview: Nodes in preview mode.
  *   The following are controlled through the node publishing options.
- *   - node-promoted: Nodes promoted to the front page.
- *   - node-sticky: Nodes ordered above other non-sticky nodes in teaser
+ *   - promoted: Nodes promoted to the front page.
+ *   - sticky: Nodes ordered above other non-sticky nodes in teaser
  *     listings.
- *   - node-unpublished: Unpublished nodes visible only to administrators.
+ *   - unpublished: Unpublished nodes visible only to administrators.
  * - $title_prefix (array): An array containing additional output populated by
  *   modules, intended to be displayed in front of the main title tag that
  *   appears in the template.
diff --git a/core/modules/simpletest/tests/common.test b/core/modules/simpletest/tests/common.test
index fee383105348fa91b553a3694598c040a00ce178..30449b652982a2320be97ee7648a1edfef36e790 100644
--- a/core/modules/simpletest/tests/common.test
+++ b/core/modules/simpletest/tests/common.test
@@ -806,7 +806,7 @@ class CommonCascadingStylesheetsTestCase extends DrupalWebTestCase {
   function testAddCssFileWithQueryString() {
     $this->drupalGet('common-test/query-string');
     $query_string = variable_get('css_js_query_string', '0');
-    $this->assertRaw(drupal_get_path('module', 'node') . '/node.css?' . $query_string, t('Query string was appended correctly to css.'));
+    $this->assertRaw(drupal_get_path('module', 'node') . '/node.admin.css?' . $query_string, t('Query string was appended correctly to css.'));
     $this->assertRaw(drupal_get_path('module', 'node') . '/node-fake.css?arg1=value1&amp;arg2=value2', t('Query string not escaped on a URI.'));
   }
 }
diff --git a/core/modules/simpletest/tests/common_test.module b/core/modules/simpletest/tests/common_test.module
index e1cfdf288a473dbe438728725ac35321c194eb35..187fee55b06d2ad5f15a2b19cc0d619ad88171ab 100644
--- a/core/modules/simpletest/tests/common_test.module
+++ b/core/modules/simpletest/tests/common_test.module
@@ -270,7 +270,7 @@ function common_test_library_info() {
  */
 function common_test_js_and_css_querystring() {
    drupal_add_js(drupal_get_path('module', 'node') . '/node.js');
-   drupal_add_css(drupal_get_path('module', 'node') . '/node.css');
+   drupal_add_css(drupal_get_path('module', 'node') . '/node.admin.css');
    // A relative URI may have a query string.
    drupal_add_css('/' . drupal_get_path('module', 'node') . '/node-fake.css?arg1=value1&arg2=value2');
    return '';
diff --git a/core/modules/system/system.theme.css b/core/modules/system/system.theme.css
index c3913c16759e939bf6b6dbabc6f199d2cf5aa80d..d5f41e1743444c6b5a5af9e9d4f6bba9010573bc 100644
--- a/core/modules/system/system.theme.css
+++ b/core/modules/system/system.theme.css
@@ -37,6 +37,16 @@ tr.odd {
   padding: 0.1em 0.6em;
 }
 
+/**
+ * Publishing status.
+ */
+.unpublished {
+  background-color: #fff4f4;
+}
+.preview {
+  background-color: #ffffea;
+}
+
 /**
  * Markup generated by theme_tablesort_indicator().
  */
diff --git a/core/themes/bartik/css/style.css b/core/themes/bartik/css/style.css
index 588a48fabe7f509f885ef910d7ab03a0c7c5614c..3413e178a14652f53b30008a9c28e4a720e0444d 100644
--- a/core/themes/bartik/css/style.css
+++ b/core/themes/bartik/css/style.css
@@ -570,33 +570,28 @@ h1#page-title {
 .node .content {
   font-size: 1.071em;
 }
-.node-teaser .content {
+.view-mode-teaser .content {
   font-size: 1em;
 }
-.node-teaser h2 {
+.view-mode-teaser h2 {
   margin-top: 0;
   padding-top: 0.5em;
 }
-.node-teaser h2 a {
+.view-mode-teaser h2 a {
   color: #181818;
 }
-.node-teaser {
+.view-mode-teaser {
   border-bottom: 1px solid #d3d7d9;
   margin-bottom: 30px;
   padding-bottom: 15px;
 }
-.node-sticky {
+.view-mode-teaser.sticky {
   background: #f9f9f9;
   background: rgba(0, 0, 0, 0.024);
   border: 1px solid #d3d7d9;
   padding: 0 15px 15px;
 }
-.node-full {
-  background: none;
-  border: none;
-  padding: 0;
-}
-.node-teaser .content {
+.view-mode-teaser .content {
   clear: none;
   line-height: 1.6;
 }
@@ -622,8 +617,8 @@ h1#page-title {
 .field-type-taxonomy-term-reference ul.links {
   font-size: 0.8em;
 }
-.node-teaser .field-type-taxonomy-term-reference .field-label,
-.node-teaser .field-type-taxonomy-term-reference ul.links {
+.view-mode-teaser .field-type-taxonomy-term-reference .field-label,
+.view-mode-teaser .field-type-taxonomy-term-reference ul.links {
   font-size: 0.821em;
 }
 .field-type-taxonomy-term-reference ul.links {
@@ -647,11 +642,11 @@ ul.links {
   color: #68696b;
   font-size: 0.821em;
 }
-.node-unpublished {
+.unpublished {
   margin: -20px -15px 0;
   padding: 20px 15px 0;
 }
-.node-unpublished .comment-text .comment-arrow {
+.unpublished .comment-text .comment-arrow {
   border-left: 1px solid #fff4f4;
   border-right: 1px solid #fff4f4;
 }
diff --git a/core/themes/bartik/template.php b/core/themes/bartik/template.php
index 59a909984bcc78e173572762f1d2b6fe57cb73f1..459a593eaf96d3027131d1fb9e742bdc5f0d2311 100644
--- a/core/themes/bartik/template.php
+++ b/core/themes/bartik/template.php
@@ -101,15 +101,6 @@ function bartik_process_maintenance_page(&$variables) {
   }
 }
 
-/**
- * Override or insert variables into the node template.
- */
-function bartik_preprocess_node(&$variables) {
-  if ($variables['view_mode'] == 'full' && node_is_page($variables['node'])) {
-    $variables['classes_array'][] = 'node-full';
-  }
-}
-
 /**
  * Override or insert variables into the block template.
  */
diff --git a/core/themes/bartik/templates/node.tpl.php b/core/themes/bartik/templates/node.tpl.php
index 234b8994ab5ea85c2785108a989211100b468953..eb745a41a72d377dbd0d343492a8c4d5e00d572f 100644
--- a/core/themes/bartik/templates/node.tpl.php
+++ b/core/themes/bartik/templates/node.tpl.php
@@ -26,13 +26,13 @@
  *   - node-[type]: The current node type. For example, if the node is a
  *     "Article" it would result in "node-article". Note that the machine
  *     name will often be in a short form of the human readable label.
- *   - node-teaser: Nodes in teaser form.
- *   - node-preview: Nodes in preview mode.
+ *   - view-mode-[view_mode]: The View Mode of the node e.g. teaser or full.
+ *   - preview: Nodes in preview mode.
  *   The following are controlled through the node publishing options.
- *   - node-promoted: Nodes promoted to the front page.
- *   - node-sticky: Nodes ordered above other non-sticky nodes in teaser
+ *   - promoted: Nodes promoted to the front page.
+ *   - sticky: Nodes ordered above other non-sticky nodes in teaser
  *     listings.
- *   - node-unpublished: Unpublished nodes visible only to administrators.
+ *   - unpublished: Unpublished nodes visible only to administrators.
  * - $title_prefix (array): An array containing additional output populated by
  *   modules, intended to be displayed in front of the main title tag that
  *   appears in the template.