diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php
index 72ca5f3e7..fb8ecbb0c 100644
--- a/src/__celerity_resource_map__.php
+++ b/src/__celerity_resource_map__.php
@@ -1,58 +1,138 @@
 <?php
 
 /**
  * This file is automatically generated. Use 'celerity_mapper.php' to rebuild
  * it.
  * @generated
  */
 
 celerity_register_resource_map(array(
-  'phabricator-core-css' =>
+  'aphront-dialog-view-css' =>
+  array(
+    'path' => '/res/2ef90210/rsrc/css/aphront/dialog-view.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'aphront-form-view-css' =>
+  array(
+    'path' => '/res/517031e5/rsrc/css/aphront/form-view.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'aphront-panel-view-css' =>
+  array(
+    'path' => '/res/d96d5826/rsrc/css/aphront/panel-view.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'aphront-side-nav-view-css' =>
+  array(
+    'path' => '/res/89b99d7d/rsrc/css/aphront/side-nav-view.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'aphront-table-view-css' =>
+  array(
+    'path' => '/res/639b3af2/rsrc/css/aphront/table-view.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'phabricator-standard-page-view' =>
   array(
-    'path' => '/res/ffa0140c/rsrc/css/base.css',
+    'path' => '/res/f1a74aa4/rsrc/css/application/base/standard-page-view.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
   ),
-  'phabricator-syntax-css' =>
+  'differential-changeset-view-css' =>
+  array(
+    'path' => '/res/08a5c816/rsrc/css/application/differential/changeset-view.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'differential-core-view-css' =>
+  array(
+    'path' => '/res/f750b85d/rsrc/css/application/differential/core.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'differential-table-of-contents-css' =>
+  array(
+    'path' => '/res/cd5c966d/rsrc/css/application/differential/table-of-contents.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'phabricator-directory-css' =>
+  array(
+    'path' => '/res/795c7b4e/rsrc/css/application/directory/phabricator-directory.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'phabricator-core-buttons-css' =>
+  array(
+    'path' => '/res/5f44fe89/rsrc/css/core/buttons.css',
+    'type' => 'css',
+    'requires' =>
+    array(
+    ),
+  ),
+  'phabricator-core-css' =>
   array(
-    'path' => '/res/bf911307/rsrc/css/syntax.css',
+    'path' => '/res/39ce37c2/rsrc/css/core/core.css',
     'type' => 'css',
     'requires' =>
     array(
     ),
   ),
   'javelin-init-dev' =>
   array(
     'path' => '/res/c57a9e89/rsrc/js/javelin/init.dev.js',
     'type' => 'js',
     'requires' =>
     array(
     ),
   ),
   'javelin-init-prod' =>
   array(
     'path' => '/res/f0172c54/rsrc/js/javelin/init.min.js',
     'type' => 'js',
     'requires' =>
     array(
     ),
   ),
   'javelin-lib-dev' =>
   array(
     'path' => '/res/3e747182/rsrc/js/javelin/javelin.dev.js',
     'type' => 'js',
     'requires' =>
     array(
     ),
   ),
   'javelin-lib-prod' =>
   array(
     'path' => '/res/9438670e/rsrc/js/javelin/javelin.min.js',
     'type' => 'js',
     'requires' =>
     array(
     ),
   ),
 ));
diff --git a/src/applications/directory/controller/main/PhabricatorDirectoryMainController.php b/src/applications/directory/controller/main/PhabricatorDirectoryMainController.php
index 3ae36f0ea..13af2686f 100644
--- a/src/applications/directory/controller/main/PhabricatorDirectoryMainController.php
+++ b/src/applications/directory/controller/main/PhabricatorDirectoryMainController.php
@@ -1,76 +1,80 @@
 <?php
 
 /*
  * Copyright 2011 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 class PhabricatorDirectoryMainController
   extends PhabricatorDirectoryController {
 
   public function processRequest() {
+
+
     $items = id(new PhabricatorDirectoryItem())->loadAll();
     $items = msort($items, 'getSortKey');
 
     $categories = id(new PhabricatorDirectoryCategory())->loadAll();
     $categories = msort($categories, 'getSequence');
 
     $category_map = mpull($categories, 'getName', 'getID');
     $category_map[0] = 'Free Radicals';
     $items = mgroup($items, 'getCategoryID');
 
+    require_celerity_resource('phabricator-directory-css');
+
     $content = array();
     foreach ($category_map as $id => $category_name) {
       $category_items = idx($items, $id);
       if (!$category_items) {
         continue;
       }
 
       $item_markup = array();
       foreach ($category_items as $item) {
         $item_markup[] =
           '<div>'.
             '<h2>'.
               phutil_render_tag(
                 'a',
                 array(
                   'href' => $item->getHref(),
                 ),
                 phutil_escape_html($item->getName())).
             '</h2>'.
             '<p>'.phutil_escape_html($item->getDescription()).'</p>'.
           '</div>';
       }
 
       $content[] =
         '<div class="aphront-directory-category">'.
           '<h1>'.phutil_escape_html($category_name).'</h1>'.
           '<div class="aphront-directory-group">'.
             implode("\n", $item_markup).
           '</div>'.
         '</div>';
     }
 
     $content =
       '<div class="aphront-directory-list">'.
         implode("\n", $content).
       '</div>';
 
     return $this->buildStandardPageResponse($content, array(
       'title' => 'Directory',
       'tab'   => 'directory',
     ));
   }
 
 }
diff --git a/src/applications/directory/controller/main/__init__.php b/src/applications/directory/controller/main/__init__.php
index 9d1846c24..a059f07cf 100644
--- a/src/applications/directory/controller/main/__init__.php
+++ b/src/applications/directory/controller/main/__init__.php
@@ -1,17 +1,18 @@
 <?php
 /**
  * This file is automatically generated. Lint this module to rebuild it.
  * @generated
  */
 
 
 
 phutil_require_module('phabricator', 'applications/directory/controller/base');
 phutil_require_module('phabricator', 'applications/directory/storage/category');
 phutil_require_module('phabricator', 'applications/directory/storage/item');
+phutil_require_module('phabricator', 'infratructure/celerity/api');
 
 phutil_require_module('phutil', 'markup');
 phutil_require_module('phutil', 'utils');
 
 
 phutil_require_source('PhabricatorDirectoryMainController.php');
diff --git a/src/view/control/table/AphrontTableView.php b/src/view/control/table/AphrontTableView.php
index 94925d15b..f7d4d8d44 100755
--- a/src/view/control/table/AphrontTableView.php
+++ b/src/view/control/table/AphrontTableView.php
@@ -1,134 +1,136 @@
 <?php
 
 /*
  * Copyright 2011 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 class AphrontTableView extends AphrontView {
 
   protected $data;
   protected $headers;
   protected $rowClasses = array();
   protected $columnClasses = array();
   protected $zebraStripes = true;
   protected $noDataString;
   protected $className;
 
   public function __construct(array $data) {
     $this->data = $data;
   }
 
   public function setHeaders(array $headers) {
     $this->headers = $headers;
     return $this;
   }
 
   public function setColumnClasses(array $column_classes) {
     $this->columnClasses = $column_classes;
     return $this;
   }
 
   public function setRowClasses(array $row_classes) {
     $this->rowClasses = $row_classes;
     return $this;
   }
 
   public function setNoDataString($no_data_string) {
     $this->noDataString = $no_data_string;
     return $this;
   }
 
   public function setClassName($class_name) {
     $this->className = $class_name;
     return $this;
   }
 
   public function setZebraStripes($zebra_stripes) {
     $this->zebraStripes = $zebra_stripes;
     return $this;
   }
 
   public function render() {
+    require_celerity_resource('aphront-table-view-css');
+
     $class = $this->className;
     if ($class !== null) {
       $class = ' class="aphront-table-view '.$class.'"';
     } else {
       $class = ' class="aphront-table-view"';
     }
     $table = array('<table'.$class.'>');
 
     $col_classes = array();
     foreach ($this->columnClasses as $key => $class) {
       if (strlen($class)) {
         $col_classes[] = ' class="'.$class.'"';
       } else {
         $col_classes[] = null;
       }
     }
 
     $headers = $this->headers;
     if ($headers) {
       $table[] = '<tr>';
       foreach ($headers as $col_num => $header) {
         $class = idx($col_classes, $col_num);
         $table[] = '<th'.$class.'>'.$header.'</th>';
       }
       $table[] = '</tr>';
     }
 
     $data = $this->data;
     if ($data) {
       $row_num = 0;
       foreach ($data as $row) {
         while (count($row) > count($col_classes)) {
           $col_classes[] = null;
         }
         $class = idx($this->rowClasses, $row_num);
         if ($this->zebraStripes && ($row_num % 2)) {
           if ($class !== null) {
             $class = 'alt alt-'.$class;
           } else {
             $class = 'alt';
           }
         }
         if ($class !== null) {
           $class = ' class="'.$class.'"';
         }
         $table[] = '<tr'.$class.'>';
         $col_num = 0;
         foreach ($row as $value) {
           $class = $col_classes[$col_num];
           if ($class !== null) {
             $table[] = '<td'.$class.'>';
           } else {
             $table[] = '<td>';
           }
           $table[] = $value.'</td>';
           ++$col_num;
         }
         ++$row_num;
       }
     } else {
       $colspan = max(count($headers), 1);
       $table[] =
         '<tr class="no-data"><td colspan="'.$colspan.'">'.
           coalesce($this->noDataString, 'No data available.').
         '</td></tr>';
     }
     $table[] = '</table>';
     return implode('', $table);
   }
 }
 
diff --git a/src/view/control/table/__init__.php b/src/view/control/table/__init__.php
index 3fe5b8a8a..b7edc7e84 100644
--- a/src/view/control/table/__init__.php
+++ b/src/view/control/table/__init__.php
@@ -1,14 +1,15 @@
 <?php
 /**
  * This file is automatically generated. Lint this module to rebuild it.
  * @generated
  */
 
 
 
+phutil_require_module('phabricator', 'infratructure/celerity/api');
 phutil_require_module('phabricator', 'view/base');
 
 phutil_require_module('phutil', 'utils');
 
 
 phutil_require_source('AphrontTableView.php');
diff --git a/src/view/dialog/AphrontDialogView.php b/src/view/dialog/AphrontDialogView.php
index 9ffb49815..600adbe15 100755
--- a/src/view/dialog/AphrontDialogView.php
+++ b/src/view/dialog/AphrontDialogView.php
@@ -1,90 +1,91 @@
 <?php
 
 /*
  * Copyright 2011 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 class AphrontDialogView extends AphrontView {
 
   private $title;
   private $submitButton;
   private $cancelURI;
   private $submitURI;
 
   public function setSubmitURI($uri) {
     $this->submitURI = $uri;
     return $this;
   }
 
   public function setTitle($title) {
     $this->title = $title;
     return $this;
   }
 
   public function getTitle() {
     return $this->title;
   }
 
   public function addSubmitButton($text = 'Okay') {
     $this->submitButton = $text;
     return $this;
   }
 
   public function addCancelButton($uri) {
     $this->cancelURI = $uri;
     return $this;
   }
 
   final public function render() {
+    require_celerity_resource('aphront-dialog-view-css');
 
     $buttons = array();
     if ($this->submitButton) {
       $buttons[] =
         '<button name="__submit__">'.
           phutil_escape_html($this->submitButton).
         '</button>';
     }
 
     if ($this->cancelURI) {
       $buttons[] = phutil_render_tag(
         'a',
         array(
           'href'  => $this->cancelURI,
           'class' => 'button grey',
         ),
         'Cancel');
     }
 
     return phutil_render_tag(
       'form',
       array(
         'class'   => 'aphront-dialog-view',
         'action'  => $this->submitURI,
         'method'  => 'post',
       ),
       '<input type="hidden" name="__form__" value="1" />'.
       '<div class="aphront-dialog-head">'.
         phutil_escape_html($this->title).
       '</div>'.
       '<div class="aphront-dialog-body">'.
         $this->renderChildren().
       '</div>'.
       '<div class="aphront-dialog-tail">'.
         implode('', $buttons).
         '<div style="clear: both;"></div>'.
       '</div>');
   }
 
 }
diff --git a/src/view/dialog/__init__.php b/src/view/dialog/__init__.php
index 851628305..f01e8af4d 100644
--- a/src/view/dialog/__init__.php
+++ b/src/view/dialog/__init__.php
@@ -1,14 +1,15 @@
 <?php
 /**
  * This file is automatically generated. Lint this module to rebuild it.
  * @generated
  */
 
 
 
+phutil_require_module('phabricator', 'infratructure/celerity/api');
 phutil_require_module('phabricator', 'view/base');
 
 phutil_require_module('phutil', 'markup');
 
 
 phutil_require_source('AphrontDialogView.php');
diff --git a/src/view/form/base/AphrontFormView.php b/src/view/form/base/AphrontFormView.php
index 5cf93d98f..25a051f5c 100755
--- a/src/view/form/base/AphrontFormView.php
+++ b/src/view/form/base/AphrontFormView.php
@@ -1,72 +1,73 @@
 <?php
 
 /*
  * Copyright 2011 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 final class AphrontFormView extends AphrontView {
 
   private $action;
   private $method = 'POST';
   private $header;
   private $data = array();
   private $encType;
 
   public function setAction($action) {
     $this->action = $action;
     return $this;
   }
 
   public function setMethod($method) {
     $this->method = $method;
     return $this;
   }
 
   public function setEncType($enc_type) {
     $this->encType = $enc_type;
     return $this;
   }
 
   public function render() {
+    require_celerity_resource('aphront-form-view-css');
     return phutil_render_tag(
       'form',
       array(
         'action'  => $this->action,
         'method'  => $this->method,
         'class'   => 'aphront-form-view',
         'enctype' => $this->encType,
       ),
       $this->renderDataInputs().
       $this->renderChildren());
   }
 
   private function renderDataInputs() {
     $data = $this->data + array(
       '__form__' => 1,
     );
     $inputs = array();
     foreach ($data as $key => $value) {
       $inputs[] = phutil_render_tag(
         'input',
         array(
           'type'  => 'hidden',
           'name'  => $key,
           'value' => $value,
         ));
     }
     return implode("\n", $inputs);
   }
 
 }
diff --git a/src/view/form/base/__init__.php b/src/view/form/base/__init__.php
index 6258e19e4..a5fe0834f 100644
--- a/src/view/form/base/__init__.php
+++ b/src/view/form/base/__init__.php
@@ -1,14 +1,15 @@
 <?php
 /**
  * This file is automatically generated. Lint this module to rebuild it.
  * @generated
  */
 
 
 
+phutil_require_module('phabricator', 'infratructure/celerity/api');
 phutil_require_module('phabricator', 'view/base');
 
 phutil_require_module('phutil', 'markup');
 
 
 phutil_require_source('AphrontFormView.php');
diff --git a/src/view/layout/panel/AphrontPanelView.php b/src/view/layout/panel/AphrontPanelView.php
index 2672002d5..026c7f709 100755
--- a/src/view/layout/panel/AphrontPanelView.php
+++ b/src/view/layout/panel/AphrontPanelView.php
@@ -1,80 +1,82 @@
 <?php
 
 /*
  * Copyright 2011 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 final class AphrontPanelView extends AphrontView {
 
   const WIDTH_FULL = 'full';
   const WIDTH_FORM = 'form';
   const WIDTH_WIDE = 'wide';
 
   private $createButton;
   private $header;
   private $width;
 
   public function setCreateButton($create_button, $href) {
 
     $this->createButton = phutil_render_tag(
       'a',
       array(
         'href' => $href,
         'class' => 'create-button button green',
       ),
       $create_button);
 
     return $this;
   }
 
   public function setHeader($header) {
     $this->header = $header;
     return $this;
   }
 
   public function setWidth($width) {
     $this->width = $width;
     return $this;
   }
 
   public function render() {
     if ($this->header !== null) {
       $header = '<h1>'.$this->header.'</h1>';
     } else {
       $header = null;
     }
 
     if ($this->createButton !== null) {
       $button = $this->createButton;
     } else {
       $button = null;
     }
 
     $table = $this->renderChildren();
 
+    require_celerity_resource('aphront-panel-view-css');
+
     $class = array('aphront-panel-view');
     if ($this->width) {
       $class[] = 'aphront-panel-width-'.$this->width;
     }
 
     return
       '<div class="'.implode(' ', $class).'">'.
         $button.
         $header.
         $table.
       '</div>';
   }
 
 }
diff --git a/src/view/layout/panel/__init__.php b/src/view/layout/panel/__init__.php
index fa47c4179..b785c8826 100644
--- a/src/view/layout/panel/__init__.php
+++ b/src/view/layout/panel/__init__.php
@@ -1,14 +1,15 @@
 <?php
 /**
  * This file is automatically generated. Lint this module to rebuild it.
  * @generated
  */
 
 
 
+phutil_require_module('phabricator', 'infratructure/celerity/api');
 phutil_require_module('phabricator', 'view/base');
 
 phutil_require_module('phutil', 'markup');
 
 
 phutil_require_source('AphrontPanelView.php');
diff --git a/src/view/layout/sidenav/AphrontSideNavView.php b/src/view/layout/sidenav/AphrontSideNavView.php
index c0ababfad..6a2d52573 100755
--- a/src/view/layout/sidenav/AphrontSideNavView.php
+++ b/src/view/layout/sidenav/AphrontSideNavView.php
@@ -1,45 +1,47 @@
 <?php
 
 /*
  * Copyright 2011 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 final class AphrontSideNavView extends AphrontView {
 
   protected $items = array();
 
   public function addNavItem($item) {
     $this->items[] = $item;
     return $this;
   }
 
   public function render() {
     $view = new AphrontNullView();
     $view->appendChild($this->items);
 
+    require_celerity_resource('aphront-side-nav-view-css');
+
     return
       '<table class="aphront-side-nav-view">'.
         '<tr>'.
           '<th class="aphront-side-nav-navigation">'.
             $view->render().
           '</th>'.
           '<td class="aphront-side-nav-content">'.
             $this->renderChildren().
           '</td>'.
         '</tr>'.
       '</table>';
   }
 
 }
diff --git a/src/view/layout/sidenav/__init__.php b/src/view/layout/sidenav/__init__.php
index b32c493b6..cc651dfe3 100644
--- a/src/view/layout/sidenav/__init__.php
+++ b/src/view/layout/sidenav/__init__.php
@@ -1,13 +1,14 @@
 <?php
 /**
  * This file is automatically generated. Lint this module to rebuild it.
  * @generated
  */
 
 
 
+phutil_require_module('phabricator', 'infratructure/celerity/api');
 phutil_require_module('phabricator', 'view/base');
 phutil_require_module('phabricator', 'view/null');
 
 
 phutil_require_source('AphrontSideNavView.php');
diff --git a/src/view/page/standard/PhabricatorStandardPageView.php b/src/view/page/standard/PhabricatorStandardPageView.php
index d44ed78aa..235df7647 100755
--- a/src/view/page/standard/PhabricatorStandardPageView.php
+++ b/src/view/page/standard/PhabricatorStandardPageView.php
@@ -1,128 +1,130 @@
 <?php
 
 /*
  * Copyright 2011 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 class PhabricatorStandardPageView extends AphrontPageView {
 
   private $baseURI;
   private $applicationName;
   private $tabs = array();
   private $selectedTab;
   private $glyph;
   private $bodyContent;
 
   public function setApplicationName($application_name) {
     $this->applicationName = $application_name;
     return $this;
   }
 
   public function getApplicationName() {
     return $this->applicationName;
   }
 
   public function setBaseURI($base_uri) {
     $this->baseURI = $base_uri;
     return $this;
   }
 
   public function getBaseURI() {
     return $this->baseURI;
   }
 
   public function setTabs(array $tabs, $selected_tab) {
     $this->tabs = $tabs;
     $this->selectedTab = $selected_tab;
     return $this;
   }
 
   public function getTitle() {
     return $this->getGlyph().' '.parent::getTitle();
   }
 
-  
+
   protected function willRenderPage() {
     require_celerity_resource('phabricator-core-css');
-    
+    require_celerity_resource('phabricator-core-buttons-css');
+    require_celerity_resource('phabricator-standard-page-view');
+
     $this->bodyContent = $this->renderChildren();
   }
 
 
   protected function getHead() {
     $response = CelerityAPI::getStaticResourceResponse();
     return
       $response->renderResourcesOfType('css').
       '<script type="text/javascript">window.__DEV__=1;</script>'.
       '<script type="text/javascript" src="/rsrc/js/javelin/init.dev.js">'.
       '</script>';
   }
 
   public function setGlyph($glyph) {
     $this->glyph = $glyph;
     return $this;
   }
 
   public function getGlyph() {
     return $this->glyph;
   }
 
   protected function getBody() {
 
     $tabs = array();
     foreach ($this->tabs as $name => $tab) {
       $tabs[] = phutil_render_tag(
         'a',
         array(
           'href'  => idx($tab, 'href'),
           'class' => ($name == $this->selectedTab)
-            ? 'aphront-selected-tab'
+            ? 'phabricator-selected-tab'
             : null,
         ),
         phutil_escape_html(idx($tab, 'name')));
     }
     $tabs = implode('', $tabs);
     if ($tabs) {
-      $tabs = '<span class="aphront-head-tabs">'.$tabs.'</span>';
+      $tabs = '<span class="phabricator-head-tabs">'.$tabs.'</span>';
     }
 
     return
-      '<div class="aphront-standard-page">'.
-        '<div class="aphront-standard-header">'.
+      '<div class="phabricator-standard-page">'.
+        '<div class="phabricator-standard-header">'.
           '<a href="/">Phabricator</a> '.
           phutil_render_tag(
             'a',
             array(
               'href'  => $this->getBaseURI(),
-              'class' => 'aphront-head-appname',
+              'class' => 'phabricator-head-appname',
             ),
             phutil_escape_html($this->getApplicationName())).
           $tabs.
         '</div>'.
         $this->bodyContent.
         '<div style="clear: both;"></div>'.
       '</div>';
   }
 
   protected function getTail() {
     $response = CelerityAPI::getStaticResourceResponse();
     return
       $response->renderResourcesOfType('js').
       '<script type="text/javascript">'.
         'JX.Stratcom.mergeData(0, {});'.
       '</script>';
   }
 
 }
diff --git a/webroot/rsrc/css/aphront/dialog-view.css b/webroot/rsrc/css/aphront/dialog-view.css
new file mode 100644
index 000000000..bc80a7961
--- /dev/null
+++ b/webroot/rsrc/css/aphront/dialog-view.css
@@ -0,0 +1,42 @@
+/**
+ * @provides aphront-dialog-view-css
+ */
+
+
+
+.aphront-dialog-view {
+  width: 480px;
+  padding: 8px;
+  background: #666;
+  margin: auto;
+}
+
+.aphront-dialog-head {
+  background:   #003366;
+  border:       none;
+  font-size:    15px;
+  padding:      5px 12px 6px;
+  color:        #ffffff;
+}
+
+
+.aphront-dialog-body {
+  background: #ffffff;
+  padding: 16px 12px;
+  border: none;
+  overflow: hidden;
+}
+
+.aphront-dialog-tail {
+  border: none;
+  background: #ededed;
+  padding: 0.5em;
+  text-align: right;
+}
+
+.aphront-dialog-tail button,
+.aphront-dialog-tail a.button {
+  float: right;
+  margin-left: .5em;
+}
+
diff --git a/webroot/rsrc/css/aphront/form-view.css b/webroot/rsrc/css/aphront/form-view.css
new file mode 100644
index 000000000..e3e7cc8bb
--- /dev/null
+++ b/webroot/rsrc/css/aphront/form-view.css
@@ -0,0 +1,79 @@
+/**
+ * @provides aphront-form-view-css
+ */
+
+.aphront-form-view {
+  background: #e7e7e7;
+  border: 1px solid #c4c4c4;
+  padding: 1em;
+}
+
+.aphront-form-view label {
+  padding-top: 4px;
+  width: 14%;
+  float: left;
+  text-align: right;
+  font-weight: bold;
+  font-size: 13px;
+  color: #666666;
+}
+
+.aphront-form-input {
+  margin-left: 15%;
+  margin-right: 25%;
+  width: 60%;
+}
+
+.aphront-form-error {
+  width: 23%;
+  float: right;
+  color: #aa0000;
+  font-weight: bold;
+  padding-top: 4px;
+}
+
+.aphront-form-input input,
+.aphront-form-input textarea {
+  font-size: 12px;
+  width: 100%;
+}
+
+.aphront-form-input textarea {
+  height: 12em;
+}
+
+.aphront-form-control {
+  padding: 4px;
+}
+
+.aphront-form-control-submit button,
+.aphront-form-control-submit a.button {
+  float: right;
+  margin: 1em 0 0em 2%;
+}
+
+.aphront-form-view .aphront-form-caption {
+  font-size: 11px;
+  color: #444444;
+  text-align: right;
+  clear: both;
+  margin-right: 25%;
+  margin-left: 15%;
+}
+
+.aphront-error-view {
+  width: 720px;
+  margin: 1em auto;
+  border: 1px solid #aa0000;
+  padding: 1em;
+  background: #f9b9bc;
+}
+
+.aphront-form-instructions {
+  margin: 2em 3%;
+}
+
+.aphront-form-control-static .aphront-form-input {
+  padding-top: 4px;
+  font-size: 13px;
+}
diff --git a/webroot/rsrc/css/aphront/panel-view.css b/webroot/rsrc/css/aphront/panel-view.css
new file mode 100644
index 000000000..6b816b4f7
--- /dev/null
+++ b/webroot/rsrc/css/aphront/panel-view.css
@@ -0,0 +1,35 @@
+/**
+ * @provides aphront-panel-view-css
+ */
+
+
+.aphront-panel-view {
+  background: #f3f3f3;
+  border: 1px solid #c0c0c0;
+  border-width: 1px 0 0;
+  padding: 1em 2em;
+  margin: 1em 2em;
+}
+
+.aphront-panel-view h1 {
+  font-size:        14px;
+  font-weight:      bold;
+  padding:          2px 0 8px;
+}
+
+.aphront-panel-view a.create-button {
+  float: right;
+}
+
+.aphront-panel-width-form {
+  width: 720px;
+  margin-right: auto;
+  margin-left: auto;
+}
+
+.aphront-panel-width-wide {
+  width: 1080px;
+  margin-right: auto;
+  margin-left: auto;
+}
+
diff --git a/webroot/rsrc/css/aphront/side-nav-view.css b/webroot/rsrc/css/aphront/side-nav-view.css
new file mode 100644
index 000000000..058fbe077
--- /dev/null
+++ b/webroot/rsrc/css/aphront/side-nav-view.css
@@ -0,0 +1,42 @@
+/**
+ * @provides aphront-side-nav-view-css
+ */
+
+table.aphront-side-nav-view {
+  width: 100%;
+}
+
+td.aphront-side-nav-content {
+  width: 100%;
+}
+
+th.aphront-side-nav-navigation {
+  border-right: 1px solid #bbbbbb;
+}
+
+th.aphront-side-nav-navigation a {
+  display: block;
+  margin: 0 0 2px;
+  min-width: 150px;
+  padding: 3px 8px 3px 24px;
+  font-weight: bold;
+  white-space: nowrap;
+  text-decoration: none;
+}
+
+th.aphront-side-nav-navigation a:hover {
+  text-decoration: none;
+  background:     #f3f3f9;
+}
+
+th.aphront-side-nav-navigation hr {
+  height:         1px;
+  background:     #eeeeee;
+  border:         0px;
+  margin:         12px 0px;
+}
+
+th.aphront-side-nav-navigation a.aphront-side-nav-selected,
+th.aphront-side-nav-navigation a.aphront-side-nav-selected:hover {
+  background:     #d8dfea;
+}
diff --git a/webroot/rsrc/css/aphront/table-view.css b/webroot/rsrc/css/aphront/table-view.css
new file mode 100644
index 000000000..42ab197ea
--- /dev/null
+++ b/webroot/rsrc/css/aphront/table-view.css
@@ -0,0 +1,72 @@
+/**
+ * @provides aphront-table-view-css
+ */
+
+.aphront-table-view {
+  width:            100%;
+  border-collapse:  collapse;
+  background:       #fdfdfd;
+  border:           1px solid #003366;
+}
+
+.aphront-table-view tr.alt {
+  background:       #efefef;
+}
+
+.aphront-table-view th {
+  font-size: 12px;
+  font-weight: bold;
+  padding: 4px 8px;
+  background: #003366;
+  color: white;
+  white-space: nowrap;
+}
+
+.aphront-table-view td.header {
+  padding:          4px 8px;
+  background:       #3b5998;
+  color:            white;
+  white-space:      nowrap;
+  text-align:       right;
+}
+
+.aphront-table-view td {
+  vertical-align:   top;
+  padding:          4px 8px;
+  font-size:        11px;
+  white-space:      nowrap;
+}
+
+.aphront-table-view td.action {
+  padding-top: 1px;
+  padding-bottom: 1px;
+}
+
+.aphront-table-view td.larger {
+  font-size:        14px;
+}
+
+.aphront-table-view td.pri {
+  font-weight:      bold;
+}
+
+.aphront-table-view td.wide {
+  white-space:      normal;
+  width:            100%;
+}
+
+.aphront-table-view td.right {
+  text-align:       right;
+}
+
+.aphront-table-view td.mono {
+  font-family:      "Monaco", monospace;
+  font-size:        10px;
+}
+
+.aphront-table-view tr.no-data td {
+  padding:    1em;
+  text-align: center;
+  color:      #888888;
+  font-style: italic;
+}
diff --git a/webroot/rsrc/css/application/base/standard-page-view.css b/webroot/rsrc/css/application/base/standard-page-view.css
new file mode 100644
index 000000000..cdc97ace7
--- /dev/null
+++ b/webroot/rsrc/css/application/base/standard-page-view.css
@@ -0,0 +1,48 @@
+/**
+ * @provides phabricator-standard-page-view
+ */
+
+
+.phabricator-standard-page {
+  background: #ffffff;
+  border-bottom: 1px solid #888888;
+  font-size: 14px;
+
+  -webkit-box-shadow: 0 0 6px #000;
+  -mox-box-shadow:    0 0 6px #000;
+  box-shadow:         0 0 6px #000;
+}
+
+.phabricator-standard-header {
+  background: #003366;
+  color: white;
+  padding: 1em 1em 0.5em 1em;
+  overflow: hidden;
+  position: relative;
+}
+
+.phabricator-standard-header a {
+  color: white;
+}
+
+.phabricator-standard-header .phabricator-head-tabs {
+  padding: 0 1em;
+  font-size: 13px;
+  font-weight: bold;
+}
+
+.phabricator-standard-header .phabricator-head-tabs a {
+  border-bottom: 3px solid transparent;
+  padding: 0.5em 0.75em;
+  position: relative;
+  bottom: 2px;
+}
+
+.phabricator-standard-header .phabricator-head-tabs a.phabricator-selected-tab {
+  border-bottom-color: #cccccc;
+}
+
+.phabricator-standard-header .phabricator-head-appname {
+  padding: 0 1em;
+  text-transform: uppercase;
+}
diff --git a/webroot/rsrc/css/application/differential/changeset-view.css b/webroot/rsrc/css/application/differential/changeset-view.css
new file mode 100644
index 000000000..a3d0eb14d
--- /dev/null
+++ b/webroot/rsrc/css/application/differential/changeset-view.css
@@ -0,0 +1,110 @@
+/**
+ * @provides differential-changeset-view-css
+ */
+
+.differential-diff {
+  background:         #ffffff;
+  font-family:        "Menlo", "Consolas", "Monaco", monospace;
+  font-size:          10px;
+  width:              100%;
+}
+
+.differential-diff td {
+  /* using monospace fonts makes ex/em most useful:
+   *
+   * Unfortunately, firefox 3.6 renders diffs columns for added and removed
+   * files "way-too-wide" when given em as the dimension measurement, so we
+   * use an eyeballed ex equivalent and reset it to the ch character width
+   * measurement for browsers that support that css3 measurement.
+   */
+  width:              88ex;
+  width:              81ch;
+  /*
+    Disable ligatures in Firefox. Firefox 3 has fancypants ligature support, but
+    it gets applied to monospaced fonts, which sucks because it means that the
+    "fi" ligature only takes up one character, e.g. It's probably the font's
+    fault that it even specifies ligatures (seriously, what the hell?) but
+    that's hard to fix and this is "easy" to "fix": custom letter spacing
+    disables ligatures, as long as it's at least 0.008333-repeating pixels of
+    custom letter spacing. I have no idea where this number comes from, but note
+    that .83333.. = 5/6. -epriestley
+  */
+  letter-spacing:     0.0083334px;
+  vertical-align:     top;
+  white-space:        pre;
+  padding:            0 8px 1px;
+  line-height:        16px;
+  overflow:           hidden;
+}
+
+.differential-diff th {
+  text-align:         right;
+  padding:            2px 6px;
+  width:              44px;
+  vertical-align:     top;
+  background:         #eeeeee;
+  color:              #888888;
+  cursor:             pointer;
+  border-style:       solid;
+  border-width:       0px 1px;
+  border-color:       #eeeeee #999999 #eeeeee #dddddd;
+  font-weight:        bold;
+  font-family:        "Verdana";
+  font-size:          11px;
+  overflow:           hidden;
+}
+
+.differential-diff td.old {
+  background:   #ffd0d0;
+  color:        #161111;
+}
+
+.differential-diff td.new {
+  background:   #d0ffd0;
+  color:        #111611;
+}
+
+.differential-diff td.old-full,
+.differential-diff td.old span.bright {
+  background: #ffaaaa;
+  color:      #221111;
+}
+
+.differential-diff td.new-full,
+.differential-diff td.new span.bright {
+  background: #aaffaa;
+  color:      #112211;
+}
+
+.differential-diff td.show-more,
+.differential-diff td.differential-shield {
+  background: #ffffee;
+  padding: 1em;
+  text-align: center;
+  font-family: "Verdana";
+  font-size:   11px;
+  border: 1px solid #ccccaa;
+  white-space: normal;
+}
+
+.differential-diff td.show-more {
+  color:  #999966;
+}
+
+.differential-diff td.differential-shield {
+  text-align: center;
+  max-width: 1160px;
+}
+
+.differential-diff td.differential-shield a {
+  font-weight: bold;
+}
+
+.differential-meta-notice {
+  border:           1px solid #ffdd99;
+  background:       #ffeeaa;
+  font-family:      "Verdana";
+  font-size:        11px;
+  padding:          1em;
+  margin:           0 0 6px 0;
+}
diff --git a/webroot/rsrc/css/application/differential/core.css b/webroot/rsrc/css/application/differential/core.css
new file mode 100644
index 000000000..f2aad4918
--- /dev/null
+++ b/webroot/rsrc/css/application/differential/core.css
@@ -0,0 +1,9 @@
+/**
+ * @provides differential-core-view-css
+ */
+
+.differential-primary-pane {
+  margin:           0 40px;
+  max-width:        1162px;
+}
+
diff --git a/webroot/rsrc/css/application/differential/table-of-contents.css b/webroot/rsrc/css/application/differential/table-of-contents.css
new file mode 100644
index 000000000..a50c91705
--- /dev/null
+++ b/webroot/rsrc/css/application/differential/table-of-contents.css
@@ -0,0 +1,40 @@
+/**
+ * @provides differential-table-of-contents-css
+ */
+
+.differential-toc {
+  margin:       25px 0;
+  max-width:    1118px;
+  border:       1px solid #666622;
+  background:   #efefdf;
+  padding:      15px 20px;
+  font-size:    13px;
+}
+
+.differential-toc-meta {
+  color:        #666666;
+  padding-left: 1em;
+}
+
+.differential-toc-char,
+.differential-toc-prop {
+  width: 1.25em;
+  text-align: center;
+  font-weight: bold;
+}
+
+.differential-toc-ftype {
+  padding: 0 .5em;
+  text-align: center;
+  color: #666666;
+}
+
+.differential-toc-file {
+  color: #444444;
+}
+
+.differential-toc h1 {
+  border-bottom: 1px solid #aaaa99;
+  padding-bottom: 8px;
+  margin-bottom: 8px;
+}
diff --git a/webroot/rsrc/css/application/directory/phabricator-directory.css b/webroot/rsrc/css/application/directory/phabricator-directory.css
new file mode 100644
index 000000000..27ccb828e
--- /dev/null
+++ b/webroot/rsrc/css/application/directory/phabricator-directory.css
@@ -0,0 +1,38 @@
+/**
+ * @provides phabricator-directory-css
+ */
+
+
+
+.aphront-directory-list {
+  margin: 1em 3% 8em;
+}
+
+.aphront-directory-category h1 {
+  border-bottom: 1px solid #cccccc;
+  margin-bottom: .5em;
+  padding-bottom: .1em;
+}
+
+.aphront-directory-list h2 {
+  font-size: 14px;
+  font-weight: bold;
+  padding: 0;
+  margin: 0;
+}
+
+.aphront-directory-list p {
+  color: #444444;
+  font-size: 12px;
+  padding: .05em .5em .5em;
+}
+
+.aphront-directory-category {
+  padding: 10px;
+  width: 300px;
+  float: left;
+}
+
+.aphront-directory-group {
+  padding: 0 .5em 3em;
+}
diff --git a/webroot/rsrc/css/base.css b/webroot/rsrc/css/base.css
deleted file mode 100644
index c5033f27d..000000000
--- a/webroot/rsrc/css/base.css
+++ /dev/null
@@ -1,764 +0,0 @@
-/**
- * @provides phabricator-core-css
- */
-
-html {
-  overflow-y: scroll;
-}
-
-body, div, dl, dt, dd, ul, ol, li,
-h1, h2, h3, h4, h5, h6,
-pre, form, fieldset,
-p, blockquote, th, td, button {
-  margin: 0;
-  padding: 0;
-  outline: 0;
-  border: 0;
-}
-
-html {
-  padding-bottom: 16em;
-}
-
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-
-fieldset, img {
-  border: 0;
-}
-
-address, caption, cite, code, dfn, th, var {
-  font-style: normal;
-  font-weight: normal;
-}
-
-ol, ul {
-  list-style: none;
-}
-
-caption, th {
-  text-align: left;
-}
-
-td, th {
-  vertical-align: top;
-}
-
-h1, h2, h3, h4, h5, h6 {
-  font-size: 100%;
-  font-weight: bold;
-}
-
-body {
-  font: 13px/1.231 'lucida grande', tahoma, verdana, arial, sans-serif;
-  background:   #ACACAC;
-  direction: ltr;
-  text-align: left;
-  unicode-bidi: embed;
-  *font-size: small;
-}
-
-select, input, button, textarea, button {
-  font: 99% 'lucida grande', tahoma, verdana, arial, clean, sans-serif;
-}
-
-table {
-  font-size: inherit;
-  font: 100%;
-}
-
-h1 {
-  font-size: 16px;
-}
-
-h2 {
-  font-size: 14px;
-}
-
-a {
-  -moz-outline-style: none;
-  text-decoration: none;
-  cursor: pointer;
-}
-
-a:visited {
-  color: #3b5998;
-}
-
-a:link {
-  color: #3b5998;
-}
-
-a:hover {
-  text-decoration: underline;
-}
-
-img {
-  display: block;
-}
-
-/******************************************************************************/
-
-/* Buttons */
-
-/******************************************************************************/
-
-button,
-a.button,
-a.button:visited,
-input.inputsubmit {
-  background: #5e77aa url('/rsrc/image/sprite.png') 0 0 repeat-x;
-  border: 1px solid #29447e;
-  border-bottom-color: #1a356e;
-  color: #fff;
-  cursor: pointer;
-  font-weight: bold;
-  text-align: center;
-  white-space: nowrap;
-  display: inline-block;
-  font-size: 13px;
-  overflow: visible;
-  padding: 2px 8px 3px 8px;
-  line-height: 18px;
-  vertical-align: baseline;
-  width: auto;
-  box-shadow: 0px 1px 0px rgba(0,0,0,.12);
-  -moz-box-shadow: 0px 1px 0px rgba(0,0,0,.12);
-  -webkit-box-shadow: 0px 1px 0px rgba(0,0,0,.12);
-}
-
-button {
-  *padding: 2px 4px 1px 8px;
-  _padding-right: 6px;
-}
-
-a.button,
-a.button:visited {
-  *padding: 3px 8px 4px;
-}
-
-/* Buttons with images (full size only) */
-button.icon,
-a.icon,
-a.icon:visited {
-  padding-left: 0;
-  position: relative;
-  text-indent: 29px;
-}
-
-/* Fix for IE7 within table cells ? */
-td button {
-  *width: 100%;
-  *padding-right: 8px;
-}
-
-button:active,
-a.button:active {
-  background-color: #4f6aa3;
-  background-position: 0 -100px;
-  border-bottom-color: #29447e;
-}
-
-button.green,
-a.green,
-a.green:visited {
-  background-color: #6da952;
-  background-position: 0 -50px;
-  border: 1px solid #3b6e22;
-  border-bottom-color: #2c5a15;
-}
-
-button.green:active,
-a.green:active {
-  background-color: #5e9d43;
-  background-position: 0 -150px;
-  border-bottom-color: #3b6e22;
-}
-
-button.grey,
-input.inputaux,
-a.grey,
-a.grey:visited,
-a.button.disabled,
-button.disabled {
-  background-color: #e4e5e5;
-  background-position: 0 -250px;
-  border: 1px solid #999;
-  border-bottom-color: #888;
-  color: #333;
-  box-shadow: 0px 1px 0px rgba(0,0,0,.07);
-  -moz-box-shadow: 0px 1px 0px rgba(0,0,0,.07);
-  -webkit-box-shadow: 0px 1px 0px rgba(0,0,0,.07);
-}
-
-a.disabled,
-button.disabled {
-  filter:alpha(opacity=50);
-  -moz-opacity:0.5;
-  -khtml-opacity: 0.5;
-  opacity: 0.5;
-}
-
-button.grey:active,
-a.grey:active,
-button.grey_active {
-  background-color: #dddddd;
-  background-position: 0 -200px;
-  border-bottom-color: #999;
-}
-
-button:active::-moz-focus-inner,
-button:focus::-moz-focus-inner {
-  border-color: #405071;
-}
-
-button.green:active::-moz-focus-inner,
-button.green:focus::-moz-focus-inner {
-  border-color: #4c713b;
-}
-
-button.grey:active::-moz-focus-inner,
-button.grey:focus::-moz-focus-inner {
-  border-color: #666;
-}
-
-a.button:hover {
-  text-decoration: none;
-}
-
-button.small,
-a.small,
-a.small:visited {
-  padding: 2px 7px;
-  height: auto;
-  font-size: 11px;
-  line-height: 16px;
-}
-
-
-/******************************************************************************/
-
-/* Aphront */
-
-/******************************************************************************/
-
-.aphront-standard-page {
-  background: #ffffff;
-  border-bottom: 1px solid #888888;
-  font-size: 14px;
-
-  -webkit-box-shadow: 0 0 6px #000;
-  -mox-box-shadow:    0 0 6px #000;
-  box-shadow:         0 0 6px #000;
-}
-
-.aphront-standard-header {
-  background: #003366;
-  color: white;
-  padding: 1em 1em 0.5em 1em;
-  overflow: hidden;
-  position: relative;
-}
-
-.aphront-standard-header a { 
-  color: white;
-}
-
-.aphront-standard-header .aphront-head-tabs {
-  padding: 0 1em;
-  font-size: 13px;
-  font-weight: bold;
-}
-
-.aphront-standard-header .aphront-head-tabs a {
-  border-bottom: 3px solid transparent;
-  padding: 0.5em 0.75em;
-  position: relative;
-  bottom: 2px;
-}
-
-.aphront-standard-header .aphront-head-tabs a.aphront-selected-tab {
-  border-bottom-color: #cccccc;
-}
-
-.aphront-standard-header .aphront-head-appname {
-  padding: 0 1em;
-  text-transform: uppercase;
-}
-
-
-.aphront-directory-list {
-  margin: 1em 3% 8em;
-}
-
-.aphront-directory-category h1 {
-  border-bottom: 1px solid #cccccc;
-  margin-bottom: .5em;
-  padding-bottom: .1em;
-}
-
-.aphront-directory-list h2 {
-  font-size: 14px;
-  font-weight: bold;
-  padding: 0;
-  margin: 0;
-}
-
-.aphront-directory-list p {
-  color: #444444;
-  font-size: 12px;
-  padding: .05em .5em .5em;
-}
-
-.aphront-directory-category {
-  padding: 10px;
-  width: 300px;
-  float: left;
-}
-
-.aphront-directory-group {
-  padding: 0 .5em 3em;
-}
-
-
-.aphront-panel-view {
-  background: #f3f3f3;
-  border: 1px solid #c0c0c0;
-  border-width: 1px 0 0;
-  padding: 1em 2em;
-  margin: 1em 2em;
-}
-
-.aphront-panel-view h1 {
-  font-size:        14px;
-  font-weight:      bold;
-  padding:          2px 0 8px;
-}
-
-.aphront-panel-view a.create-button {
-  float: right;
-}
-
-.aphront-panel-width-form {
-  width: 720px;
-  margin-right: auto;
-  margin-left: auto;
-}
-
-.aphront-panel-width-wide {
-  width: 1080px;
-  margin-right: auto;
-  margin-left: auto;
-}  
-
-.aphront-table-view {
-  width:            100%;
-  border-collapse:  collapse;
-  background:       #fdfdfd;
-  border:           1px solid #003366;
-}
-
-.aphront-table-view tr.alt {
-  background:       #efefef;
-}
-
-.aphront-table-view th {
-  font-size: 12px;
-  font-weight: bold;
-  padding: 4px 8px;
-  background: #003366;
-  color: white;
-  white-space: nowrap;
-}
-
-.aphront-table-view td.header {
-  padding:          4px 8px;
-  background:       #3b5998;
-  color:            white;
-  white-space:      nowrap;
-  text-align:       right;
-}
-
-.aphront-table-view td {
-  vertical-align:   top;
-  padding:          4px 8px;
-  font-size:        11px;
-  white-space:      nowrap;
-}
-
-.aphront-table-view td.action {
-  padding-top: 1px;
-  padding-bottom: 1px;
-}
-
-.aphront-table-view td.larger {
-  font-size:        14px;
-}
-
-.aphront-table-view td.pri {
-  font-weight:      bold;
-}
-
-.aphront-table-view td.wide {
-  white-space:      normal;
-  width:            100%;
-}
-
-.aphront-table-view td.right {
-  text-align:       right;
-}
-
-.aphront-table-view td.mono {
-  font-family:      "Monaco", monospace;
-  font-size:        10px;
-}  
-
-.aphront-table-view tr.no-data td {
-  padding:    1em;
-  text-align: center;
-  color:      #888888;
-  font-style: italic;
-}
-
-
-/******************************************************************************/
-
-/* forms */
-
-/******************************************************************************/
-
-.aphront-form-view {
-  background: #e7e7e7;
-  border: 1px solid #c4c4c4;
-  padding: 1em;
-}
-
-.aphront-form-view label {
-  padding-top: 4px;
-  width: 14%;
-  float: left;
-  text-align: right;
-  font-weight: bold;
-  font-size: 13px;
-  color: #666666;
-}
-
-.aphront-form-input {
-  margin-left: 15%;
-  margin-right: 25%;
-  width: 60%;
-}
-
-.aphront-form-error {
-  width: 23%;
-  float: right;
-  color: #aa0000;
-  font-weight: bold;
-  padding-top: 4px;
-}
-
-.aphront-form-input input,
-.aphront-form-input textarea {
-  font-size: 12px;
-  width: 100%;
-}
-
-.aphront-form-input textarea {
-  height: 12em;
-}
-
-.aphront-form-control {
-  padding: 4px;
-}
-
-.aphront-form-control-submit button,
-.aphront-form-control-submit a.button {
-  float: right;
-  margin: 1em 0 0em 2%;
-}
-
-.aphront-form-view .aphront-form-caption {
-  font-size: 11px;
-  color: #444444;
-  text-align: right;
-  clear: both;
-  margin-right: 25%;
-  margin-left: 15%;
-}
-
-.aphront-error-view {
-  width: 720px;
-  margin: 1em auto;
-  border: 1px solid #aa0000;
-  padding: 1em;
-  background: #f9b9bc;
-}
-
-.aphront-form-instructions {
-  margin: 2em 3%;
-}
-
-.aphront-form-control-static .aphront-form-input {
-  padding-top: 4px;
-  font-size: 13px;
-}
-
-/******************************************************************************/
-
-/* dialog */
-
-/******************************************************************************/
-
-
-.aphront-dialog-view {
-  width: 480px;
-  padding: 8px;
-  background: #666;
-  margin: auto;
-}
-
-.aphront-dialog-head {
-  background:   #003366;
-  border:       none;
-  font-size:    15px;
-  padding:      5px 12px 6px;
-  color:        #ffffff;
-}
-  
-
-.aphront-dialog-body {
-  background: #ffffff;
-  padding: 16px 12px;
-  border: none;
-  overflow: hidden;
-}
-
-.aphront-dialog-tail {
-  border: none;
-  background: #ededed;
-  padding: 0.5em;
-  text-align: right;
-}
-
-.aphront-dialog-tail button,
-.aphront-dialog-tail a.button {
-  float: right;
-  margin-left: .5em;
-}
-
-
-
-/******************************************************************************/
-
-/* side nav */
-
-/******************************************************************************/
-
-
-table.aphront-side-nav-view {
-  width: 100%;
-}
-
-td.aphront-side-nav-content {
-  width: 100%;
-}
-
-th.aphront-side-nav-navigation {
-  border-right: 1px solid #bbbbbb;
-}
-
-th.aphront-side-nav-navigation a {
-  display: block;
-  margin: 0 0 2px;
-  min-width: 150px;
-  padding: 3px 8px 3px 24px;
-  font-weight: bold;
-  white-space: nowrap;
-  text-decoration: none;
-}
-
-th.aphront-side-nav-navigation a:hover {
-  text-decoration: none;
-  background:     #f3f3f9;
-}
-
-th.aphront-side-nav-navigation hr {
-  height:         1px;
-  background:     #eeeeee;
-  border:         0px;
-  margin:         12px 0px;
-}
-
-th.aphront-side-nav-navigation a.aphront-side-nav-selected,
-th.aphront-side-nav-navigation a.aphront-side-nav-selected:hover {
-  background:     #d8dfea;
-}
-
-  
-  
-/******************************************************************************/
-
-/* differential toc */
-
-/******************************************************************************/
-
-.differential-toc {
-  margin:       25px 0;
-  max-width:    1118px;
-  border:       1px solid #666622;
-  background:   #efefdf;
-  padding:      15px 20px;
-  font-size:    13px;
-}
-
-.differential-toc-meta {
-  color:        #666666;
-  padding-left: 1em;
-}
-
-.differential-toc-char,
-.differential-toc-prop {
-  width: 1.25em;
-  text-align: center;
-  font-weight: bold;
-}
-
-.differential-toc-ftype {
-  padding: 0 .5em;
-  text-align: center;
-  color: #666666;
-}
-
-.differential-toc-file {
-  color: #444444;
-}
-
-.differential-toc h1 {
-  border-bottom: 1px solid #aaaa99;
-  padding-bottom: 8px;
-  margin-bottom: 8px;
-}
-
-
-/******************************************************************************/
-
-/* changeset view */
-
-/******************************************************************************/
-
-.differential-diff {
-  background:         #ffffff;
-  font-family:        "Menlo", "Consolas", "Monaco", monospace;
-  font-size:          10px;
-  width:              100%;
-}
-
-.differential-diff td {
-  /* using monospace fonts makes ex/em most useful:
-   *
-   * Unfortunately, firefox 3.6 renders diffs columns for added and removed
-   * files "way-too-wide" when given em as the dimension measurement, so we
-   * use an eyeballed ex equivalent and reset it to the ch character width
-   * measurement for browsers that support that css3 measurement.
-   */
-  width:              88ex;
-  width:              81ch;
-  /*
-    Disable ligatures in Firefox. Firefox 3 has fancypants ligature support, but
-    it gets applied to monospaced fonts, which sucks because it means that the
-    "fi" ligature only takes up one character, e.g. It's probably the font's
-    fault that it even specifies ligatures (seriously, what the hell?) but
-    that's hard to fix and this is "easy" to "fix": custom letter spacing 
-    disables ligatures, as long as it's at least 0.008333-repeating pixels of 
-    custom letter spacing. I have no idea where this number comes from, but note
-    that .83333.. = 5/6. -epriestley
-  */
-  letter-spacing:     0.0083334px;
-  vertical-align:     top;
-  white-space:        pre;
-  padding:            0 8px 1px;
-  line-height:        16px;
-  overflow:           hidden;
-}
-
-.differential-diff th {
-  text-align:         right;
-  padding:            2px 6px;
-  width:              44px;
-  vertical-align:     top;
-  background:         #eeeeee;
-  color:              #888888;
-  cursor:             pointer;
-  border-style:       solid;
-  border-width:       0px 1px;
-  border-color:       #eeeeee #999999 #eeeeee #dddddd;
-  font-weight:        bold;
-  font-family:        "Verdana";
-  font-size:          11px;
-  overflow:           hidden;
-}
-
-.differential-diff td.old {
-  background:   #ffd0d0;
-  color:        #161111;
-}
-
-.differential-diff td.new {
-  background:   #d0ffd0;
-  color:        #111611;
-}
-
-.differential-diff td.old-full,
-.differential-diff td.old span.bright {
-  background: #ffaaaa;
-  color:      #221111;
-}
-
-.differential-diff td.new-full,
-.differential-diff td.new span.bright {
-  background: #aaffaa;
-  color:      #112211;
-}
-
-.differential-diff td.show-more,
-.differential-diff td.differential-shield {
-  background: #ffffee;
-  padding: 1em;
-  text-align: center;
-  font-family: "Verdana";
-  font-size:   11px;
-  border: 1px solid #ccccaa;
-  white-space: normal;
-}
-
-.differential-diff td.show-more {
-  color:  #999966;
-}
-
-.differential-diff td.differential-shield {
-  text-align: center;
-  max-width: 1160px;
-}
-
-.differential-diff td.differential-shield a {
-  font-weight: bold;
-}
-
-
-.differential-primary-pane {
-  margin:           0 40px;
-  max-width:        1162px;
-}
-
-/************* meta notice ************************************************ */
-
-.differential-meta-notice {
-  border:           1px solid #ffdd99;
-  background:       #ffeeaa;
-  font-family:      "Verdana";
-  font-size:        11px;
-  padding:          1em;
-  margin:           0 0 6px 0;
-}
diff --git a/webroot/rsrc/css/core/buttons.css b/webroot/rsrc/css/core/buttons.css
new file mode 100644
index 000000000..380aa90e8
--- /dev/null
+++ b/webroot/rsrc/css/core/buttons.css
@@ -0,0 +1,139 @@
+/**
+ * @provides phabricator-core-buttons-css
+ */
+
+
+button,
+a.button,
+a.button:visited,
+input.inputsubmit {
+  background: #5e77aa url('/rsrc/image/sprite.png') 0 0 repeat-x;
+  border: 1px solid #29447e;
+  border-bottom-color: #1a356e;
+  color: #fff;
+  cursor: pointer;
+  font-weight: bold;
+  text-align: center;
+  white-space: nowrap;
+  display: inline-block;
+  font-size: 13px;
+  overflow: visible;
+  padding: 2px 8px 3px 8px;
+  line-height: 18px;
+  vertical-align: baseline;
+  width: auto;
+  box-shadow: 0px 1px 0px rgba(0,0,0,.12);
+  -moz-box-shadow: 0px 1px 0px rgba(0,0,0,.12);
+  -webkit-box-shadow: 0px 1px 0px rgba(0,0,0,.12);
+}
+
+button {
+  *padding: 2px 4px 1px 8px;
+  _padding-right: 6px;
+}
+
+a.button,
+a.button:visited {
+  *padding: 3px 8px 4px;
+}
+
+/* Buttons with images (full size only) */
+button.icon,
+a.icon,
+a.icon:visited {
+  padding-left: 0;
+  position: relative;
+  text-indent: 29px;
+}
+
+/* Fix for IE7 within table cells ? */
+td button {
+  *width: 100%;
+  *padding-right: 8px;
+}
+
+button:active,
+a.button:active {
+  background-color: #4f6aa3;
+  background-position: 0 -100px;
+  border-bottom-color: #29447e;
+}
+
+button.green,
+a.green,
+a.green:visited {
+  background-color: #6da952;
+  background-position: 0 -50px;
+  border: 1px solid #3b6e22;
+  border-bottom-color: #2c5a15;
+}
+
+button.green:active,
+a.green:active {
+  background-color: #5e9d43;
+  background-position: 0 -150px;
+  border-bottom-color: #3b6e22;
+}
+
+button.grey,
+input.inputaux,
+a.grey,
+a.grey:visited,
+a.button.disabled,
+button.disabled {
+  background-color: #e4e5e5;
+  background-position: 0 -250px;
+  border: 1px solid #999;
+  border-bottom-color: #888;
+  color: #333;
+  box-shadow: 0px 1px 0px rgba(0,0,0,.07);
+  -moz-box-shadow: 0px 1px 0px rgba(0,0,0,.07);
+  -webkit-box-shadow: 0px 1px 0px rgba(0,0,0,.07);
+}
+
+a.disabled,
+button.disabled {
+  filter:alpha(opacity=50);
+  -moz-opacity:0.5;
+  -khtml-opacity: 0.5;
+  opacity: 0.5;
+}
+
+button.grey:active,
+a.grey:active,
+button.grey_active {
+  background-color: #dddddd;
+  background-position: 0 -200px;
+  border-bottom-color: #999;
+}
+
+button:active::-moz-focus-inner,
+button:focus::-moz-focus-inner {
+  border-color: #405071;
+}
+
+button.green:active::-moz-focus-inner,
+button.green:focus::-moz-focus-inner {
+  border-color: #4c713b;
+}
+
+button.grey:active::-moz-focus-inner,
+button.grey:focus::-moz-focus-inner {
+  border-color: #666;
+}
+
+a.button:hover {
+  text-decoration: none;
+}
+
+button.small,
+a.small,
+a.small:visited {
+  padding: 2px 7px;
+  height: auto;
+  font-size: 11px;
+  line-height: 16px;
+}
+
+
+
diff --git a/webroot/rsrc/css/core/core.css b/webroot/rsrc/css/core/core.css
new file mode 100644
index 000000000..8fc344c0e
--- /dev/null
+++ b/webroot/rsrc/css/core/core.css
@@ -0,0 +1,101 @@
+/**
+ * @provides phabricator-core-css
+ */
+
+
+html {
+  overflow-y: scroll;
+}
+
+body, div, dl, dt, dd, ul, ol, li,
+h1, h2, h3, h4, h5, h6,
+pre, form, fieldset,
+p, blockquote, th, td, button {
+  margin: 0;
+  padding: 0;
+  outline: 0;
+  border: 0;
+}
+
+html {
+  padding-bottom: 16em;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+fieldset, img {
+  border: 0;
+}
+
+address, caption, cite, code, dfn, th, var {
+  font-style: normal;
+  font-weight: normal;
+}
+
+ol, ul {
+  list-style: none;
+}
+
+caption, th {
+  text-align: left;
+}
+
+td, th {
+  vertical-align: top;
+}
+
+h1, h2, h3, h4, h5, h6 {
+  font-size: 100%;
+  font-weight: bold;
+}
+
+body {
+  font: 13px/1.231 'lucida grande', tahoma, verdana, arial, sans-serif;
+  background:   #ACACAC;
+  direction: ltr;
+  text-align: left;
+  unicode-bidi: embed;
+  *font-size: small;
+}
+
+select, input, button, textarea, button {
+  font: 99% 'lucida grande', tahoma, verdana, arial, clean, sans-serif;
+}
+
+table {
+  font-size: inherit;
+  font: 100%;
+}
+
+h1 {
+  font-size: 16px;
+}
+
+h2 {
+  font-size: 14px;
+}
+
+a {
+  -moz-outline-style: none;
+  text-decoration: none;
+  cursor: pointer;
+}
+
+a:visited {
+  color: #3b5998;
+}
+
+a:link {
+  color: #3b5998;
+}
+
+a:hover {
+  text-decoration: underline;
+}
+
+img {
+  display: block;
+}
diff --git a/webroot/rsrc/css/syntax.css b/webroot/rsrc/css/syntax.css
deleted file mode 100644
index dfa773dfd..000000000
--- a/webroot/rsrc/css/syntax.css
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * @provides phabricator-syntax-css
- */
-
-.remarkup-code .uu { /* Forbidden Unicode */
-  color: #aa0066;
-}
-
-.remarkup-code .over-the-line {
-  color:   #aa0066;
-  margin-right: 1px;
-}
-
-.remarkup-code td span {
-  padding:        1px 0 3px;
-}
-
-
-.remarkup-code .hll {
-  background-color: #ffffcc;
-}
-
-.remarkup-code .c, /* Comment */
-.remarkup-code .cm, /* Comment.Multiline */
-.remarkup-code .c1, /* Comment.Single */
-.remarkup-code .cs { /* Comment.Special */
-  color: #666666;
-}
-
-.remarkup-code .sd, /* Literal.String.Doc */
-.remarkup-code .sh { /* Literal.String.Heredoc */
-  color: #000000;
-}
-
-.remarkup-code .s, /* Literal.String */
-.remarkup-code .sb, /* Literal.String.Backtick */
-.remarkup-code .sc, /* Literal.String.Char */
-.remarkup-code .s2, /* Literal.String.Double */
-.remarkup-code .s1, /* Literal.String.Single */
-.remarkup-code .sx { /* Literal.String.Other */
-  color: #766510;
-}
-
-.remarkup-code .sr { /* Literal.String.Regex */
-  color: #BB6688;
-}
-
-.remarkup-code .nv, /* Name.Variable */
-.remarkup-code .vi, /* Name.Variable.Instance */
-.remarkup-code .vg { /* Name.Variable.Global */
-  color: #001294;
-}
-
-.remarkup-code .na { /* Name.Attribute */
-  color: #354BB3;
-}
-
-.remarkup-code .kc, /* Keyword.Constant */
-.remarkup-code .no { /* Name.Constant */
-  color: #000A65;
-}
-
-.remarkup-code .k, /* Keyword */
-.remarkup-code .kd, /* Keyword.Declaration */
-.remarkup-code .kn, /* Keyword.Namespace */
-.remarkup-code .kt { /* Keyword.Type */
-  color: #AA4000;
-}
-
-.remarkup-code .cp, /* Comment.Preproc */
-.remarkup-code .kp, /* Keyword.Pseudo */
-.remarkup-code .kr, /* Keyword.Reserved */
-.remarkup-code .nb, /* Name.Builtin */
-.remarkup-code .bp { /* Name.Builtin.Pseudo */
-  color: #304A96;
-}
-
-.remarkup-code .nc, /* Name.Class */
-.remarkup-code .nt, /* Name.Tag */
-.remarkup-code .vc { /* Name.Variable.Class */
-  color: #00702A;
-}
-
-.remarkup-code .nf, /* Name.Function */
-.remarkup-code .nx { /* Name.Other */
-  color: #004012;
-}
-
-.remarkup-code .o, /* Operator */
-.remarkup-code .ss { /* Literal.String.Symbol */
-  color: #AA2211;
-}
-
-.remarkup-code .m, /* Literal.Number */
-.remarkup-code .mf, /* Literal.Number.Float */
-.remarkup-code .mh, /* Literal.Number.Hex */
-.remarkup-code .mi, /* Literal.Number.Integer */
-.remarkup-code .mo, /* Literal.Number.Oct */
-.remarkup-code .il { /* Literal.Number.Integer.Long */
-  color: #601200;
-}
-
-.remarkup-code .gd { color: #A00000 } /* Generic.Deleted */
-.remarkup-code .ge { } /* Generic.Emph */
-.remarkup-code .gr { color: #FF0000 } /* Generic.Error */
-.remarkup-code .gh { color: #000080; } /* Generic.Heading */
-.remarkup-code .gi { color: #00A000 } /* Generic.Inserted */
-.remarkup-code .go { color: #808080 } /* Generic.Output */
-.remarkup-code .gp { color: #000080 } /* Generic.Prompt */
-.remarkup-code .gs { } /* Generic.Strong */
-.remarkup-code .gu { color: #800080 } /* Generic.Subheading */
-.remarkup-code .gt { color: #0040D0 } /* Generic.Traceback */
-.remarkup-code .nd { color: #AA22FF } /* Name.Decorator */
-.remarkup-code .ni { color: #999999 } /* Name.Entity */
-.remarkup-code .ne { color: #D2413A } /* Name.Exception */
-.remarkup-code .nl { color: #A0A000 } /* Name.Label */
-.remarkup-code .nn { color: #0000FF } /* Name.Namespace */
-.remarkup-code .ow { color: #AA22FF } /* Operator.Word */
-.remarkup-code .w { color: #bbbbbb } /* Text.Whitespace */
-.remarkup-code .se { color: #BB6622 } /* Literal.String.Escape */
-.remarkup-code .si { color: #BB6688 } /* Literal.String.Interpol */
-
-