diff --git a/template.php b/template.php
index 61a1f8f..e8b14dc 100644
--- a/template.php
+++ b/template.php
@@ -199,6 +199,24 @@ function zen_preprocess_html(&$variables, $hook) {
         break;
     }
   }
+  $panel_display = panels_get_current_page_display();
+
+  // We want to programmatically add in the body classes.
+  if ($panel_display) {
+    // Add the layout to the body classes.
+    $variables['classes_array'][] = drupal_clean_css_identifier('panels-layout-' . $panel_display->layout);
+
+    // Find the regions and what have been rendered.
+    $rendered_regions = $panel_display->renderer_handler->rendered['regions'];
+
+    _zen_apply_panels_sidebar_classes(
+      $variables['classes_array'],
+      // If first sidebar was rendered.
+      !empty($rendered_regions['sidebar_first']),
+      // If second sidebar was rendered.
+      !empty($rendered_regions['sidebar_second'])
+    );
+  }
 }
 
 /**
diff --git a/zen-internals/template.zen.inc b/zen-internals/template.zen.inc
index c5a544f..e017eb2 100644
--- a/zen-internals/template.zen.inc
+++ b/zen-internals/template.zen.inc
@@ -34,3 +34,24 @@ function _zen_preprocess_html(&$variables, $hook) {
     drupal_add_css($directory . $stylesheet, array('group' => CSS_THEME, 'every_page' => TRUE));
   }
 }
+
+/**
+ * Apply necessary classes that we need for Panels layouts.
+ */
+function _zen_apply_panels_sidebar_classes(array &$classes, $has_sidebar_first, $has_sidebar_second) {
+  // Remove any layout classes if they already exist.
+  $classes = array_diff($classes, array('no-sidebars', 'two-sidebars', 'sidebar-first', 'sidebar-second'));
+
+  if ($has_sidebar_first && $has_sidebar_second) {
+    $classes[] = 'two-sidebars';
+  }
+  elseif ($has_sidebar_first) {
+    $classes[] = 'sidebar-first';
+  }
+  elseif ($has_sidebar_second) {
+    $classes[] = 'sidebar-second';
+  }
+  else {
+    $classes[] = 'no-sidebars';
+  }
+}
