diff --git a/core/modules/system/system.admin.css b/core/modules/system/system.admin.css
index a7f2cbd..5d6e754 100644
--- a/core/modules/system/system.admin.css
+++ b/core/modules/system/system.admin.css
@@ -182,6 +182,9 @@ table.system-status-report td.status-icon div {
   height: 16px;
   width: 16px;
 }
+table.system-status-report tr.all-ok td.status-icon div {
+  background-image: url(../../misc/message-16-ok.png);
+}
 table.system-status-report tr.error td.status-icon div {
   background-image: url(../../misc/message-16-error.png);
 }
diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc
index a5194f7..a3d2de9 100644
--- a/core/modules/system/system.admin.inc
+++ b/core/modules/system/system.admin.inc
@@ -2250,6 +2250,7 @@ function theme_system_admin_index($variables) {
  */
 function theme_status_report($variables) {
   $requirements = $variables['requirements'];
+  $requirements_severity = drupal_requirements_severity($requirements);
   $severities = array(
     REQUIREMENT_INFO => array(
       'title' => t('Info'),
@@ -2272,14 +2273,15 @@ function theme_status_report($variables) {
 
   foreach ($requirements as $requirement) {
     if (empty($requirement['#type'])) {
-      // Always use the explicit requirement severity, if defined. Otherwise,
-      // default to REQUIREMENT_OK in the installer to visually confirm that
-      // installation requirements are met. And default to REQUIREMENT_INFO to
+      // Always use the explicit requirement severity, if it is a warning or
+      // error. Otherwise, default to REQUIREMENT_OK when there are no warnings
+      // or errors at all (and always in the installer) to visually confirm
+      // that requirements are met, and REQUIREMENT_INFO in other cases, to
       // denote neutral information without special visualization.
-      if (isset($requirement['severity'])) {
-        $severity = $severities[(int) $requirement['severity']];
+      if (isset($requirement['severity']) && in_array($requirement['severity'], array(REQUIREMENT_WARNING, REQUIREMENT_ERROR))) {
+        $severity = $severities[$requirement['severity']];
       }
-      elseif (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'install') {
+      elseif ($requirements_severity == REQUIREMENT_OK || drupal_installation_attempted()) {
         $severity = $severities[REQUIREMENT_OK];
       }
       else {
@@ -2288,8 +2290,9 @@ function theme_status_report($variables) {
 
       $severity['icon'] = '<div title="' . $severity['title'] . '"><span class="element-invisible">' . $severity['title'] . '</span></div>';
 
-      // Output table rows.
-      $output .= '<tr class="' . $severity['class'] . '">';
+      // Output table rows. Add a special "all-ok" class if this row is part of
+      // a table in which all requirements have been met.
+      $output .= '<tr class="' . $severity['class'] . ($requirements_severity == REQUIREMENT_OK ? ' all-ok' : '') . '">';
       $output .= '<td class="status-icon">' . $severity['icon'] . '</td>';
       $output .= '<td class="status-title">' . $requirement['title'] . '</td>';
       $output .= '<td class="status-value">' . $requirement['value'];
