Index: unlimited_css.module
===================================================================
--- unlimited_css.module	(revision 2927)
+++ unlimited_css.module	(working copy)
@@ -15,33 +15,74 @@
 function unlimited_css_preprocess_page(&$vars) {
   
   $preprocess_css = variable_get('preprocess_css', 0);
+  if (variable_get('unlimited_preprocess_css', 1)) {
+    _unlimited_css_preprocess_page(&$vars);
+  }
+}
+
+function _unlimited_css_preprocess_page(&$vars) {
+  
+  $preprocess_css = variable_get('preprocess_css', 0);
   if (!$preprocess_css) {
-    $styles = '';
-    foreach ($vars['css'] as $media => $types) {
-      $import = '';
-      $counter = 0;
-      foreach ($types as $files) {
-        foreach ($files as $css => $preprocess) {
-          if (file_exists($css)) {
-            $import .= '@import "'. base_path() . $css .'";'."\n";
-            $counter++;
-            if ($counter == 25) {
-              $styles .= "\n".'<style type="text/css" media="'. $media .'">'."\n". $import .'</style>';
-              $import = '';
-              $counter = 0;
+    
+    if ($vars['css_alt']) $css = $vars['css_alt'];
+    else $css = $vars['css'];
+    $styles['module'] = '';
+    $styles['theme'] = '';
+    $styles['other'] = '';      
+    
+    foreach ($css as $media => $types) {
+      $import['module'] = '';
+      $import['theme'] = '';
+      $import['other'] = '';
+      $counter['module'] = 0;
+      $counter['theme'] = 0;
+      $counter['other'] = 0;
+      foreach ($types as $type => $files) {
+        if ($type == 'module') {
+            // Setup theme overrides for module styles.
+            $theme_styles = array();
+            foreach (array_keys($css[$media]['theme']) as $theme_style) {
+              $theme_styles[] = basename($theme_style);
             }
+        }
+
+        foreach ($types[$type] as $file => $preprocess) {
+          if (($type != 'module' && $type != 'theme') || $preprocess) $use_type =  'other';
+          else $use_type = $type;
+          if ($type == 'module' && in_array(str_replace('-rtl.css', '.css', basename($file)), $theme_styles)) {
+              // Unset the file to prevent its inclusion when CSS aggregation is enabled.
+              unset($types[$type][$file]);
+              continue;
           }
+          if (file_exists($file)) {
+                $counter[$use_type]++;
+                $import[$use_type] .= '@import "'. base_path() . $file .'";'."\n";
+                if ($counter[$use_type] == 25) {
+                  $styles[$use_type] .= "\n".'<style type="text/css" media="'. $media .'">'."\n". $import[$use_type] .'</style>';
+                  $import[$use_type] = '';
+                  $counter[$use_type] = 0;
+                }
+          }
         }
       }
-      if ($import) {
-        $styles .= "\n".'<style type="text/css" media="'. $media .'">'."\n". $import .'</style>';
+      foreach (array('module','theme','other') as $use_type) {
+        if ($import[$use_type]) {
+            $styles[$use_type] .= "\n".'<style type="text/css" media="'. $media .'">'."\n". $import[$use_type] .'</style>';
+        }
       }
     }
     if (!empty($vars['conditional_styles'])) {
       $styles .= "\n". $vars['conditional_styles'];
     }    
-    if ($styles) {
-      $vars['styles'] = $styles;
+    
+    foreach (array('module','other','theme') as $use_type) {
+        if ($styles[$use_type]) {
+            $style.= $styles[$use_type];
+        }
     }
+    if ($style) {
+      $vars['styles'] = $style;
+    }
   }
 }
\ No newline at end of file
