From dd3899a7cdd0209b4639797a48dc3a70ddeddcb6 Mon Sep 17 00:00:00 2001
From: kasperisager <kasperisager@gmail.com>
Date: Sun, 2 Feb 2014 14:06:50 -0500
Subject: [PATCH] Optimize for customizations

---
 design/custom.css                             |   4 +-
 design/style.css                              | 181 +++++++++++++++---
 gulpfile.js                                   |   2 +-
 less/components/dropdowns.less                |  62 ------
 less/components/navbar.less                   |   6 -
 less/components/vanilla/mebox.less            |  46 -----
 less/{ => core}/components/badges.less        |   0
 less/{ => core}/components/button-groups.less |   0
 less/{ => core}/components/close.less         |   0
 less/core/components/dropdowns.less           | 142 ++++++++++++++
 less/{ => core}/components/glyphicons.less    |   1 +
 less/{ => core}/components/labels.less        |   0
 less/{ => core}/components/list-group.less    |   0
 less/{ => core}/components/modals.less        |   0
 less/core/components/navbar.less              |   9 +
 less/{ => core}/components/navs.less          |   0
 less/{ => core}/components/pagination.less    |   0
 less/{ => core}/components/panels.less        |   4 -
 .../components/vanilla/avatars.less           |   0
 .../components/vanilla/discussion.less        |   0
 .../components/vanilla/listings.less          |  11 ++
 less/core/components/vanilla/mebox.less       |  85 ++++++++
 less/core/globals/mixins.less                 |   9 +
 less/core/globals/variables.less              |  19 ++
 less/core/sections/profile.less               |  33 ++++
 less/{ => core}/shared/buttons.less           |   0
 less/{ => core}/shared/forms.less             |  30 ++-
 less/core/shared/grid.less                    |   9 +
 less/{ => core}/shared/scaffolding.less       |   0
 less/{ => core}/shared/tables.less            |   0
 less/core/shared/type.less                    |   9 +
 less/{ => core}/shared/utilities.less         |   0
 less/core/style.less                          |  69 +++++++
 less/custom.less                              |   4 +
 less/globals/mixins.less                      |   6 -
 less/globals/variables.less                   |   8 -
 less/shared/grid.less                         |   6 -
 less/shared/type.less                         |   6 -
 less/style.less                               |  55 ------
 less/variables.less                           |   9 +
 views/default.master.tpl                      |   4 +-
 41 files changed, 594 insertions(+), 235 deletions(-)
 delete mode 100644 less/components/dropdowns.less
 delete mode 100644 less/components/navbar.less
 delete mode 100644 less/components/vanilla/mebox.less
 rename less/{ => core}/components/badges.less (100%)
 rename less/{ => core}/components/button-groups.less (100%)
 rename less/{ => core}/components/close.less (100%)
 create mode 100644 less/core/components/dropdowns.less
 rename less/{ => core}/components/glyphicons.less (99%)
 rename less/{ => core}/components/labels.less (100%)
 rename less/{ => core}/components/list-group.less (100%)
 rename less/{ => core}/components/modals.less (100%)
 create mode 100644 less/core/components/navbar.less
 rename less/{ => core}/components/navs.less (100%)
 rename less/{ => core}/components/pagination.less (100%)
 rename less/{ => core}/components/panels.less (65%)
 rename less/{ => core}/components/vanilla/avatars.less (100%)
 rename less/{ => core}/components/vanilla/discussion.less (100%)
 rename less/{ => core}/components/vanilla/listings.less (94%)
 create mode 100644 less/core/components/vanilla/mebox.less
 create mode 100644 less/core/globals/mixins.less
 create mode 100644 less/core/globals/variables.less
 create mode 100644 less/core/sections/profile.less
 rename less/{ => core}/shared/buttons.less (100%)
 rename less/{ => core}/shared/forms.less (60%)
 create mode 100644 less/core/shared/grid.less
 rename less/{ => core}/shared/scaffolding.less (100%)
 rename less/{ => core}/shared/tables.less (100%)
 create mode 100644 less/core/shared/type.less
 rename less/{ => core}/shared/utilities.less (100%)
 create mode 100644 less/core/style.less
 create mode 100644 less/custom.less
 delete mode 100644 less/globals/mixins.less
 delete mode 100644 less/globals/variables.less
 delete mode 100644 less/shared/grid.less
 delete mode 100644 less/shared/type.less
 delete mode 100644 less/style.less
 create mode 100644 less/variables.less

diff --git a/design/custom.css b/design/custom.css
index c9b58c5..8910d37 100644
--- a/design/custom.css
+++ b/design/custom.css
@@ -24,8 +24,8 @@
     }
     .round { .border-radius(10px); }
  *
- * Other features include mathematical operations, extend/inheritance, import of
- * partials and more.
+ * Other features include mathematical operations, extend/inheritance, import
+ * of partials and more.
  *
  * If we still don't have you convinced, then simply put your good ol' CSS in
  * this file and it will be automatically included in Vanilla.
diff --git a/design/style.css b/design/style.css
index fb51712..87c2a5b 100644
--- a/design/style.css
+++ b/design/style.css
@@ -1,7 +1,17 @@
 /*!
- * Vanilla Bootstrap
+ * Bootstrap for Vanilla
  *
- * Written by Kasper Kronborg
+ * Based on Bootstrap v3.1.0 - Copyright 2011-2014 Twitter, Inc.
+ *
+ * Both Bootstrap and Bootstrap for Vanilla are licensed under the terms of the
+ * MIT License (http://opensource.org/licenses/MIT)
+ *
+ * Massive kudos to @fat and @mdo for their work on Bootstrap - without them,
+ * there never would have been a Bootstrap for Vanilla!
+ *
+ * @author    Kasper Isager <kasperisager@gmail.com>
+ * @license   http://opensource.org/licenses/MIT MIT
+ * @copyright 2014 © Kasper Kronborg Isager
  */
 /*! normalize.css v3.0.0 | MIT License | git.io/normalize */
 html {
@@ -1621,7 +1631,8 @@ output {
 .form-control,
 .InputBox,
 .TextBox,
-select {
+select,
+.token-input-list {
   display: block;
   width: 100%;
   height: 34px;
@@ -1638,7 +1649,8 @@ select {
   -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
   transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
 }
-.form-control:focus {
+.form-control:focus,
+.token-input-focused {
   border-color: #66afe9;
   outline: 0;
   -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
@@ -1982,6 +1994,17 @@ form ol {
   font-weight: normal;
   cursor: pointer;
 }
+.token-input-list {
+  list-style: none;
+}
+.token-input-input-token {
+  display: inline-block;
+  margin-bottom: 0 !important;
+}
+.token-input-input-token input {
+  background-color: transparent;
+  border: 0;
+}
 .Button,
 .NavButton {
   display: inline-block;
@@ -2791,7 +2814,8 @@ a.Bookmarked:before {
   content: "\e006";
 }
 .MenuItems,
-.FlyoutMenu {
+.FlyoutMenu,
+.token-input-dropdown {
   position: absolute;
   top: 100%;
   left: 0;
@@ -2811,15 +2835,15 @@ a.Bookmarked:before {
   box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
   background-clip: padding-box;
 }
-.MenuItems li > hr,
-.FlyoutMenu li > hr {
+.MenuItems li > hr {
   height: 1px;
   margin: 9px 0;
   overflow: hidden;
   background-color: #e5e5e5;
 }
 .MenuItems li > a,
-.FlyoutMenu li > a {
+.token-input-dropdown li,
+.token-input-dropdown > p {
   display: block;
   padding: 3px 20px;
   clear: both;
@@ -2829,29 +2853,61 @@ a.Bookmarked:before {
   white-space: nowrap;
 }
 .MenuItems li > a:hover,
-.FlyoutMenu li > a:hover,
 .MenuItems li > a:focus,
-.FlyoutMenu li > a:focus {
+.token-input-dropdown li:hover {
   text-decoration: none;
   color: #262626;
   background-color: #f5f5f5;
 }
-.Open > .MenuItems,
-.Open > .FlyoutMenu {
+.token-input-dropdown .token-input-selected-dropdown-item,
+.token-input-dropdown .token-input-selected-dropdown-item:hover {
+  color: #ffffff;
+  text-decoration: none;
+  outline: 0;
+  background-color: #428bca;
+}
+.Open > .MenuItems {
   display: block;
 }
-.OptionsMenu .MenuItems {
+.OptionsMenu .MenuItems,
+.MeBox .MenuItems,
+.MeBox .FlyoutMenu {
   left: auto;
   right: 0;
 }
-.MenuItems ul,
+.MenuItems ul {
+  padding: 0;
+  list-style: none;
+}
+.MenuItems li > hr {
+  border: 0;
+}
+.FlyoutMenu {
+  min-width: 280px;
+}
 .FlyoutMenu ul {
   padding: 0;
   list-style: none;
 }
-.MenuItems li > hr,
-.FlyoutMenu li > hr {
+.FlyoutMenu .Item {
+  padding: 6px 12px;
+  border-bottom: #e5e5e5 solid 1px;
+}
+.FlyoutMenu .Item.Title {
+  padding: 0 12px 6px;
+}
+.FlyoutMenu .Item.Title a {
+  float: right;
+}
+.FlyoutMenu .Item.Center {
+  border-bottom-width: 0;
+}
+.FlyoutMenu .Item.Empty {
+  margin-bottom: 0;
+  background-color: transparent;
   border: 0;
+  border-radius: 0;
+  box-shadow: none;
 }
 .ToggleFlyout {
   position: relative;
@@ -2869,6 +2925,24 @@ a.Bookmarked:before {
 .OptionsMenu.Open .SpFlyoutHandle {
   color: #428bca;
 }
+.token-input-dropdown {
+  padding-right: 12px;
+  padding-left: 12px;
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+}
+.token-input-dropdown ul {
+  padding: 0;
+  margin: 0 -12px;
+  list-style: none;
+}
+.token-input-dropdown li {
+  cursor: pointer;
+}
+.token-input-dropdown > p {
+  margin: 0 -12px;
+}
 .ButtonGroup {
   position: relative;
   display: inline-block;
@@ -2895,7 +2969,11 @@ a.Bookmarked:before {
 .nav > li > a:hover,
 .nav > li > a:focus,
 .FilterMenu li > a:hover,
-.FilterMenu li > a:focus {
+.FilterMenu li > a:focus,
+.MeBox .Username:hover,
+.MeBox .FlyoutButton:hover,
+.MeBox .Username:focus,
+.MeBox .FlyoutButton:focus {
   text-decoration: none;
   background-color: #eeeeee;
 }
@@ -3348,7 +3426,9 @@ a.Bookmarked:before {
     margin-right: -15px;
   }
 }
-.navbar-nav > li > .dropdown-menu {
+.navbar-nav > li > .dropdown-menu,
+.MeBox .MenuItems,
+.MeBox .FlyoutMenu {
   margin-top: 0;
   border-top-right-radius: 0;
   border-top-left-radius: 0;
@@ -3398,17 +3478,26 @@ a.Bookmarked:before {
 .navbar-default .navbar-text {
   color: #777777;
 }
-.navbar-default .navbar-nav > li > a {
+.navbar-default .navbar-nav > li > a,
+.navbar-default .MeBox .Username,
+.navbar-default .MeBox .FlyoutButton {
   color: #777777;
 }
 .navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
+.navbar-default .navbar-nav > li > a:focus,
+.navbar-default .MeBox .Username:hover,
+.navbar-default .MeBox .FlyoutButton:hover,
+.navbar-default .MeBox .Username:focus,
+.navbar-default .MeBox .FlyoutButton:focus {
   color: #333333;
   background-color: transparent;
 }
 .navbar-default .navbar-nav > .active > a,
 .navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
+.navbar-default .navbar-nav > .active > a:focus,
+.navbar-default .MeBox .Open .FlyoutButton,
+.navbar-default .MeBox .Open .FlyoutButton:hover,
+.navbar-default .MeBox .Open .FlyoutButton:focus {
   color: #555555;
   background-color: #e7e7e7;
 }
@@ -3481,17 +3570,26 @@ a.Bookmarked:before {
 .navbar-inverse .navbar-text {
   color: #999999;
 }
-.navbar-inverse .navbar-nav > li > a {
+.navbar-inverse .navbar-nav > li > a,
+.navbar-inverse .MeBox .Username,
+.navbar-inverse .MeBox .FlyoutButton {
   color: #999999;
 }
 .navbar-inverse .navbar-nav > li > a:hover,
-.navbar-inverse .navbar-nav > li > a:focus {
+.navbar-inverse .navbar-nav > li > a:focus,
+.navbar-inverse .MeBox .Username:hover,
+.navbar-inverse .MeBox .FlyoutButton:hover,
+.navbar-inverse .MeBox .Username:focus,
+.navbar-inverse .MeBox .FlyoutButton:focus {
   color: #ffffff;
   background-color: transparent;
 }
 .navbar-inverse .navbar-nav > .active > a,
 .navbar-inverse .navbar-nav > .active > a:hover,
-.navbar-inverse .navbar-nav > .active > a:focus {
+.navbar-inverse .navbar-nav > .active > a:focus,
+.navbar-inverse .MeBox .Open .FlyoutButton,
+.navbar-inverse .MeBox .Open .FlyoutButton:hover,
+.navbar-inverse .MeBox .Open .FlyoutButton:focus {
   color: #ffffff;
   background-color: #080808;
 }
@@ -4005,6 +4103,13 @@ buttona.Delete {
 .DataTable > tbody > tr > td {
   vertical-align: middle;
 }
+.PopList .ItemContent {
+  overflow: hidden;
+}
+.PopList .ProfilePhoto {
+  width: 32px;
+  height: 32px;
+}
 .MessageList {
   position: relative;
 }
@@ -4081,17 +4186,17 @@ buttona.Delete {
   margin-bottom: 20px;
   margin-left: 64px;
 }
-.MeBox .PhotoWrap,
+.MeBox > .PhotoWrap,
 .MeBox .WhoIs,
 .MeBox .Username,
 .MeBox .MeMenu {
   float: left;
 }
-.MeBox .PhotoWrap {
+.MeBox > .PhotoWrap {
   margin-top: 9px;
   margin-bottom: 9px;
 }
-.MeBox .PhotoWrap img {
+.MeBox > .PhotoWrap img {
   width: 32px;
   height: 32px;
   vertical-align: top;
@@ -4105,6 +4210,25 @@ buttona.Delete {
 .MeBox .ToggleFlyout .Arrow {
   display: none;
 }
+.Section-Profile .ProfileOptions {
+  float: right;
+}
+.Section-Profile dl.About dt,
+.Section-Profile dl.About dd {
+  display: inline-block;
+}
+.Section-Profile dl.About dt {
+  margin-left: 5px;
+}
+.Section-Profile dl.About dt:first-child {
+  margin-left: 0;
+}
+.Section-Profile dl.About dd {
+  margin-right: 5px;
+}
+.Section-Profile dl.About dd:last-child {
+  margin-right: 0;
+}
 .clearfix:before,
 .clearfix:after,
 .container:before,
@@ -4371,6 +4495,3 @@ td.visible-print {
 .Hidden {
   display: none;
 }
-.Trace {
-  display: none;
-}
diff --git a/gulpfile.js b/gulpfile.js
index 34d01b5..b9eba89 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -7,7 +7,7 @@ var gulp = require('gulp')
   , livereload = require('gulp-livereload');
 
 gulp.task('less', function () {
-  gulp.src('less/style.less')
+  gulp.src('less/core/style.less')
     .pipe(less({ paths: 'bower_components'})
       .on('error', gutil.log))
     .pipe(gulp.dest('design'))
diff --git a/less/components/dropdowns.less b/less/components/dropdowns.less
deleted file mode 100644
index 77ad6c7..0000000
--- a/less/components/dropdowns.less
+++ /dev/null
@@ -1,62 +0,0 @@
-//
-// # Dropdowns
-//
-// No styleguide reference.
-
-@import (reference) "@{bootstrap}/dropdowns";
-
-.MenuItems,
-.FlyoutMenu {
-  &:extend(.dropdown-menu);
-
-  ul {
-    padding: 0;
-    list-style: none;
-  }
-
-  li > a {
-    &:extend(.dropdown-menu > li > a);
-
-    &:hover,
-    &:focus {
-      &:extend(.dropdown-menu > li > a:hover);
-    }
-  }
-
-  li > hr {
-    border: 0;
-    &:extend(.dropdown-menu .divider);
-  }
-
-  .Open > & {
-    &:extend(.open > .dropdown-menu);
-  }
-}
-
-.ToggleFlyout {
-  position: relative;
-}
-
-.OptionsMenu {
-  .OptionsTitle {
-    display: none;
-  }
-
-  .SpFlyoutHandle {
-    cursor: pointer;
-    &:extend(.text-muted);
-
-    &:hover,
-    &:focus {
-      color: @link-color;
-    }
-  }
-
-  &.Open .SpFlyoutHandle {
-    color: @link-color;
-  }
-
-  .MenuItems {
-    &:extend(.dropdown-menu-right);
-  }
-}
diff --git a/less/components/navbar.less b/less/components/navbar.less
deleted file mode 100644
index ffb3a80..0000000
--- a/less/components/navbar.less
+++ /dev/null
@@ -1,6 +0,0 @@
-//
-// # Navbar
-//
-// No styleguide reference.
-
-@import (once) "@{bootstrap}/navbar";
diff --git a/less/components/vanilla/mebox.less b/less/components/vanilla/mebox.less
deleted file mode 100644
index a30b415..0000000
--- a/less/components/vanilla/mebox.less
+++ /dev/null
@@ -1,46 +0,0 @@
-// # MeBox
-//
-// No styleguide reference.
-
-.MeBox {
-  &:extend(.clearfix all);
-
-  .PhotoWrap,
-  .WhoIs,
-  .Username,
-  .MeMenu {
-    float: left;
-  }
-
-  .PhotoWrap {
-    .navbar-vertical-align(32px);
-
-    img {
-      width: 32px;
-      height: 32px;
-      vertical-align: top;
-    }
-  }
-
-  .Username,
-  .FlyoutButton {
-    &:extend(.nav > li > a);
-    &:extend(.navbar-nav > li > a);
-  }
-
-  .MeMenu {
-    &:extend(.clearfix all);
-  }
-
-  .ToggleFlyout {
-    float: left;
-
-    em {
-      display: none;
-    }
-
-    .Arrow {
-      display: none;
-    }
-  }
-}
diff --git a/less/components/badges.less b/less/core/components/badges.less
similarity index 100%
rename from less/components/badges.less
rename to less/core/components/badges.less
diff --git a/less/components/button-groups.less b/less/core/components/button-groups.less
similarity index 100%
rename from less/components/button-groups.less
rename to less/core/components/button-groups.less
diff --git a/less/components/close.less b/less/core/components/close.less
similarity index 100%
rename from less/components/close.less
rename to less/core/components/close.less
diff --git a/less/core/components/dropdowns.less b/less/core/components/dropdowns.less
new file mode 100644
index 0000000..7fea229
--- /dev/null
+++ b/less/core/components/dropdowns.less
@@ -0,0 +1,142 @@
+//
+// # Dropdowns
+//
+// No styleguide reference.
+
+// Library
+// -----------------------------------------------------------------------------
+
+@import (reference) "@{bootstrap}/dropdowns";
+
+
+// Extensions
+// -----------------------------------------------------------------------------
+
+.MenuItems {
+  &:extend(.dropdown-menu);
+
+  ul {
+    padding: 0;
+    list-style: none;
+  }
+
+  li > a {
+    &:extend(.dropdown-menu > li > a);
+
+    &:hover,
+    &:focus {
+      &:extend(.dropdown-menu > li > a:hover);
+    }
+  }
+
+  li > hr {
+    border: 0;
+    &:extend(.dropdown-menu .divider);
+  }
+
+  .Open > & {
+    &:extend(.open > .dropdown-menu);
+  }
+}
+
+.FlyoutMenu {
+  min-width: 280px;
+  &:extend(.dropdown-menu);
+
+  ul {
+    padding: 0;
+    list-style: none;
+  }
+
+  .Item {
+    padding: @padding-base-vertical @padding-base-horizontal;
+    border-bottom: @dropdown-divider-bg solid 1px;
+
+    &.Title {
+      padding: 0 @padding-base-horizontal @padding-base-vertical;
+
+      a {
+        float: right;
+      }
+    }
+
+    &.Center {
+      border-bottom-width: 0;
+    }
+
+    &.Empty {
+      margin-bottom: 0;
+      background-color: transparent;
+      border: 0;
+      border-radius: 0;
+      box-shadow: none;
+    }
+  }
+}
+
+.ToggleFlyout {
+  position: relative;
+}
+
+.OptionsMenu {
+  .OptionsTitle {
+    display: none;
+  }
+
+  .SpFlyoutHandle {
+    cursor: pointer;
+    &:extend(.text-muted);
+
+    &:hover,
+    &:focus {
+      color: @link-color;
+    }
+  }
+
+  &.Open .SpFlyoutHandle {
+    color: @link-color;
+  }
+
+  .MenuItems {
+    &:extend(.dropdown-menu-right);
+  }
+}
+
+// Typeahead
+
+.token-input-dropdown {
+  padding-right: @padding-base-horizontal;
+  padding-left: @padding-base-horizontal;
+  .box-sizing(content-box);
+  &:extend(.dropdown-menu);
+
+  ul {
+    padding: 0;
+    margin: 0 -@padding-base-horizontal;
+    list-style: none;
+  }
+
+  li {
+    cursor: pointer;
+
+    &:hover {
+      &:extend(.dropdown-menu > li > a:hover);
+    }
+  }
+
+  > p {
+    margin: 0 -@padding-base-horizontal;
+  }
+
+  li,
+  > p {
+    &:extend(.dropdown-menu > li > a);
+  }
+
+  .token-input-selected-dropdown-item {
+    &,
+    &:hover {
+      &:extend(.dropdown-menu > .active > a);
+    }
+  }
+}
diff --git a/less/components/glyphicons.less b/less/core/components/glyphicons.less
similarity index 99%
rename from less/components/glyphicons.less
rename to less/core/components/glyphicons.less
index 092cdd2..a689db1 100644
--- a/less/components/glyphicons.less
+++ b/less/core/components/glyphicons.less
@@ -1,3 +1,4 @@
+//
 // # Glyphicons
 //
 // No styleguide reference.
diff --git a/less/components/labels.less b/less/core/components/labels.less
similarity index 100%
rename from less/components/labels.less
rename to less/core/components/labels.less
diff --git a/less/components/list-group.less b/less/core/components/list-group.less
similarity index 100%
rename from less/components/list-group.less
rename to less/core/components/list-group.less
diff --git a/less/components/modals.less b/less/core/components/modals.less
similarity index 100%
rename from less/components/modals.less
rename to less/core/components/modals.less
diff --git a/less/core/components/navbar.less b/less/core/components/navbar.less
new file mode 100644
index 0000000..ff50274
--- /dev/null
+++ b/less/core/components/navbar.less
@@ -0,0 +1,9 @@
+//
+// # Navbar
+//
+// No styleguide reference.
+
+// Library
+// -----------------------------------------------------------------------------
+
+@import (once) "@{bootstrap}/navbar";
diff --git a/less/components/navs.less b/less/core/components/navs.less
similarity index 100%
rename from less/components/navs.less
rename to less/core/components/navs.less
diff --git a/less/components/pagination.less b/less/core/components/pagination.less
similarity index 100%
rename from less/components/pagination.less
rename to less/core/components/pagination.less
diff --git a/less/components/panels.less b/less/core/components/panels.less
similarity index 65%
rename from less/components/panels.less
rename to less/core/components/panels.less
index d42b35c..f263c14 100644
--- a/less/components/panels.less
+++ b/less/core/components/panels.less
@@ -7,7 +7,3 @@
 // -----------------------------------------------------------------------------
 
 @import (reference) "@{bootstrap}/panels";
-
-
-// Extensions
-// -----------------------------------------------------------------------------
\ No newline at end of file
diff --git a/less/components/vanilla/avatars.less b/less/core/components/vanilla/avatars.less
similarity index 100%
rename from less/components/vanilla/avatars.less
rename to less/core/components/vanilla/avatars.less
diff --git a/less/components/vanilla/discussion.less b/less/core/components/vanilla/discussion.less
similarity index 100%
rename from less/components/vanilla/discussion.less
rename to less/core/components/vanilla/discussion.less
diff --git a/less/components/vanilla/listings.less b/less/core/components/vanilla/listings.less
similarity index 94%
rename from less/components/vanilla/listings.less
rename to less/core/components/vanilla/listings.less
index 696c0b1..3c12fa4 100644
--- a/less/components/vanilla/listings.less
+++ b/less/core/components/vanilla/listings.less
@@ -37,6 +37,17 @@
   }
 }
 
+.PopList {
+  .ItemContent {
+    overflow: hidden;
+  }
+
+  .ProfilePhoto {
+    width: 32px;
+    height: 32px;
+  }
+}
+
 .MessageList {
   position: relative;
   &:extend(.list-group);
diff --git a/less/core/components/vanilla/mebox.less b/less/core/components/vanilla/mebox.less
new file mode 100644
index 0000000..532205c
--- /dev/null
+++ b/less/core/components/vanilla/mebox.less
@@ -0,0 +1,85 @@
+// # MeBox
+//
+// No styleguide reference.
+
+.MeBox {
+  &:extend(.clearfix all);
+
+  > .PhotoWrap,
+  .WhoIs,
+  .Username,
+  .MeMenu {
+    float: left;
+  }
+
+  > .PhotoWrap {
+    .navbar-vertical-align(32px);
+
+    img {
+      width: 32px;
+      height: 32px;
+      vertical-align: top;
+    }
+  }
+
+  .Username,
+  .FlyoutButton {
+    &:extend(.nav > li > a);
+    &:extend(.navbar-nav > li > a);
+
+    .navbar-default & {
+      &:extend(.navbar-default .navbar-nav > li > a);
+    }
+    .navbar-inverse & {
+      &:extend(.navbar-inverse .navbar-nav > li > a);
+    }
+
+    &:hover,
+    &:focus {
+      &:extend(.nav > li > a:hover);
+      &:extend(.navbar-nav > li > a:hover);
+
+      .navbar-default & {
+        &:extend(.navbar-default .navbar-nav > li > a:hover);
+      }
+      .navbar-inverse & {
+        &:extend(.navbar-inverse .navbar-nav > li > a:hover);
+      }
+    }
+  }
+
+  .Open .FlyoutButton {
+    &,
+    &:hover,
+    &:focus {
+      .navbar-default & {
+        &:extend(.navbar-default .navbar-nav > .active > a);
+      }
+      .navbar-inverse & {
+        &:extend(.navbar-inverse .navbar-nav > .active > a);
+      }
+    }
+  }
+
+  .MeMenu {
+    &:extend(.clearfix all);
+  }
+
+  .MenuItems,
+  .FlyoutMenu {
+    &:extend(.dropdown-menu-right);
+    &:extend(.navbar-nav > li > .dropdown-menu);
+  }
+
+  .ToggleFlyout {
+    float: left;
+
+    em {
+      display: none;
+    }
+
+    .Arrow {
+      display: none;
+    }
+  }
+}
diff --git a/less/core/globals/mixins.less b/less/core/globals/mixins.less
new file mode 100644
index 0000000..488605f
--- /dev/null
+++ b/less/core/globals/mixins.less
@@ -0,0 +1,9 @@
+//
+// # Mixins
+//
+// No styleguide reference.
+
+// Library
+// -----------------------------------------------------------------------------
+
+@import (reference) "@{bootstrap}/mixins";
diff --git a/less/core/globals/variables.less b/less/core/globals/variables.less
new file mode 100644
index 0000000..c3fbf26
--- /dev/null
+++ b/less/core/globals/variables.less
@@ -0,0 +1,19 @@
+//
+// # Variables
+//
+// No styleguide reference.
+
+// Library
+// -----------------------------------------------------------------------------
+
+@import (reference) "@{bootstrap}/variables";
+
+
+// Extensions
+// -----------------------------------------------------------------------------
+
+@icon-font-path: "fonts/";
+
+// Custom variables
+
+@import (reference) "variables";
diff --git a/less/core/sections/profile.less b/less/core/sections/profile.less
new file mode 100644
index 0000000..173e49b
--- /dev/null
+++ b/less/core/sections/profile.less
@@ -0,0 +1,33 @@
+//
+// # Profile
+//
+// No styleguide reference.
+
+.Section-Profile {
+  .ProfileOptions {
+    float: right;
+  }
+
+  dl.About {
+    dt,
+    dd {
+      display: inline-block;
+    }
+
+    dt {
+      margin-left: 5px;
+
+      &:first-child {
+        margin-left: 0;
+      }
+    }
+
+    dd {
+      margin-right: 5px;
+
+      &:last-child {
+        margin-right: 0;
+      }
+    }
+  }
+}
diff --git a/less/shared/buttons.less b/less/core/shared/buttons.less
similarity index 100%
rename from less/shared/buttons.less
rename to less/core/shared/buttons.less
diff --git a/less/shared/forms.less b/less/core/shared/forms.less
similarity index 60%
rename from less/shared/forms.less
rename to less/core/shared/forms.less
index 360756c..841b631 100644
--- a/less/shared/forms.less
+++ b/less/core/shared/forms.less
@@ -3,8 +3,15 @@
 //
 // No styleguide reference.
 
+// Library
+// -----------------------------------------------------------------------------
+
 @import (once) "@{bootstrap}/forms";
 
+
+// Extensions
+// -----------------------------------------------------------------------------
+
 .InputBox,
 .TextBox,
 select {
@@ -54,5 +61,26 @@ form .P {
 }
 .RadioLabel input[type="radio"],
 .CheckBoxLabel input[type="checkbox"] {
-    &:extend(.radio input[type="radio"]);
+  &:extend(.radio input[type="radio"]);
+}
+
+// Typeahead
+
+.token-input-list {
+  list-style: none;
+  &:extend(.form-control);
+}
+
+.token-input-focused {
+  &:extend(.form-control:focus);
+}
+
+.token-input-input-token {
+  display: inline-block;
+  margin-bottom: 0 !important;
+
+  input {
+    background-color: transparent;
+    border: 0;
+  }
 }
diff --git a/less/core/shared/grid.less b/less/core/shared/grid.less
new file mode 100644
index 0000000..5ef6122
--- /dev/null
+++ b/less/core/shared/grid.less
@@ -0,0 +1,9 @@
+//
+// # Grid
+//
+// No styleguide reference.
+
+// Library
+// -----------------------------------------------------------------------------
+
+@import (once) "@{bootstrap}/grid";
diff --git a/less/shared/scaffolding.less b/less/core/shared/scaffolding.less
similarity index 100%
rename from less/shared/scaffolding.less
rename to less/core/shared/scaffolding.less
diff --git a/less/shared/tables.less b/less/core/shared/tables.less
similarity index 100%
rename from less/shared/tables.less
rename to less/core/shared/tables.less
diff --git a/less/core/shared/type.less b/less/core/shared/type.less
new file mode 100644
index 0000000..fbb474e
--- /dev/null
+++ b/less/core/shared/type.less
@@ -0,0 +1,9 @@
+//
+// # Type
+//
+// No styleguide reference.
+
+// Library
+// -----------------------------------------------------------------------------
+
+@import (once) "@{bootstrap}/type";
diff --git a/less/shared/utilities.less b/less/core/shared/utilities.less
similarity index 100%
rename from less/shared/utilities.less
rename to less/core/shared/utilities.less
diff --git a/less/core/style.less b/less/core/style.less
new file mode 100644
index 0000000..f395cf7
--- /dev/null
+++ b/less/core/style.less
@@ -0,0 +1,69 @@
+/*!
+ * Bootstrap for Vanilla
+ *
+ * Based on Bootstrap v3.1.0 - Copyright 2011-2014 Twitter, Inc.
+ *
+ * Both Bootstrap and Bootstrap for Vanilla are licensed under the terms of the
+ * MIT License (http://opensource.org/licenses/MIT)
+ *
+ * Massive kudos to @fat and @mdo for their work on Bootstrap - without them,
+ * there never would have been a Bootstrap for Vanilla!
+ *
+ * @author    Kasper Isager <kasperisager@gmail.com>
+ * @license   http://opensource.org/licenses/MIT MIT
+ * @copyright 2014 © Kasper Kronborg Isager
+ */
+
+// WARNING: DO NOT EDIT THIS FILE OR ANY OTHER FILES WITHIN THIS DIRECTORY
+
+// Library paths
+// -----------------------------------------------------------------------------
+@bootstrap: "bootstrap/less";
+
+// Globals
+// -----------------------------------------------------------------------------
+@import "core/globals/variables";
+@import "core/globals/mixins";
+
+// Shared
+// -----------------------------------------------------------------------------
+@import "core/shared/scaffolding";
+@import "core/shared/type";
+@import "core/shared/grid";
+@import "core/shared/tables";
+@import "core/shared/forms";
+@import "core/shared/buttons";
+
+// Components
+// -----------------------------------------------------------------------------
+@import "core/components/glyphicons";
+@import "core/components/dropdowns";
+@import "core/components/button-groups";
+@import "core/components/navs";
+@import "core/components/navbar";
+@import "core/components/pagination";
+@import "core/components/labels";
+@import "core/components/badges";
+@import "core/components/list-group";
+@import "core/components/panels";
+@import "core/components/close";
+@import "core/components/modals";
+
+// Vanilla Components
+@import "core/components/vanilla/avatars";
+@import "core/components/vanilla/discussion";
+@import "core/components/vanilla/listings";
+@import "core/components/vanilla/mebox";
+
+// Sections
+// -----------------------------------------------------------------------------
+@import "core/sections/profile";
+
+// Shared Utilities
+// -----------------------------------------------------------------------------
+// These must be loaded last to ensure proper specificity.
+@import "core/shared/utilities";
+
+// Customizations
+// -----------------------------------------------------------------------------
+@import "custom";
diff --git a/less/custom.less b/less/custom.less
new file mode 100644
index 0000000..870c075
--- /dev/null
+++ b/less/custom.less
@@ -0,0 +1,4 @@
+//
+// # Customizations
+//
+// No styleguide reference.
diff --git a/less/globals/mixins.less b/less/globals/mixins.less
deleted file mode 100644
index db1198b..0000000
--- a/less/globals/mixins.less
+++ /dev/null
@@ -1,6 +0,0 @@
-//
-// # Mixins
-//
-// No styleguide reference.
-
-@import (reference) "@{bootstrap}/mixins";
diff --git a/less/globals/variables.less b/less/globals/variables.less
deleted file mode 100644
index a32fbac..0000000
--- a/less/globals/variables.less
+++ /dev/null
@@ -1,8 +0,0 @@
-//
-// # Variables
-//
-// No styleguide reference.
-
-@import (reference) "@{bootstrap}/variables";
-
-@icon-font-path: "fonts/";
diff --git a/less/shared/grid.less b/less/shared/grid.less
deleted file mode 100644
index e081dfd..0000000
--- a/less/shared/grid.less
+++ /dev/null
@@ -1,6 +0,0 @@
-//
-// # Grid
-//
-// No styleguide reference.
-
-@import (once) "@{bootstrap}/grid";
diff --git a/less/shared/type.less b/less/shared/type.less
deleted file mode 100644
index d1c6c1c..0000000
--- a/less/shared/type.less
+++ /dev/null
@@ -1,6 +0,0 @@
-//
-// # Type
-//
-// No styleguide reference.
-
-@import (once) "@{bootstrap}/type";
diff --git a/less/style.less b/less/style.less
deleted file mode 100644
index 1a95d8d..0000000
--- a/less/style.less
+++ /dev/null
@@ -1,55 +0,0 @@
-/*!
- * Vanilla Bootstrap
- *
- * Written by Kasper Kronborg
- */
-
-
-// Library paths
-// -----------------------------------------------------------------------------
-@bootstrap: "bootstrap/less";
-
-// Globals
-// -----------------------------------------------------------------------------
-@import "globals/variables";
-@import "globals/mixins";
-
-// Shared
-// -----------------------------------------------------------------------------
-@import "shared/scaffolding";
-@import "shared/type";
-@import "shared/grid";
-@import "shared/tables";
-@import "shared/forms";
-@import "shared/buttons";
-
-// Components
-// -----------------------------------------------------------------------------
-@import "components/glyphicons";
-@import "components/dropdowns";
-@import "components/button-groups";
-@import "components/navs";
-@import "components/navbar";
-@import "components/pagination";
-@import "components/labels";
-@import "components/badges";
-@import "components/list-group";
-@import "components/panels";
-@import "components/close";
-
-@import "components/modals";
-
-// Vanilla Components
-@import "components/vanilla/avatars";
-@import "components/vanilla/discussion";
-@import "components/vanilla/listings";
-@import "components/vanilla/mebox";
-
-// Shared Utilities
-// -----------------------------------------------------------------------------
-// These must be loaded last to ensure proper specificity.
-@import "shared/utilities";
-
-
-
-.Trace { display: none; }
diff --git a/less/variables.less b/less/variables.less
new file mode 100644
index 0000000..ca1c6a6
--- /dev/null
+++ b/less/variables.less
@@ -0,0 +1,9 @@
+//
+// # Variables
+//
+// All your variable overrides as well as any custom variables you might end up
+// writing should be put in this file. It is imported right after all the core
+// variables so it will override both variables set by Bootstrap itself as well
+// as variable overrides made by the theme.
+//
+// No styleguide reference.
diff --git a/views/default.master.tpl b/views/default.master.tpl
index 8b4ffb2..7a30c19 100644
--- a/views/default.master.tpl
+++ b/views/default.master.tpl
@@ -14,7 +14,7 @@
       <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
     <![endif]-->
   </head>
-  <body>
+  <body id="{$BodyID}" class="{$BodyClass}">
 
     <div class="page-wrap">
 
@@ -39,7 +39,7 @@
               {activity_link}
             </ul>
             <ul class="nav navbar-nav navbar-right">
-              {module name="MeModule"}
+              {module name="MeModule" CssClass="hidden-xs"}
             </ul>
           </div><!--/.nav-collapse -->
         </div>
-- 
GitLab