diff --git a/Allura/allura/lib/plugin.py b/Allura/allura/lib/plugin.py
index 9955e21..921d989 100644
--- a/Allura/allura/lib/plugin.py
+++ b/Allura/allura/lib/plugin.py
@@ -1399,8 +1399,13 @@
 
 
 class ResponsiveTheme(ThemeProvider):
+    master_template = 'allura:templates_responsive/jinja_master/master.html'
+    jinja_macros = 'allura:templates_responsive/jinja_master/theme_macros.html'
+    nav_menu = 'allura:templates_responsive/jinja_master/nav_menu.html'
+    top_nav = 'allura:templates_responsive/jinja_master/top_nav.html'
+    sidebar_menu = 'allura:templates_responsive/jinja_master/sidebar_menu.html'
+
     def require(self):
-        g.register_theme_css('../allura/css/site_style.css', compress=False)  # temporarily include original theme too
         g.register_theme_css('css/styles.css', compress=False)
 
 
diff --git a/Allura/allura/nf/responsive/scss/_chrome.scss b/Allura/allura/nf/responsive/scss/_chrome.scss
new file mode 100644
index 0000000..8171a5d
--- /dev/null
+++ b/Allura/allura/nf/responsive/scss/_chrome.scss
@@ -0,0 +1,67 @@
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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.
+*/
+
+/**
+ Styles for the overall page layout, header, footer, etc.
+
+ Custom themes most likely would not want these rules.
+ */
+
+.project-icon {
+    margin-right: $global-margin;
+}
+
+.title h1 {
+    margin-bottom: 0;
+}
+
+#top_nav_admin > ul > li.selected {
+    background: $light-gray;
+}
+
+#content_base {
+    border: 1px solid $light-gray;
+}
+
+.column#sidebar {
+    border-right: 1px solid $light-gray;
+}
+
+#messages {
+    position: fixed;
+    z-index: 100000;
+    top: 45px;
+    right: 20px;
+    .message {
+        @include callout();
+        min-width: rem-calc(400);
+        &.info {
+            @include callout-style(get-color(primary));
+        }
+        &.confirm {
+            @include callout-style(get-color(success));
+        }
+        &.warning {
+            @include callout-style(get-color(warning));
+        }
+        &.error {
+            @include callout-style(get-color(alert));
+        }
+    }
+}
diff --git a/Allura/allura/nf/responsive/scss/_settings.scss b/Allura/allura/nf/responsive/scss/_settings.scss
index 59a7e4a..7ec77cd 100644
--- a/Allura/allura/nf/responsive/scss/_settings.scss
+++ b/Allura/allura/nf/responsive/scss/_settings.scss
@@ -62,6 +62,13 @@
 
 @import 'util/util';
 
+
+// Allura specific settings
+
+$sidebar-width: 240px;
+
+
+
 // 1. Global
 // ---------
 
@@ -856,7 +863,7 @@
 // 56. Xy Grid
 // -----------
 
-$xy-grid: true;
+$xy-grid: false;
 $grid-container: $global-width;
 $grid-columns: 12;
 $grid-margin-gutters: (
@@ -867,3 +874,4 @@
 $grid-container-padding: $grid-padding-gutters;
 $grid-container-max: $global-width;
 $xy-block-grid-max: 8;
+
diff --git a/Allura/allura/nf/responsive/scss/_sidebar.scss b/Allura/allura/nf/responsive/scss/_sidebar.scss
new file mode 100644
index 0000000..fae40f0
--- /dev/null
+++ b/Allura/allura/nf/responsive/scss/_sidebar.scss
@@ -0,0 +1,27 @@
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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.
+*/
+
+/**
+ Non-thematic sidebar rules
+ */
+
+.column#sidebar {
+    flex: 0 0 $sidebar-width;
+    max-width: $sidebar-width;
+}
\ No newline at end of file
diff --git a/Allura/allura/nf/responsive/scss/styles.scss b/Allura/allura/nf/responsive/scss/styles.scss
index 8e203ed..02b768a 100644
--- a/Allura/allura/nf/responsive/scss/styles.scss
+++ b/Allura/allura/nf/responsive/scss/styles.scss
@@ -77,3 +77,8 @@
 
 // @include motion-ui-transitions;
 // @include motion-ui-animations;
+
+
+
+@import '_chrome';
+@import '_sidebar';
diff --git a/Allura/allura/templates/award.html b/Allura/allura/templates/award.html
index 329b8b2..a0cc736 100644
--- a/Allura/allura/templates/award.html
+++ b/Allura/allura/templates/award.html
@@ -22,14 +22,6 @@
 
 {% block header %}Award{% endblock %}
 
-{% block nav_menu %}
-{% include 'allura:templates/jinja_master/neigh_nav_menu.html' %}
-{% endblock %}
-
-{% block top_nav %}
-{% include 'allura:templates/jinja_master/top_nav.html' %}
-{% endblock %}
-
 {% block content %}
         <form action="{{award.longurl()}}/update" method="post" enctype="multipart/form-data">
           <table>
diff --git a/Allura/allura/templates/jinja_master/master.html b/Allura/allura/templates/jinja_master/master.html
index f4b19ac..3892f64 100644
--- a/Allura/allura/templates/jinja_master/master.html
+++ b/Allura/allura/templates/jinja_master/master.html
@@ -93,7 +93,7 @@
 
 {% set flash = tg.flash_obj.render('flash', use_js=False) %}
 
-{% call theme_macros.all_content_wrapper() %}
+{% call theme_macros.all_content_wrapper(login_url, logout_url) %}
     {{ theme_macros.header(g.login_url, '/auth/logout') }}
     {{ theme_macros.site_notification() }}
     {% block masthead %}{% endblock %}
diff --git a/Allura/allura/templates/jinja_master/theme_macros.html b/Allura/allura/templates/jinja_master/theme_macros.html
index f403243..47b632d 100644
--- a/Allura/allura/templates/jinja_master/theme_macros.html
+++ b/Allura/allura/templates/jinja_master/theme_macros.html
@@ -56,7 +56,7 @@
 
 
 {% if not all_content_wrapper %}
-{% macro all_content_wrapper() -%}
+{% macro all_content_wrapper(login_url, logout_url) -%}
 {{- caller(**kwargs) -}}
 {%- endmacro %}
 {% endif %}
diff --git a/Allura/allura/templates/neighborhood_admin_accolades.html b/Allura/allura/templates/neighborhood_admin_accolades.html
index ca9bb86..5e28591 100644
--- a/Allura/allura/templates/neighborhood_admin_accolades.html
+++ b/Allura/allura/templates/neighborhood_admin_accolades.html
@@ -22,14 +22,6 @@
 
 {% block header %}Award Administration for {{neighborhood.name}}{% endblock %}
 
-{% block nav_menu %}
-{% include 'allura:templates/jinja_master/neigh_nav_menu.html' %}
-{% endblock %}
-
-{% block top_nav %}
-{% include 'allura:templates/jinja_master/top_nav.html' %}
-{% endblock %}
-
 {% block content %}
           {% if awards_count > 0 %}
           <p>
diff --git a/Allura/allura/templates/neighborhood_admin_overview.html b/Allura/allura/templates/neighborhood_admin_overview.html
index da2be53..3ae9f42 100644
--- a/Allura/allura/templates/neighborhood_admin_overview.html
+++ b/Allura/allura/templates/neighborhood_admin_overview.html
@@ -22,14 +22,6 @@
 
 {% block header %}Administration Overview for {{neighborhood.name}}{% endblock %}
 
-{% block nav_menu %}
-{% include 'allura:templates/jinja_master/neigh_nav_menu.html' %}
-{% endblock %}
-
-{% block top_nav %}
-{% include 'allura:templates/jinja_master/top_nav.html' %}
-{% endblock %}
-
 {% block content %}
     {{c.overview_form.display(value=neighborhood, neighborhood=neighborhood, allow_wiki_as_root=allow_wiki_as_root)}}
 {% endblock %}
diff --git a/Allura/allura/templates/neighborhood_help.html b/Allura/allura/templates/neighborhood_help.html
index 18f2568..7a2cd83 100644
--- a/Allura/allura/templates/neighborhood_help.html
+++ b/Allura/allura/templates/neighborhood_help.html
@@ -22,14 +22,6 @@
 
 {% block header %}Neighborhood Help{% endblock %}
 
-{% block nav_menu %}
-    {% include 'allura:templates/jinja_master/neigh_nav_menu.html' %}
-{% endblock %}
-
-{% block top_nav %}
-    {% include 'allura:templates/jinja_master/top_nav.html' %}
-{% endblock %}
-
 {% block content %}
   <p>Welcome to your neighborhood!  We strive to make many neighborhood features easy to understand on their own,
   but there's always room for some additional explanation.  Here's information on a few advanced features.</p>
diff --git a/Allura/allura/templates/neighborhood_moderate.html b/Allura/allura/templates/neighborhood_moderate.html
index c164140..22fe175 100644
--- a/Allura/allura/templates/neighborhood_moderate.html
+++ b/Allura/allura/templates/neighborhood_moderate.html
@@ -23,14 +23,6 @@
 
 {% block header %}{{neighborhood.name}} Moderation{% endblock %}
 
-{% block nav_menu %}
-{% include 'allura:templates/jinja_master/neigh_nav_menu.html' %}
-{% endblock %}
-
-{% block top_nav %}
-{% include 'allura:templates/jinja_master/top_nav.html' %}
-{% endblock %}
-
 {% block content %}
   <h2>Invite Projects?</h2>
   <form method="POST" action="invite" class="grid-10">
diff --git a/Allura/allura/templates/neighborhood_project_list.html b/Allura/allura/templates/neighborhood_project_list.html
index ea4d3c5..91fecd3 100644
--- a/Allura/allura/templates/neighborhood_project_list.html
+++ b/Allura/allura/templates/neighborhood_project_list.html
@@ -37,14 +37,6 @@
   {% endif %}
 {% endblock %}
 
-{% block nav_menu %}
-{% include 'allura:templates/jinja_master/neigh_nav_menu.html' %}
-{% endblock %}
-
-{% block top_nav %}
-{% include 'allura:templates/jinja_master/top_nav.html' %}
-{% endblock %}
-
 {% block inner_grid %}{% endblock %}
 {% block header_classes %} colored{% endblock %}
 
diff --git a/Allura/allura/templates/neighborhood_stats.html b/Allura/allura/templates/neighborhood_stats.html
index 3b0b0ee..0ef680d 100644
--- a/Allura/allura/templates/neighborhood_stats.html
+++ b/Allura/allura/templates/neighborhood_stats.html
@@ -18,10 +18,6 @@
 -#}
 {% extends g.theme.master %}
 
-{% block top_nav %}
-    {% include 'allura:templates/jinja_master/top_nav.html' %}
-{% endblock %}
-
 {% block title %}Neighborhood Statistics{% endblock %}
 
 {% block header %}Neighborhood Statistics{% endblock %}
diff --git a/Allura/allura/templates/neighborhood_stats_adminlist.html b/Allura/allura/templates/neighborhood_stats_adminlist.html
index 4deafe1..c0ffce7 100644
--- a/Allura/allura/templates/neighborhood_stats_adminlist.html
+++ b/Allura/allura/templates/neighborhood_stats_adminlist.html
@@ -22,10 +22,6 @@
 
 {% block header %}Admins list{% endblock %}
 
-{% block top_nav %}
-    {% include 'allura:templates/jinja_master/top_nav.html' %}
-{% endblock %}
-
 {% block content %}
 <table>
   <thead>
diff --git a/Allura/allura/templates_responsive/jinja_master/master.html b/Allura/allura/templates_responsive/jinja_master/master.html
new file mode 100644
index 0000000..ecb1290
--- /dev/null
+++ b/Allura/allura/templates_responsive/jinja_master/master.html
@@ -0,0 +1,167 @@
+{#-
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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.
+-#}
+<!DOCTYPE html>
+<!-- Server: {{g.server_name}} -->
+{% import 'allura:templates/jinja_master/lib.html' as lib with context %}
+{% if g.theme.jinja_macros %}
+    {% import g.theme.jinja_macros as theme_macros with context %}
+{% endif %}
+{% do g.register_forge_js('js/jquery-base.js', location='head_js') %}{# TODO: upgrade #}
+{% do g.register_forge_js('js/foundation.min.js', location='head_js', compress=False) %}
+{% do g.register_forge_js('js/jquery.notify.js') %}
+{% do g.register_forge_js('js/jquery.tooltipster.js') %}{#  TODO: use foundation #}
+{% do g.register_forge_js('js/sylvester.js') %}
+{% do g.register_forge_js('js/twemoji.min.js') %}
+{% do g.register_forge_js('js/allura-base.js') %}
+{% do g.register_forge_js('js/checklist.js') %}
+{% do g.register_forge_css('css/forge/hilite.css') %}
+{% do g.register_forge_css('css/forge/tooltipster.css') %}{#  TODO: use foundation #}
+{% do g.register_forge_css('css/font-awesome.min.css', compress=False) %}
+{% do g.theme.require() %}
+{% do g.register_forge_js('js/admin_modal.js') %}
+{% do g.register_js('js/jquery.lightbox_me.js') %}
+{% if h.has_access(c.project, 'admin')() %}
+    {# this would be better placed in top_nav.html but that file is included later so its too late for it to register
+       any css.  (Unlike other html files which are the top-level file and extend this master.html) #}
+    {% do g.register_forge_css('css/navbar.css') %}
+{% endif %}
+{% do g.register_forge_js('js/memorable.js') %}
+{% do g.resource_manager.register_widgets(c) %}
+
+<html lang="en" class="no-js">
+<head>
+    <meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
+    <title>{% block title %}Your title goes here{% endblock %}</title>
+    {{ theme_macros.extra_header(g.theme_href('')) }}
+    {% for blob in g.resource_manager.emit('head_css') %}
+        {{ blob }}
+    {% endfor %}
+    {% for blob in g.resource_manager.emit('head_js') %}
+        {{ blob }}
+    {% endfor %}
+
+    {% if c.project and c.project.neighborhood.css %}
+        <style type="text/css">
+            {{c.project.neighborhood.get_custom_css()|safe}}
+        </style>
+    {% elif neighborhood and neighborhood.css %}
+        <style type="text/css">
+            {{neighborhood.get_custom_css()}}
+        </style>
+    {% endif %}
+    {% block extra_css %}{% endblock %}
+    <style>.{{ g.antispam.honey_class }} {
+        display: none
+    }</style>
+
+    {% block head %}
+    {% endblock %}
+    {% if g.production_mode %}{{ g.analytics.display() }}{% endif %}
+    {% block head_bottom -%}
+    {% endblock %}
+</head>
+
+<body{% block body_attrs %}{% endblock %} class="{% block body_css_class %}{% endblock %}" id="forge">
+{% block body_top_js %}
+    {% for blob in g.resource_manager.emit('body_top_js') %}
+        {{ blob }}
+    {% endfor %}
+{% endblock %}
+
+{% set flash = tg.flash_obj.render('flash', use_js=False) %}
+
+{% call theme_macros.all_content_wrapper(g.login_url, '/auth/logout') %}
+    {{ theme_macros.header(g.login_url, '/auth/logout') }}
+    {{ theme_macros.site_notification() }}
+    {% block masthead %}{% endblock %}
+    <section id="page-body" class="{{ g.document_class(neighborhood) }} {% block page_body_classes %}{% endblock %}">
+        {% if c.project and c.project.is_nbhd_project %}
+            {% set neighborhood=c.project.neighborhood %}
+            {% include 'allura:templates_responsive/jinja_master/neigh_nav_menu.html' with context %}
+        {% else %}
+            {% block nav_menu %}
+                {% include g.theme.nav_menu %}
+            {% endblock %}
+        {% endif %}
+        {% block top_nav %}
+            {% include g.theme.top_nav %}
+        {% endblock %}
+        <div id="content_base" class="row">
+            {% block content_base %}
+                {% if not hide_left_bar %}
+                    {% block sidebar_menu %}
+                        {% include g.theme.sidebar_menu %}
+                    {% endblock %}
+                {% endif %}
+                <div class="column">
+                    <h2 class="{% block header_classes %} title{% endblock %}">{% block header %}{% endblock %}
+                        <!-- actions -->
+                        <small>
+                            {% block actions %}{% endblock %}
+                        </small>
+                        <!-- /actions -->
+                    </h2>
+                    {% block edit_box %}{% endblock %}
+                    <div>
+                        {% block before_content %}{% endblock %}
+                        {% block content %}{% endblock %}
+                    </div>
+                    {% if show_right_bar %}
+                        <div class="columns">
+                            {% block right_content %}{% endblock %}
+                        </div>
+                    {% endif %}
+                    {% block after_content %}{% endblock %}
+                </div>
+            {% endblock %}
+        </div>
+    </section>
+    {{ theme_macros.footer(g.year(), g.theme_href('')) }}
+{% endcall %}
+
+<div id="messages">
+    {% for n in h.pop_user_notifications() %}
+        <section class="message {{ n.subject or 'info' }}">
+            <header>Notification:</header>
+            <div class="content">{{ n.text }}</div>
+        </section>
+    {% endfor %}
+</div>
+{% if c.show_login_overlay %}
+    {{ theme_macros.login_overlay() }}
+{% endif %}
+{% for blob in g.resource_manager.emit('body_js') %}
+    {{ blob }}
+{% endfor %}
+{% for blob in g.resource_manager.emit('body_js_tail') %}
+    {{ blob }}
+{% endfor %}
+{% block extra_js %}{% endblock %}
+{% if neighborhood %}
+    {{ neighborhood.site_specific_html | safe }}
+{% elif c.project.neighborhood %}
+    {{ c.project.neighborhood.site_specific_html | safe }}
+{% endif %}
+{{ theme_macros.custom_js() }}
+{% if flash %}
+    <script type="text/javascript">{{ flash | safe }}</script>
+{% endif %}
+</body>
+</html>
diff --git a/Allura/allura/templates_responsive/jinja_master/nav_menu.html b/Allura/allura/templates_responsive/jinja_master/nav_menu.html
new file mode 100644
index 0000000..5e2d6ee
--- /dev/null
+++ b/Allura/allura/templates_responsive/jinja_master/nav_menu.html
@@ -0,0 +1,77 @@
+{#-
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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.
+-#}
+{% import 'allura:templates/jinja_master/lib.html' as lib with context %}
+{% import g.theme.jinja_macros as theme_macros with context %}
+{% set n = c.project.neighborhood %}
+{% if not c.project or (n.neighborhood_project == c.project and not n.show_title) %}
+  <!-- no nav menu -->
+{% else %}
+    {% if not c.project.is_user_project %}
+    {{ theme_macros.breadcrumbs(c.project, c.app) }}
+    {% endif %}
+    <div class="row collapse">
+        <div class="column shrink project-icon">
+            {% if c.project.is_user_project %}
+                {{lib.gravatar(c.project.user_project_of, size=90)}}
+            {% elif c.project.icon %}
+                <img alt="Project Logo" {{ lib.project_icon_srcs(c.project, base_size=90) }}>
+            {% endif %}
+        </div>
+        <div class="column title">
+            <div class="row">
+            <h1>
+                <a href="{{c.project.url()}}">
+                    {%- if c.project.is_user_project -%}
+                        {{ c.project.user_project_of.display_name }}
+                    {%- elif not c.project.is_nbhd_project -%}
+                        {{ c.project.name }}
+                    {%- endif -%}
+                </a>
+            </h1>
+            {% set status = c.project.troves_by_type('developmentstatus')|sort(attribute='fullname') %}
+            {% set status = status[-1] %}
+            {% if status and status.shortname not in ['production', 'mature'] %}
+                <span class="{{ status.shortname }}">{{ status.shortname }}</span>
+            {% endif %}
+            </div>
+            {% if c.project.summary %}
+            <div class="row project_summary{% if c.project.icon %} with-icon{% endif %}">
+                {{c.project.summary}}
+            </div>
+            {% endif %}
+            {% if not c.project.is_user_project %}
+            <div class="row">
+            <div class="brought-by{% if c.project.icon %} with-icon{% endif %}">
+                Brought to you by:
+                {% set admins = c.project.admins()|sort(attribute='username') %}
+                {% for admin in admins[:5] %}
+                    {% if loop.last and admins|length > 5 -%}
+                        and <a href="{{ c.project.url() }}_members/">{{ admins|length - 4 }} others</a>
+                    {% else %}
+                        <a href="{{ admin.url() }}">{{ admin.username }}</a>{{ ',' if not loop.last }}
+                    {% endif %}
+                {%- endfor -%}
+            </div>
+            </div>
+            {% endif %}
+        </div>
+
+        {{ theme_macros.project_header_right(c.project, c.app) }}
+    </div>
+{% endif %}
diff --git a/Allura/allura/templates_responsive/jinja_master/neigh_nav_menu.html b/Allura/allura/templates_responsive/jinja_master/neigh_nav_menu.html
new file mode 100644
index 0000000..8258cf1
--- /dev/null
+++ b/Allura/allura/templates_responsive/jinja_master/neigh_nav_menu.html
@@ -0,0 +1,40 @@
+{#-
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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.
+-#}
+{% import 'allura:templates/jinja_master/lib.html' as lib with context %}
+{% if not neighborhood or not neighborhood.show_title %}
+    <!-- no nav menu -->
+{% else %}
+    <div class="row collapse">
+        <div class="column shrink project-icon">
+            {% if neighborhood.icon %}
+                <a href="{{neighborhood.url()}}"><img {{ lib.project_icon_srcs(neighborhood.neighborhood_project, base_size=90) }} alt="{{neighborhood.name}} Logo"/></a>
+            {% endif %}
+        </div>
+        <div class="column">
+            <h1 class="project_title"><a href="{{neighborhood.url()}}">{{neighborhood.name}}</a></h1>
+        </div>
+        {% if neighborhood.project_list_url %}
+            <div class="column shrink project_title_link">
+            <a href="{{neighborhood.project_list_url}}">
+              View Projects
+            </a>
+            </div>
+        {% endif %}
+    </div>
+{% endif %}
diff --git a/Allura/allura/templates_responsive/jinja_master/sidebar_menu.html b/Allura/allura/templates_responsive/jinja_master/sidebar_menu.html
new file mode 100644
index 0000000..ac9b374
--- /dev/null
+++ b/Allura/allura/templates_responsive/jinja_master/sidebar_menu.html
@@ -0,0 +1,101 @@
+{#-
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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.
+-#}
+{% set ul_active = [] %}
+{% macro sidebar_item(s) -%}
+  {% if s.url %}
+    {% if not ul_active[-1] %}
+      <ul class="sidebarmenu">
+      {% do ul_active.append(True) %}
+    {% endif %}
+  <li{% if request.path.find(s.url,-s.url.__len__()) != -1 %} class="active"{% endif %}>
+      {% if s.ui_icon %}
+        {{ s.ui_icon.render(href=s.url, extra_css=s.className, closing_tag=False, **s.extra_html_attrs) }}
+      {% else %}
+        <a href="{{ s.url }}" {{ s.extra_html_attrs|xmlattr }} {% if s.className %}class="{{ s.className or '' }}"{% endif %}>
+      {% endif %}
+      <span{% if s.small != None %} class="has_small"{% endif %}>{{ h.really_unicode(s.label) }}</span>
+      {% if s.small != None %}<small>{{ s.small }}</small>{% endif %}</a>
+  </li>
+  {% else %}
+    {% if ul_active[-1] %}
+      </ul>
+      {% do ul_active.append(False) %}
+    {% endif %}
+    {% if s.label %}
+      <h3 class="{{s.className or ''}}">{% if s.ui_icon %}{{ s.ui_icon.render() }}{% endif %}{{s.label}}</h3>
+    {% endif %}
+  {% endif %}
+{%- endmacro %}
+
+<div id="sidebar" class="column">
+  {% if c.app and c.app.searchable %}
+    <form id="search" method="GET" action="{{c.app.url + 'search/'}}">
+      <input name="q" type="text" title="Search {{c.app.config.options.mount_label}}" placeholder="Search {{c.app.config.options.mount_label}}">
+      <label>
+        <input type="submit" style="display:none">
+        <b class="fa fa-search" title="Submit"></b>
+      </label>
+    </form>
+  {% else %}
+    <div class="placeholder-no-searchbox">&nbsp;</div>
+  {% endif %}
+    {% if c.custom_sidebar_menu %}
+      {% for s in c.custom_sidebar_menu %}
+        {{sidebar_item(s)}}
+      {% endfor %}
+    {% endif %}
+    {% if c.app %}
+      {% if h.has_access(c.app, 'admin')() %}
+        {% if c.app.tool_label.lower() == 'wiki' %}
+          {% set admin_menu = c.app.admin_menu(skip_common_menu=True) %}
+        {% else %}
+          {% set admin_menu = c.app.admin_menu() %}
+        {% endif %}
+        {% if admin_menu %}
+          <a id='sidebar-admin-header' onclick='$("#sidebar-admin-menu").toggleClass("hidden");$("#sidebar-admin-header").toggleClass("expanded");return false;'
+             href='#' {% if request.path.startswith(c.app.admin_url) %}class="expanded"{% endif %}>
+            {{sidebar_item(c.app.admin_menu_collapse_button)}}
+          </a>
+          <div id='sidebar-admin-menu' {% if not request.path.startswith(c.app.admin_url) %}class='hidden'{% endif %}>
+            {% for s in admin_menu %}
+              {{sidebar_item(s)}}
+            {% endfor %}
+            {{sidebar_item(c.app.admin_menu_delete_button)}}
+            {{sidebar_item(None)}}
+          </div>
+        {% endif %}
+      {% endif %}
+      {% for s in c.app.sidebar_menu() %}
+        {{sidebar_item(s)}}
+      {% endfor %}
+    {% elif c.project %}
+      {% for s in c.project.sidebar_menu() %}
+        {{sidebar_item(s)}}
+      {% endfor %}
+    {% endif %}
+    {% if ul_active[-1] %}
+      </ul>
+      {% do ul_active.append(False) %}
+    {% endif %}
+    {% if c.app and c.app.sidebar_menu_js() %}
+      <script>
+        {{c.app.sidebar_menu_js()|safe}}
+      </script>
+    {% endif %}
+</div>
diff --git a/Allura/allura/templates_responsive/jinja_master/theme_macros.html b/Allura/allura/templates_responsive/jinja_master/theme_macros.html
new file mode 100644
index 0000000..2420744
--- /dev/null
+++ b/Allura/allura/templates_responsive/jinja_master/theme_macros.html
@@ -0,0 +1,211 @@
+{#-
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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.
+-#}
+
+{#
+Each macro is wrapped with an 'if' clause so that a custom theme may extend this file and override individual macros
+http://stackoverflow.com/questions/26582731/redefining-imported-jinja-macros
+#}
+
+
+{# account_links are used in primary nav, and off-canvas menu for small screens #}
+{% if not account_links %}
+{%- macro account_links(c, h, config, login_url, logout_url) %}
+    {% if c.user._id %}
+        <a href="/auth/preferences/">Account</a>
+        <a href="{{c.user.url()}}">{{name}}</a>
+        <a href="{{logout_url}}">Log Out</a>
+    {% else %}
+        {% if h.asbool(config.get('auth.allow_user_registration', True)) %}
+            <a href="/auth/create_account">Register</a>
+        {% endif %}
+        <a href="{{login_url}}">Log In</a>
+    {% endif %}
+{%- endmacro %}
+{% endif %}
+
+{%  if not header %}
+{%- macro header(login_url, logout_url) %}
+{% set breakpoint='medium' %}
+<div class="row">
+    <header class="columns small-12 title-bar">
+        <div class="title-bar-left">
+            {% if g.nav_logo %}
+                <a href="{{ g.nav_logo['redirect_link'] }}"><img style="{% if g.nav_logo['image_width'] %}width: {{g.nav_logo['image_width']}}px;{% endif %} {% if g.nav_logo['image_height'] %}height: {{ g.nav_logo['image_height'] }}px;{% endif %}" src="{{ g.nav_logo['image_path'] }}" /></a>
+            {% endif %}
+            {% for nav_link in g.global_nav %}
+                <a href="{{ nav_link['url'] }}" {% if g.nav_logo or not loop.first %}class="show-for-{{ breakpoint }}"{% endif %}>{{ nav_link['title'] }}</a>
+            {% endfor %}
+        </div>
+        <div class="title-bar-right show-for-{{ breakpoint }}">
+            {{ account_links(c, h, config, login_url, logout_url) }}
+        </div>
+        <button class="menu-icon hide-for-{{ breakpoint }}" type="button" data-open="offCanvas"></button>
+    </header>
+</div>
+{%- endmacro %}
+{% endif %}
+
+
+{% if not all_content_wrapper %}
+{% macro all_content_wrapper(login_url, logout_url) -%}
+    <div class="off-canvas position-right" id="offCanvas" data-off-canvas>
+        <div class="menu vertical">
+        {% for nav_link in g.global_nav %}
+            <a href="{{ nav_link['url'] }}">{{ nav_link['title'] }}</a>
+        {% endfor %}
+        {{ account_links(c, h, config, login_url, logout_url) }}
+        </div>
+    </div>
+    <div class="off-canvas-content" data-off-canvas-content>
+        {{- caller(**kwargs) -}}
+    </div>
+{%- endmacro %}
+{% endif %}
+
+
+{% if not footer %}
+{%- macro footer(year, path_to_static='') %}
+<footer id="site-footer" class="row align-right">
+    <p>This project is powered by <a href="https://allura.apache.org/">Apache Allura</a>&trade;.</p>
+</footer>
+{%- endmacro %}
+{% endif %}
+
+{% if not custom_js %}
+{%- macro custom_js(path_to_static) %}
+<script>
+    $(document).foundation();
+</script>
+{%- endmacro %}
+{% endif %}
+
+{% if not custom_tracking_js %}
+{%- macro custom_tracking_js(accounts, user, project) %}
+    {# This should be overridden in your custom theme (e.g., sftheme) to implement custom tracking code. #}
+    var _gaq = _gaq || [];
+
+    function _add_tracking(prefix, tracking_id) {
+        _gaq.push(
+            [prefix+'._setAccount', tracking_id],
+            [prefix+'._trackPageview']
+        );
+    }
+
+    {%- for account in accounts %}
+    _add_tracking('acct{{ loop.index }}', '{{account}}');
+    {%- endfor %}
+    {% if project and project.neighborhood.features['google_analytics'] -%}
+      {% if project.neighborhood.tracking_id -%}
+          _add_tracking('nbhd', '{{project.neighborhood.tracking_id}}');
+      {%- endif %}
+      {% if project.tracking_id -%}
+          _add_tracking('proj', '{{project.tracking_id}}');
+      {%- endif %}
+    {%- endif %}
+
+    (function() {
+        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+        ga.src = ('https:' === document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+    })();
+{%- endmacro %}
+{% endif %}
+
+{% if not extra_header %}
+{%- macro extra_header(path_to_static) %}
+
+{%- endmacro %}
+{% endif %}
+
+{% if not breadcrumbs %}
+{%- macro breadcrumbs(project, app) %}
+    <nav aria-label="You are here:" role="navigation" class="row">
+        <ul class="breadcrumbs">
+            <li><a href="/">Home</a></li>
+            {% for label,url in project.breadcrumbs() %}
+                {% if not loop.last or app %}
+                    <li><a href="{{ url }}">{{ label }}</a></li>
+                {% else %}
+                    <li>{{ label }}</li>
+                {% endif %}
+            {% endfor %}
+            {% if app %}
+                <li>{{ app.config.options.mount_label }}</li>
+            {% endif %}
+        </ul>
+    </nav>
+{%- endmacro %}
+{% endif %}
+
+
+{% if not project_header_right %}
+{%- macro project_header_right(project, app) %}
+  {% if project.neighborhood.icon %}
+  <div class="column shrink neighborhood_block">
+    <a href="{{project.neighborhood.url()}}"><img {{ lib.project_icon_srcs(project.neighborhood.neighborhood_project) }} class="neighborhood_icon"
+       alt="Return to {{project.neighborhood.name}}" title="Return to {{project.neighborhood.name}}"></a>
+       <div class="neighborhood_title">
+         <h3><a href="{{project.neighborhood.url()}}">{{project.neighborhood.name}}</a></h3>
+         {% if project.neighborhood.project_list_url %}
+           <div class="neighborhood_title_link">
+           <a href="{{project.neighborhood.project_list_url}}">
+             View More Projects
+           </a>
+           </div>
+         {% endif %}
+    </div>
+  </div>
+  {% endif %}
+{%- endmacro %}
+{% endif %}
+
+{% if not login_overlay %}
+{%- macro login_overlay() %}
+    {% do g.register_js('js/jquery.lightbox_me.js') %}
+    {% do g.register_forge_js('js/jquery-ui.min.js') %}
+    {% do g.register_js('js/login_overlay.js') %}
+    <div id="login_overlay" class="ui-widget-content">
+        <h2 class="dark title">Login Required</h2>
+        <iframe src="{{g.login_fragment_url}}"></iframe>
+    </div>
+{%- endmacro %}
+{% endif %}
+
+{% if not site_notification %}
+{%- macro site_notification() %}
+    {% set note = g.theme.get_site_notification() %}
+    {% if note %}
+        <div id="site-notification">
+            <section class="callout primary" data-notification-id="{{note._id}}">
+                {{note.content|safe}}
+                <button class="close-button btn-close" aria-label="Dismiss alert" type="button">
+                  {#  .btn-close instead of data-close, since allura-base.js handles closing it, not Foundation #}
+                  <span aria-hidden="true">&times;</span>
+                </button>
+            </section>
+        </div>
+    {% endif %}
+{%- endmacro %}
+{% endif %}
+
+{% if not placeholder_project_icon %}
+{%- macro placeholder_project_icon() %}
+    <div class="placeholder-icon"></div>
+{%- endmacro %}
+{% endif %}
diff --git a/Allura/allura/templates_responsive/jinja_master/top_nav.html b/Allura/allura/templates_responsive/jinja_master/top_nav.html
new file mode 100644
index 0000000..a0373a9
--- /dev/null
+++ b/Allura/allura/templates_responsive/jinja_master/top_nav.html
@@ -0,0 +1,84 @@
+{#-
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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.
+-#}
+{% if c.project %}
+<div id="top_nav_admin" class="row">
+<ul class="menu dropdown" data-dropdown-menu>
+  {% for s in c.project.grouped_navbar_entries() %}
+    <li class="{% if s.matches_url(request) %}selected{% endif %}">
+        <a href="{{s.url}}" class="tool-{{(s.tool_name or 'admin').lower()}}-32">
+            {{s.label}}
+        </a>
+        {% set grouped_tool_count = s.matching_urls|length %}
+        {% if grouped_tool_count %}
+            <ul>
+                {%for tool in s.children%}
+                    <li class="{% if tool.matches_url(request) %}selected{% endif %}"><a href="{{tool.url}}">{{tool.label}}</a></li>
+                {%endfor%}
+            </ul>
+        {% endif %}
+    </li>
+  {% endfor %}
+  {% if h.has_access(c.project, 'admin')() %}
+    <li id="add-tool-container"><a href='#' class="add-tool-toggle">Add New...</a></li>
+    <button id="toggle-admin-btn" title="Click to unlock the toolbar and configure your project's tools.">
+        <i class="fa fa-lock"></i>
+    </button>
+  {% endif %}
+</ul>
+</div>
+{% if h.has_access(c.project, 'admin')() %}
+    {% do g.register_forge_js('js/underscore-min.js') %}
+    {% do g.register_forge_js('js/browser-polyfill.min.js') %}
+    {% do lib.register_react_js_files() %}
+    {% do g.register_forge_js('js/react-drag.min.js') %}
+    {% do g.register_forge_js('js/react-reorderable.min.js') %}
+    {% do g.register_forge_js('js/build/transpiled.js') %} {# if we do more es6, we'll need to register this in other places, or maybe even global #}
+    <script>
+        'use strict';
+        /*global ReactDOM, React, Main, ToggleAddNewTool */
+        var _data = {{ h.escape_json(c.project.nav_data(admin_options=True))|safe }};
+        $(document).ready(function () {
+            $('#toggle-admin-btn').click(function () {
+                if (typeof Main === 'undefined') {
+                    alert('Compiled JS is missing.  Need to run `npm install; npm run build;` on the server.');
+                    return;
+                }
+                ReactDOM.render(React.createElement(Main, {
+                    initialData: _data
+                }), document.getElementById("top_nav_admin"));
+            });
+
+            if (typeof ToggleAddNewTool === 'undefined') {
+                $('#add-tool-container').click(function(){
+                    alert('Compiled JS is missing.  Need to run `npm install; npm run build;` on the server.');
+                });
+            } else {
+                ReactDOM.render(React.createElement(ToggleAddNewTool, {
+                        installableTools: _data['installable_tools']
+                    }), document.getElementById('add-tool-container'));
+            }
+            $("#toggle-admin-btn").tooltipster({
+                delay: 200,
+                theme: 'tooltipster-light',
+                position: 'top'
+            });
+        });
+    </script>
+{% endif %}
+{% endif %}
diff --git a/Allura/development.ini b/Allura/development.ini
index 8922c30..8f86fca 100644
--- a/Allura/development.ini
+++ b/Allura/development.ini
@@ -140,7 +140,8 @@
 ;      32 in nested comments
 ;      48 in standard comments
 ; and then 1.5x and 2x versions of all
-project_icon_sizes = 16 24 32 48 64 72 96
+; 90px for new large project icons, and 1.5x 2x 3x versions
+project_icon_sizes = 16 24 32 48 64 72 90 96 135 180 270
 
 ; To use a custom image for default user profile avatars, specify a full URL here.  Size 96x96 is best, 48x48 ok
 ;default_avatar_image =
