diff --git a/app/assets/javascripts/application.js.coffee b/app/assets/javascripts/application.js.coffee
index ea2a4b9710118b3b925e69391ed5e3d753c6697c..9fc313db9d0161117ca80f53cb5f9e2b394032eb 100644
--- a/app/assets/javascripts/application.js.coffee
+++ b/app/assets/javascripts/application.js.coffee
@@ -177,6 +177,10 @@ $ ->
     $(@).next('table').show()
     $(@).remove()
 
+  $('.navbar-toggle').on 'click', ->
+    $('.header-content .title').toggle()
+    $('.header-content .navbar-collapse').toggle()
+
   # Show/hide comments on diff
   $("body").on "click", ".js-toggle-diff-comments", (e) ->
     $(@).toggleClass('active')
diff --git a/app/assets/stylesheets/base/variables.scss b/app/assets/stylesheets/base/variables.scss
index 596376c3970b84e77d7ee414cd491f5ef08cc252..c44fa06fc537f79ae91bf60a21b6fa40c3b8d781 100644
--- a/app/assets/stylesheets/base/variables.scss
+++ b/app/assets/stylesheets/base/variables.scss
@@ -5,6 +5,7 @@ $gl-link-color: #446e9b;
 $nprogress-color: #c0392b;
 $gl-font-size: 14px;
 $list-font-size: 15px;
+$sidebar_collapsed_width: 52px;
 $sidebar_width: 230px;
 $avatar_radius: 50%;
 $code_font_size: 13px;
diff --git a/app/assets/stylesheets/generic/common.scss b/app/assets/stylesheets/generic/common.scss
index b69c5c4b574bc6923ae4d29c22212e6e81905ed8..1419a9cded984b40b3b2b104a99aaf202407037d 100644
--- a/app/assets/stylesheets/generic/common.scss
+++ b/app/assets/stylesheets/generic/common.scss
@@ -307,7 +307,7 @@ table {
 }
 
 .btn-sign-in {
-  margin-top: 5px;
+  margin-top: 7px;
   text-shadow: none;
 }
 
diff --git a/app/assets/stylesheets/generic/header.scss b/app/assets/stylesheets/generic/header.scss
index 3b0ee264bc3444fc645e13a1203d0f23f858a8ec..71afccba0016aacae82866b444bf365fca3aabad 100644
--- a/app/assets/stylesheets/generic/header.scss
+++ b/app/assets/stylesheets/generic/header.scss
@@ -2,7 +2,14 @@
  *  Application Header
  *
  */
+$header-height: 46px;
+
 header {
+  &.navbar-empty {
+    background: #FFF;
+    border-bottom: 1px solid #EEE;
+  }
+
   &.navbar-gitlab {
     z-index: 100;
     margin-bottom: 0;
@@ -11,56 +18,11 @@ header {
     width: 100%;
 
     .container {
+      background: #FFF;
       width: 100% !important;
       padding: 0;
-      padding-right: 35px;
-      background: #FFF;
-      border-bottom: 1px solid #EEE;
       filter: none;
 
-      .title {
-        position: relative;
-        float: left;
-        margin: 0;
-        margin-left: 25px;
-        font-size: 18px;
-        line-height: 44px;
-        font-weight: bold;
-        color: #444;
-
-        @include str-truncated(37%);
-
-        a {
-          color: #444;
-          &:hover {
-            text-decoration: underline;
-          }
-        }
-      }
-
-      .app_logo {
-        border-bottom: 1px solid transparent;
-        margin-bottom: -1px;
-
-        a {
-          padding: 5px 8px;
-
-          img {
-            float: left;
-          }
-
-          h3 {
-            width: 158px;
-            float: left;
-            margin: 0;
-            margin-left: 20px;
-            font-size: 18px;
-            line-height: 34px;
-            font-weight: normal;
-          }
-        }
-      }
-
       .nav > li > a {
         color: #888;
         font-size: 14px;
@@ -80,89 +42,80 @@ header {
         }
       }
 
-      /** NAV block with links and profile **/
-      .nav {
-        float: right;
-        margin-right: 0;
-      }
-
       .navbar-toggle {
         color: #666;
         margin: 0;
         border-radius: 0;
+        position: absolute;
+        right: 2px;
 
         &:hover {
           background-color: #EEE;
         }
       }
     }
-
-    .turbolink-spinner {
-      font-size: 20px;
-      margin-right: 10px;
-    }
-
-    @media (max-width: $screen-xs-max) {
-      border-width: 0;
-      font-size: 18px;
-
-      .title {
-        @include str-truncated(70%);
-      }
-
-      .navbar-collapse {
-        margin-top: 47px;
-      }
-
-      .navbar-nav {
-        margin: 5px 0;
-
-        .visible-xs, .visable-sm {
-          display: table-cell !important;
-        }
-      }
-
-      li {
-        display: table-cell;
-        width: 1%;
-
-        a {
-          text-align: center;
-          font-size: 18px !important;
-        }
-      }
-    }
   }
 
-  /**
-   *
-   * Logo holder
-   *
-   */
-  .app_logo {
+  .header-logo {
+    border-bottom: 1px solid transparent;
     float: left;
-    margin-right: 9px;
+    height: $header-height;
+    width: $sidebar_width;
 
     a {
       float: left;
-      height: 46px;
+      height: $header-height;
       width: 100%;
+      padding: 5px 8px;
+
+      h3 {
+        width: 158px;
+        float: left;
+        margin: 0;
+        margin-left: 20px;
+        font-size: 18px;
+        line-height: 34px;
+        font-weight: normal;
+      }
 
       img {
         width: 36px;
         height: 36px;
+        float: left;
       }
     }
+
     &:hover {
       background-color: #EEE;
     }
   }
 
-  /**
-   *
-   * Search box
-   *
-   */
+  .header-content {
+    border-bottom: 1px solid #EEE;
+    padding-right: 35px;
+    height: $header-height;
+
+    .title {
+      position: relative;
+      float: left;
+      margin: 0;
+      margin-left: 35px;
+      font-size: 18px;
+      line-height: 44px;
+      font-weight: bold;
+      color: #444;
+
+      @include str-truncated(37%);
+
+      a {
+        color: #444;
+        &:hover {
+          text-decoration: underline;
+        }
+      }
+    }
+  }
+
   .search {
     margin-right: 10px;
     margin-left: 10px;
@@ -174,6 +127,7 @@ header {
     }
 
     .search-input {
+      width: 220px;
       background-image: image-url("icon-search.png");
       background-repeat: no-repeat;
       background-position: 10px;
@@ -194,41 +148,61 @@ header {
   }
 }
 
-.search .search-input {
-  width: 300px;
-}
+@mixin collapsed-header {
+  .header-logo {
+    width: $sidebar_collapsed_width;
 
-@media (max-width: 1200px)  {
-  .search .search-input {
-    width: 200px;
+    h3 {
+      display: none;
+    }
   }
-}
 
-@media (max-width: $screen-xs-max) {
-  #nprogress .spinner {
-    right: 35px !important;
+  .header-content {
+    .title {
+      margin-left: 30px;
+    }
   }
 }
 
 @media (max-width: $screen-md-max) {
-  .header-collapsed, .header-expanded {
-    width: 52px;
+  header .container .title {
+    max-width: 43%;
+  }
 
-    h3 {
-      display: none;
-    }
+  .header-collapsed, .header-expanded {
+    @include collapsed-header;
   }
 }
 
 @media(min-width: $screen-md-max) {
   .header-collapsed {
-    width: 52px;
-
-    h3 {
-      display: none;
-    }
+    @include collapsed-header;
   }
 
   .header-expanded {
   }
 }
+
+@media (max-width: $screen-xs-max) {
+  header .container {
+    font-size: 18px;
+
+    .title {
+      max-width: 70%;
+    }
+
+    .navbar-nav {
+      margin: 0px;
+      float: none !important;
+
+      .visible-xs, .visable-sm {
+        display: table-cell !important;
+      }
+    }
+
+    li {
+      display: table-cell;
+      width: 1%;
+    }
+  }
+}
diff --git a/app/assets/stylesheets/generic/mobile.scss b/app/assets/stylesheets/generic/mobile.scss
index b7f6fac522360f8bbd14108d7b6dd3c5c2963482..74108c1f08681d5ebbe5ef8d187a3d74eed3a8c1 100644
--- a/app/assets/stylesheets/generic/mobile.scss
+++ b/app/assets/stylesheets/generic/mobile.scss
@@ -57,7 +57,7 @@
   }
 
   .container .title {
-    margin-left: 6px !important;
+    margin-left: 15px !important;
     max-width: 70% !important;
   }
 }
diff --git a/app/assets/stylesheets/generic/sidebar.scss b/app/assets/stylesheets/generic/sidebar.scss
index a80b58508035efafc2c38b2fbf8fdab80191302e..69bddc6f59ec8d12dec5a15f9f2d5d64a9126ddd 100644
--- a/app/assets/stylesheets/generic/sidebar.scss
+++ b/app/assets/stylesheets/generic/sidebar.scss
@@ -1,6 +1,4 @@
 .page-with-sidebar {
-  background: $background-color;
-
   .sidebar-wrapper {
     position: fixed;
     top: 0;
@@ -102,13 +100,13 @@
   padding-left: 50px;
 
   .sidebar-wrapper {
-    width: 52px;
+    width: $sidebar_collapsed_width;
 
     .nav-sidebar {
       margin-top: 29px;
       position: fixed;
       top: 45px;
-      width: 52px;
+      width: $sidebar_collapsed_width;
 
       li a {
         padding-left: 18px;
@@ -125,7 +123,7 @@
 
     .collapse-nav a {
       left: 0px;
-      width: 52px;
+      width: $sidebar_collapsed_width;
     }
 
     .sidebar-user {
diff --git a/app/assets/stylesheets/themes/gitlab-theme.scss b/app/assets/stylesheets/themes/gitlab-theme.scss
index 9b8e3d8e291cc3e6939e497b1859d7be545e064b..1b06b4aa925b90e2f41d00eace02c5cafc85e2e0 100644
--- a/app/assets/stylesheets/themes/gitlab-theme.scss
+++ b/app/assets/stylesheets/themes/gitlab-theme.scss
@@ -1,8 +1,9 @@
 @mixin gitlab-theme($color-light, $color, $color-darker, $color-dark) {
   header {
     &.navbar-gitlab {
-      .app_logo {
+      .header-logo {
         background-color: $color-darker;
+        border-color: $color-darker;
 
         a {
           color: $color-light;
@@ -19,8 +20,6 @@
   }
 
   .page-with-sidebar {
-    background: $color-darker;
-
     .collapse-nav a {
       color: #FFF;
       background: $color;
diff --git a/app/views/layouts/_head_panel.html.haml b/app/views/layouts/_head_panel.html.haml
deleted file mode 100644
index ddf1ffc761693c091fd3ddc03653c74bfeb04b59..0000000000000000000000000000000000000000
--- a/app/views/layouts/_head_panel.html.haml
+++ /dev/null
@@ -1,42 +0,0 @@
-%header.navbar.navbar-fixed-top.navbar-gitlab{ class: nav_header_class }
-  .container
-    %div.app_logo
-      = link_to root_path, class: 'home', title: 'Dashboard', id: 'js-shortcuts-home', data: {toggle: 'tooltip', placement: 'bottom'} do
-        = brand_header_logo
-        %h3 GitLab
-    %h1.title
-      = title
-
-    %button.navbar-toggle{type: 'button', data: {target: '.navbar-collapse', toggle: 'collapse'}}
-      %span.sr-only Toggle navigation
-      = icon('bars')
-
-    .navbar-collapse.collapse
-      %ul.nav.navbar-nav
-        %li.hidden-sm.hidden-xs
-          = render 'layouts/search'
-        %li.visible-sm.visible-xs
-          = link_to search_path, title: 'Search', data: {toggle: 'tooltip', placement: 'bottom'} do
-            = icon('search')
-        %li
-          = link_to help_path, title: 'Help', data: {toggle: 'tooltip', placement: 'bottom'} do
-            = icon('question-circle fw')
-        %li
-          = link_to explore_root_path, title: 'Explore', data: {toggle: 'tooltip', placement: 'bottom'} do
-            = icon('globe fw')
-        %li
-          = link_to user_snippets_path(current_user), title: 'Your snippets', data: {toggle: 'tooltip', placement: 'bottom'} do
-            = icon('clipboard fw')
-        - if current_user.is_admin?
-          %li
-            = link_to admin_root_path, title: 'Admin area', data: {toggle: 'tooltip', placement: 'bottom'} do
-              = icon('wrench fw')
-        - if current_user.can_create_project?
-          %li
-            = link_to new_project_path, title: 'New project', data: {toggle: 'tooltip', placement: 'bottom'} do
-              = icon('plus fw')
-        %li
-          = link_to profile_path, title: 'Profile settings', data: {toggle: 'tooltip', placement: 'bottom'} do
-            = icon('cog fw')
-
-= render 'shared/outdated_browser'
diff --git a/app/views/layouts/_public_head_panel.html.haml b/app/views/layouts/_public_head_panel.html.haml
deleted file mode 100644
index 8a297566d6c156da6949041bb88888a69156534f..0000000000000000000000000000000000000000
--- a/app/views/layouts/_public_head_panel.html.haml
+++ /dev/null
@@ -1,22 +0,0 @@
-%header.navbar.navbar-fixed-top.navbar-gitlab{ class: nav_header_class }
-  .container
-    %div.app_logo
-      = link_to explore_root_path, class: "home" do
-        = brand_header_logo
-        %h3 GitLab
-    %h1.title= title
-
-    %button.navbar-toggle{"data-target" => ".navbar-collapse", "data-toggle" => "collapse", type: "button"}
-      %span.sr-only Toggle navigation
-      %i.fa.fa-bars
-
-    - unless current_controller?('sessions')
-      .pull-right.hidden-xs
-        = link_to "Sign in", new_session_path(:user, redirect_to_referer: 'yes'), class: 'btn btn-sign-in btn-new append-right-10'
-
-      .navbar-collapse.collapse
-        %ul.nav.navbar-nav
-          %li.visible-xs
-            = link_to "Sign in", new_session_path(:user, redirect_to_referer: 'yes')
-
-= render 'shared/outdated_browser'
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index a97feeb1ecdc9caf4afc63eb2321d5eaadfd3c8b..155825cc4c229e267ee085508f8bbf855c03da4c 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -3,8 +3,8 @@
   = render "layouts/head"
   %body{class: "#{app_theme}", :'data-page' => body_data_page}
     - if current_user
-      = render "layouts/head_panel", title: header_title
+      = render "layouts/header/default", title: header_title
     - else
-      = render "layouts/public_head_panel", title: header_title
+      = render "layouts/header/public", title: header_title
 
     = render 'layouts/page', sidebar: sidebar
diff --git a/app/views/layouts/devise.html.haml b/app/views/layouts/devise.html.haml
index 5a59c9fd59a2e385fcf0e33140e6c42db22d182c..d406f5764a73ed8d2be577c5e773dee4c0772504 100644
--- a/app/views/layouts/devise.html.haml
+++ b/app/views/layouts/devise.html.haml
@@ -2,7 +2,7 @@
 %html{ lang: "en"}
   = render "layouts/head"
   %body.ui_mars.login-page.application
-    = render "layouts/empty_head_panel"
+    = render "layouts/header/empty"
     = render "layouts/broadcast"
     .container.navless-container
       .content
diff --git a/app/views/layouts/errors.html.haml b/app/views/layouts/errors.html.haml
index aa0f3f0a8194b6c54d72685b994535adb77da745..2e3a2b16eb7be17ddcae7c2930212f2796172181 100644
--- a/app/views/layouts/errors.html.haml
+++ b/app/views/layouts/errors.html.haml
@@ -2,7 +2,7 @@
 %html{ lang: "en"}
   = render "layouts/head"
   %body{class: "#{app_theme}  application"}
-    = render "layouts/head_panel", title: "" if current_user
+    = render "layouts/header/empty"
     .container.navless-container
       = render "layouts/flash"
       .error-page
diff --git a/app/views/layouts/header/_default.html.haml b/app/views/layouts/header/_default.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..2970af377f5892a920506404f72306da15bf7e5e
--- /dev/null
+++ b/app/views/layouts/header/_default.html.haml
@@ -0,0 +1,43 @@
+%header.navbar.navbar-fixed-top.navbar-gitlab{ class: nav_header_class }
+  .container
+    .header-logo
+      = link_to root_path, class: 'home', title: 'Dashboard', id: 'js-shortcuts-home', data: {toggle: 'tooltip', placement: 'bottom'} do
+        = brand_header_logo
+        %h3 GitLab
+    .header-content
+      %h1.title
+        = title
+
+      %button.navbar-toggle
+        %span.sr-only Toggle navigation
+        = icon('bars')
+
+      .navbar-collapse.collapse
+        %ul.nav.navbar-nav.pull-right
+          %li.hidden-sm.hidden-xs
+            = render 'layouts/search'
+          %li.visible-sm.visible-xs
+            = link_to search_path, title: 'Search', data: {toggle: 'tooltip', placement: 'bottom'} do
+              = icon('search')
+          %li
+            = link_to help_path, title: 'Help', data: {toggle: 'tooltip', placement: 'bottom'} do
+              = icon('question-circle fw')
+          %li
+            = link_to explore_root_path, title: 'Explore', data: {toggle: 'tooltip', placement: 'bottom'} do
+              = icon('globe fw')
+          %li
+            = link_to user_snippets_path(current_user), title: 'Your snippets', data: {toggle: 'tooltip', placement: 'bottom'} do
+              = icon('clipboard fw')
+          - if current_user.is_admin?
+            %li
+              = link_to admin_root_path, title: 'Admin area', data: {toggle: 'tooltip', placement: 'bottom'} do
+                = icon('wrench fw')
+          - if current_user.can_create_project?
+            %li
+              = link_to new_project_path, title: 'New project', data: {toggle: 'tooltip', placement: 'bottom'} do
+                = icon('plus fw')
+          %li
+            = link_to profile_path, title: 'Profile settings', data: {toggle: 'tooltip', placement: 'bottom'} do
+              = icon('cog fw')
+
+= render 'shared/outdated_browser'
diff --git a/app/views/layouts/_empty_head_panel.html.haml b/app/views/layouts/header/_empty.html.haml
similarity index 65%
rename from app/views/layouts/_empty_head_panel.html.haml
rename to app/views/layouts/header/_empty.html.haml
index 358caa3868b826350bc9460b3348a83eb5989ed4..16fbf6d4020d2bafa68a55b9e2d6cc0aa88f315a 100644
--- a/app/views/layouts/_empty_head_panel.html.haml
+++ b/app/views/layouts/header/_empty.html.haml
@@ -1,4 +1,4 @@
-%header.navbar.navbar-fixed-top.navbar-gitlab
+%header.navbar.navbar-fixed-top.navbar-empty
   .container
     %h4.center
       = image_tag 'logo-white.png', width: 32, height: 32
diff --git a/app/views/layouts/header/_public.html.haml b/app/views/layouts/header/_public.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..6a031722aaa9b2df012979fd69ec1e2f4c07bc2d
--- /dev/null
+++ b/app/views/layouts/header/_public.html.haml
@@ -0,0 +1,14 @@
+%header.navbar.navbar-fixed-top.navbar-gitlab{ class: nav_header_class }
+  .container
+    .header-logo
+      = link_to explore_root_path, class: "home" do
+        = brand_header_logo
+        %h3 GitLab
+    .header-content
+      %h1.title= title
+
+      - unless current_controller?('sessions')
+        .pull-right
+          = link_to "Sign in", new_session_path(:user, redirect_to_referer: 'yes'), class: 'btn btn-sign-in btn-success btn-sm'
+
+= render 'shared/outdated_browser'