diff --git a/.gitignore b/.gitignore
index c81470223495eca9ae6f45084d1ad330efeb1521..d94ba566edb1d36a02b00f8e756109e69eb536f9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,4 @@ profiles.clj
 /metabase.db.*.db
 /frontend_client/app/bower_components
 /node_modules/
+/frontend_client/app/dist/
diff --git a/Gulpfile.js b/Gulpfile.js
new file mode 100644
index 0000000000000000000000000000000000000000..e523eaea20d35eeacb82eb82c595743573978122
--- /dev/null
+++ b/Gulpfile.js
@@ -0,0 +1,44 @@
+'use strict';
+
+var gulp = require('gulp'),
+    concat = require('gulp-concat'),
+    myth = require('gulp-myth');
+
+var basePath = 'frontend_client/app/';
+
+var SRC = {
+    css: [basePath + 'css/**/*.css', basePath + 'components/**/*.css']
+};
+
+var DEST = {
+    css: '' + basePath + '/dist'
+};
+
+
+/*
+  CSS compilation
+  1. get all css files in components directory specified in SRC.css
+     --------------------
+     this way we don't need to have a single 'app.css' or similar
+     to combine all our css (our build system should do this for us)
+
+  2. run the css through myth to generate browse compatible css
+  3. minify the css
+  4. write to DEST.css directory
+*/
+
+gulp.task('css', function(){
+    return gulp.src(SRC.css)
+            .pipe(concat('corvus.css'))
+            .pipe(myth())
+            .pipe(gulp.dest(DEST.css));
+});
+
+gulp.task('watch', function(){
+    gulp.watch(SRC.css, ['css']);
+});
+
+
+gulp.task('build', ['css']);
+
+gulp.task('default', ['build','watch']);
diff --git a/frontend_client/app/dist/corvus.css b/frontend_client/app/dist/corvus.css
deleted file mode 100644
index b124cf979a39806dc011e74a9689397e93a00c24..0000000000000000000000000000000000000000
--- a/frontend_client/app/dist/corvus.css
+++ /dev/null
@@ -1,2299 +0,0 @@
-#id_sql {
-  height: 200px;
-}
-
-.Login-page {
-  height: 420px;
-}
-
-.Login-greeting {
-  margin-top: 2em;
-  font-size: 3em;
-}
-
-@media screen and (min-width: 60em) {
-  .Login-form {
-    border-left: 1px solid #d9d9d9;
-  }
-}
-
-.Login-form .Form {
-  width: 100%;
-}
-
-html {
-  text-rendering: optimizeLegibility;
-}
-
-body {
-  font-family: "Lato", "Helvetica Neue", Helvetica, sans-serif;
-  font-size: 100%;
-  margin: 0;
-}
-
-/*
-  override default padding and margin on lists
-  in most cases we won't be using list-style so
-  the padding isn't necessary
-*/
-
-ul,
-ol {
-  padding: 0;
-  margin: 0;
-  list-style-type: none;
-}
-
-/* reset button element */
-
-button {
-  font-size: 100%;
-  -webkit-appearance: none;
-  border: 0;
-  padding: 0;
-  margin: 0;
-  outline: none;
-}
-
-.disabled {
-  pointer-events: none;
-  opacity: 0.4;
-}
-
-.bordered {
-  border: 1px solid #d9d9d9;
-}
-
-.border-bottom {
-  border-bottom: 1px solid #d9d9d9;
-}
-
-/* ensure that a border-top item inside of a bordred element won't double up */
-
-.bordered .border-bottom:last-child {
-  border-bottom: none;
-}
-
-.border-top {
-  border-top: 1px solid #d9d9d9;
-}
-
-/* ensure that a border-top item inside of a bordred element won't double up */
-
-.bordered .border-top:first-child {
-  border-top: none;
-}
-
-.border-right {
-  border-right: 1px solid #d9d9d9;
-}
-
-.border-left {
-  border-left: 1px solid #d9d9d9;
-}
-
-/* BORDERLESS IS THE DEFAULT */
-
-/* ONLY USE IF needing to override an existing border! */
-
-/* ensure there is no border via important */
-
-.borderless {
-  border: none !important;
-}
-
-/* set main elements to box-sizing border-box for more reliable box model calc */
-
-div,
-nav,
-article,
-section,
-main,
-header,
-footer,
-input,
-form,
-table,
-fieldset,
-textarea,
-ul,
-li {
-  box-sizing: border-box;
-}
-
-/* Nicolas Gallaghers Clearfix solution
-   Ref: http://nicolasgallagher.com/micro-clearfix-hack/ */
-
-/**
- * For modern browsers
- * 1. The space content is one way to avoid an Opera bug when the
- *    contenteditable attribute is included anywhere else in the document.
- *    Otherwise it causes space to appear at the top and bottom of elements
- *    that are clearfixed.
- * 2. The use of `table` rather than `block` is only necessary if using
- *    `:before` to contain the top-margins of child elements.
- */
-
-.clearfix:before,
-.clearfix:after {
-  content: " ";
-  /* 1 */
-  display: table;
-  /* 2 */
-}
-
-.clearfix:after {
-  clear: both;
-}
-
-/**
- * For IE 6/7 only
- * Include this rule to trigger hasLayout and contain floats.
- */
-
-.clearfix {
-  *zoom: 1;
-}
-
-.text-white {
-  color: #fff;
-}
-
-.bg-white {
-  background-color: #fff;
-}
-
-.bg-alt {
-  background-color: #F4F6F8;
-}
-
-/* brand */
-
-.text-brand {
-  color: #4A90E2;
-}
-
-.bg-brand {
-  background-color: #4A90E2;
-}
-
-/* success */
-
-.text-success {
-  color: #8BC150;
-}
-
-.bg-success {
-  background-color: #8BC150;
-}
-
-/* error */
-
-.text-error {
-  color: #FF4136;
-}
-
-.bg-error {
-  background-color: #FF4136;
-}
-
-/* grey */
-
-.text-grey-1 {
-  color: rgb(223, 223, 223);
-}
-
-.text-grey-2 {
-  color: rgb(198, 198, 198);
-}
-
-.text-grey-3 {
-  color: rgb(174, 174, 174);
-}
-
-.text-grey-4 {
-  color: rgb(149, 149, 149);
-}
-
-.bg-grey-1 {
-  background-color: rgb(223, 223, 223);
-}
-
-.bg-grey-2 {
-  background-color: rgb(198, 198, 198);
-}
-
-.bg-grey-3 {
-  background-color: rgb(174, 174, 174);
-}
-
-.bg-grey-4 {
-  background-color: rgb(149, 149, 149);
-}
-
-.float-left {
-  float: left;
-}
-
-.float-right {
-  float: right;
-}
-
-h1,
-.h1,
-h2,
-.h2,
-h3,
-.h3,
-h4,
-.h4,
-h5,
-.h5,
-h6,
-.h6 {
-  text-rendering: optimizeLegibility;
-  -webkit-font-smoothing: antialiased;
-  margin-top: 0.5em;
-  margin-bottom: 0.5em;
-  color: #727479;
-  font-weight: 100;
-}
-
-.h1 {
-  font-size: 2em;
-}
-
-.h2 {
-  font-size: 1.5em;
-}
-
-.h3 {
-  font-size: 1.17em;
-}
-
-.h4 {
-  font-size: 1.12em;
-}
-
-.h5 {
-  font-size: .83em;
-}
-
-.h6 {
-  font-size: .75em;
-}
-
-.hide {
-  display: none !important;
-}
-
-.show {
-  display: block;
-}
-
-.show-sm,
-.show-md,
-.show-lg,
-.show-xl {
-  display: none;
-}
-
-/* small */
-
-@media screen and (min-width: 40em) {
-  .hide-sm {
-    display: none !important;
-  }
-}
-
-@media screen and (min-width: 40em) {
-  .show-sm {
-    display: block !important;
-  }
-}
-
-/* medium */
-
-@media screen and (min-width: 60em) {
-  .hide-md {
-    display: none !important;
-  }
-}
-
-@media screen and (min-width: 60em) {
-  .show-md {
-    display: block !important;
-  }
-}
-
-/* large */
-
-@media screen and (min-width: 80em) {
-  .hide-lg {
-    display: none !important;
-  }
-}
-
-@media screen and (min-width: 80em) {
-  .show-lg {
-    display: block !important;
-  }
-}
-
-/* xl */
-
-@media screen and (min-width: 120em) h {
-  .hide-xl {
-    display: none !important;
-  }
-}
-
-@media screen and (min-width: 120em) {
-  .show-xl {
-    display: block !important;
-  }
-}
-
-.input {
-  border: 1px solid #d9d9d9;
-  padding: 0.8rem 1rem;
-  transition: border .3s linear;
-  border-radius: 4px;
-}
-
-.input:focus {
-  outline: none;
-  border: 1px solid #4E82C0;
-  transition: border .3s linear;
-}
-
-.input:disabled {
-  opacity: .5;
-  cursor: not-allowed;
-}
-
-@media screen and (min-width: 40em) {
-  .MainContent {
-    overflow-y: scroll;
-    height: 100%;
-  }
-}
-
-.wrapper {
-  width: 100%;
-  margin: 0 auto;
-}
-
-@media screen and (min-width: 40em) {
-  .wrapper {
-    max-width: 640px;
-  }
-}
-
-@media screen and (min-width: 60em) {
-  .wrapper {
-    max-width: 940px;
-  }
-}
-
-@media screen and (min-width: 80em) {
-  .wrapper {
-    max-width: 1140px;
-  }
-}
-
-@media screen and (min-width: 120em) {
-  .wrapper {
-    max-width: 1540px;
-  }
-}
-
-.row {
-  margin-left: -1em;
-  margin-right: -1em;
-  clear: both;
-}
-
-/* height */
-
-.full-height {
-  height: 100%;
-}
-
-.scroll-y {
-  overflow-y: scroll;
-}
-
-.scroll-x {
-  overflow-x: scroll;
-}
-
-/* display utilities */
-
-.block {
-  display: block;
-}
-
-.inline-block {
-  display: inline-block;
-}
-
-.table {
-  display: table;
-}
-
-.table-cell {
-  display: table-cell;
-}
-
-.full {
-  width: 100%;
-}
-
-.half {
-  width: 50%;
-}
-
-/* position utilities */
-
-.fixed {
-  position: fixed;
-}
-
-.relative {
-  position: relative;
-}
-
-.absolute {
-  position: absolute;
-}
-
-.top {
-  top: 0;
-}
-
-.right {
-  right: 0;
-}
-
-.bottom {
-  bottom: 0;
-}
-
-.left {
-  left: 0;
-}
-
-.layout-centered {
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  -webkit-transform: translate(-50%, -50%);
-  -ms-transform: translate(-50%, -50%);
-  transform: translate(-50%, -50%);
-  -webkit-transform-style: preserve-3d;
-  transform-style: preserve-3d;
-}
-
-/* grid */
-
-.col {
-  float: left;
-  box-sizing: border-box;
-  width: 100%;
-  padding-left: 1em;
-  padding-right: 1em;
-}
-
-@media screen and (min-width: 40em) {
-  .col-sm-1 {
-    width: 8.333333333333332%;
-  }
-
-  .col-sm-2 {
-    width: 16.666666666666664%;
-  }
-
-  .col-sm-3 {
-    width: 25%;
-  }
-
-  .col-sm-4 {
-    width: 33.33333333333333%;
-  }
-
-  .col-sm-5 {
-    width: 41.66666666666667%;
-  }
-
-  .col-sm-6 {
-    width: 50%;
-  }
-
-  .col-sm-7 {
-    width: 58.333333333333336%;
-  }
-
-  .col-sm-8 {
-    width: 66.66666666666666%;
-  }
-
-  .col-sm-9 {
-    width: 75%;
-  }
-
-  .col-sm-10 {
-    width: 83.33333333333334%;
-  }
-
-  .col-sm-11 {
-    width: 91.66666666666666%;
-  }
-
-  .col-sm-12 {
-    width: 100%;
-  }
-}
-
-@media screen and (min-width: 60em) {
-  .col-md-1 {
-    width: 8.333333333333332%;
-  }
-
-  .col-md-2 {
-    width: 16.666666666666664%;
-  }
-
-  .col-md-3 {
-    width: 25%;
-  }
-
-  .col-md-4 {
-    width: 33.33333333333333%;
-  }
-
-  .col-md-5 {
-    width: 41.66666666666667%;
-  }
-
-  .col-md-6 {
-    width: 50%;
-  }
-
-  .col-md-7 {
-    width: 58.333333333333336%;
-  }
-
-  .col-md-8 {
-    width: 66.66666666666666%;
-  }
-
-  .col-md-9 {
-    width: 75%;
-  }
-
-  .col-md-10 {
-    width: 83.33333333333334%;
-  }
-
-  .col-md-11 {
-    width: 91.66666666666666%;
-  }
-
-  .col-md-12 {
-    width: 100%;
-  }
-}
-
-@media screen and (min-width: 80em) {
-  .col-lg-1 {
-    width: 8.333333333333332%;
-  }
-
-  .col-lg-2 {
-    width: 16.666666666666664%;
-  }
-
-  .col-lg-3 {
-    width: 25%;
-  }
-
-  .col-lg-4 {
-    width: 33.33333333333333%;
-  }
-
-  .col-lg-5 {
-    width: 41.66666666666667%;
-  }
-
-  .col-lg-6 {
-    width: 50%;
-  }
-
-  .col-lg-7 {
-    width: 58.333333333333336%;
-  }
-
-  .col-lg-8 {
-    width: 66.66666666666666%;
-  }
-
-  .col-lg-9 {
-    width: 75%;
-  }
-
-  .col-lg-10 {
-    width: 83.33333333333334%;
-  }
-
-  .col-lg-11 {
-    width: 91.66666666666666%;
-  }
-
-  .col-lg-12 {
-    width: 100%;
-  }
-}
-
-@media screen and (min-width: 120em) {
-  .col-xl-1 {
-    width: 8.333333333333332%;
-  }
-
-  .col-xl-2 {
-    width: 16.666666666666664%;
-  }
-
-  .col-xl-3 {
-    width: 25%;
-  }
-
-  .col-xl-4 {
-    width: 33.33333333333333%;
-  }
-
-  .col-xl-5 {
-    width: 41.66666666666667%;
-  }
-
-  .col-xl-6 {
-    width: 50%;
-  }
-
-  .col-xl-7 {
-    width: 58.333333333333336%;
-  }
-
-  .col-xl-8 {
-    width: 66.66666666666666%;
-  }
-
-  .col-xl-9 {
-    width: 75%;
-  }
-
-  .col-xl-10 {
-    width: 83.33333333333334%;
-  }
-
-  .col-xl-11 {
-    width: 91.66666666666666%;
-  }
-
-  .col-xl-12 {
-    width: 100%;
-  }
-}
-
-@media screen and (min-width: 60em) {
-  .offset-md-1 {
-    margin-left: 8.333333333333332%;
-  }
-
-  .offset-md-2 {
-    margin-left: 16.666666666666664%;
-  }
-
-  .offset-md-3 {
-    margin-left: 25%;
-  }
-
-  .offset-md-4 {
-    margin-left: 33.33333333333333%;
-  }
-
-  .offset-md-5 {
-    margin-left: 41.66666666666667%;
-  }
-
-  .offset-md-6 {
-    margin-left: 50%;
-  }
-
-  .offset-md-7 {
-    margin-left: 58.333333333333336%;
-  }
-
-  .offset-md-8 {
-    margin-left: 66.66666666666666%;
-  }
-
-  .offset-md-9 {
-    margin-left: 75%;
-  }
-
-  .offset-md-10 {
-    margin-left: 83.33333333333334%;
-  }
-
-  .offset-md-11 {
-    margin-left: 91.66666666666666%;
-  }
-}
-
-@media screen and (min-width: 80em) {
-  .offset-lg-1 {
-    margin-left: 8.333333333333332%;
-  }
-
-  .offset-lg-2 {
-    margin-left: 16.666666666666664%;
-  }
-
-  .offset-lg-3 {
-    margin-left: 25%;
-  }
-
-  .offset-lg-4 {
-    margin-left: 33.33333333333333%;
-  }
-
-  .offset-lg-5 {
-    margin-left: 41.66666666666667%;
-  }
-
-  .offset-lg-6 {
-    margin-left: 50%;
-  }
-
-  .offset-lg-7 {
-    margin-left: 58.333333333333336%;
-  }
-
-  .offset-lg-8 {
-    margin-left: 66.66666666666666%;
-  }
-
-  .offset-lg-9 {
-    margin-left: 75%;
-  }
-
-  .offset-lg-10 {
-    margin-left: 83.33333333333334%;
-  }
-
-  .offset-lg-11 {
-    margin-left: 91.66666666666666%;
-  }
-}
-
-@media screen and (min-width: 120em) {
-  .offset-xl-1 {
-    margin-left: 8.333333333333332%;
-  }
-
-  .offset-xl-2 {
-    margin-left: 16.666666666666664%;
-  }
-
-  .offset-xl-3 {
-    margin-left: 25%;
-  }
-
-  .offset-xl-4 {
-    margin-left: 33.33333333333333%;
-  }
-
-  .offset-xl-5 {
-    margin-left: 41.66666666666667%;
-  }
-
-  .offset-xl-6 {
-    margin-left: 50%;
-  }
-
-  .offset-xl-7 {
-    margin-left: 58.333333333333336%;
-  }
-
-  .offset-xl-8 {
-    margin-left: 66.66666666666666%;
-  }
-
-  .offset-xl-9 {
-    margin-left: 75%;
-  }
-
-  .offset-xl-10 {
-    margin-left: 83.33333333333334%;
-  }
-
-  .offset-xl-11 {
-    margin-left: 91.66666666666666%;
-  }
-}
-
-a {
-  color: #4A90E2;
-}
-
-a:hover {
-  color: rgb(70, 137, 215);
-}
-
-.link {
-  text-decoration: none;
-}
-
-.link:hover {
-  text-decoration: underline;
-}
-
-.psdisabled {
-  color: #A4A4A4;
-}
-
-.psdisabled:hover {
-  text-decoration: none;
-  color: #A4A4A4;
-}
-
-.psunderline {
-  text-decoration: underline;
-}
-
-.rounded {
-  border-radius: 4px;
-}
-
-.rounded-top {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-}
-
-.rounded-bottom {
-  border-bottom-left-radius: 4px;
-  border-bottom-right-radius: 4px;
-}
-
-.rounded-left {
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-}
-
-.rounded-right {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 4px;
-}
-
-.shadowed {
-  box-shadow: 0 1px 1px rgba(0, 0, 0, .07);
-}
-
-/* padding */
-
-/* 0 */
-
-.p0 {
-  padding: 0;
-}
-
-.pt0 {
-  padding-top: 0;
-}
-
-.pb0 {
-  padding-bottom: 0;
-}
-
-.pl0 {
-  padding-left: 0;
-}
-
-.pr0 {
-  padding-right: 0;
-}
-
-/* 1 */
-
-.p1 {
-  padding: 0.5em;
-}
-
-.px1 {
-  padding-left: 0.5em;
-  padding-right: 0.5em;
-}
-
-.py1 {
-  padding-top: 0.5em;
-  padding-bottom: 0.5em;
-}
-
-.pt1 {
-  padding-top: 0.5em;
-}
-
-.pb1 {
-  padding-bottom: 0.5em;
-}
-
-.pl1 {
-  padding-left: 0.5em;
-}
-
-.pr1 {
-  padding-right: 0.5em;
-}
-
-/* 2 */
-
-.p2 {
-  padding: 1em;
-}
-
-.px2 {
-  padding-left: 1em;
-  padding-right: 1em;
-}
-
-.py2 {
-  padding-top: 1em;
-  padding-bottom: 1em;
-}
-
-.pt2 {
-  padding-top: 1em;
-}
-
-.pb2 {
-  padding-bottom: 1em;
-}
-
-.pl2 {
-  padding-left: 1em;
-}
-
-.pr2 {
-  padding-right: 1em;
-}
-
-/* 3 */
-
-.p3 {
-  padding: 1.5em;
-}
-
-.px3 {
-  padding-left: 1.5em;
-  padding-right: 1.5em;
-}
-
-.py3 {
-  padding-top: 1.5em;
-  padding-bottom: 1.5em;
-}
-
-.pt3 {
-  padding-top: 1.5em;
-}
-
-.pb3 {
-  padding-bottom: 1.5em;
-}
-
-.pl3 {
-  padding-left: 1.5em;
-}
-
-.pr3 {
-  padding-right: 1.5em;
-}
-
-/* 4 */
-
-.p4 {
-  padding: 2em;
-}
-
-.px4 {
-  padding-left: 2em;
-  padding-right: 2em;
-}
-
-.py4 {
-  padding-top: 2em;
-  padding-bottom: 2em;
-}
-
-.pt4 {
-  padding-top: 2em;
-}
-
-.pb4 {
-  padding-bottom: 2em;
-}
-
-.pl4 {
-  padding-left: 2em;
-}
-
-.pr4 {
-  padding-right: 2em;
-}
-
-/* margin */
-
-/* 0 */
-
-.m0 {
-  margin: 0;
-}
-
-.mt0 {
-  margin-top: 0;
-}
-
-.mb0 {
-  margin-bottom: 0;
-}
-
-.ml0 {
-  margin-left: 0;
-}
-
-.mr0 {
-  margin-right: 0;
-}
-
-/* 1 */
-
-.m1 {
-  margin: 0.5em;
-}
-
-.mx1 {
-  margin-left: 0.5em;
-  margin-right: 0.5em;
-}
-
-.my1 {
-  margin-top: 0.5em;
-  margin-bottom: 0.5em;
-}
-
-.mt1 {
-  margin-top: 0.5em;
-}
-
-.mb1 {
-  margin-bottom: 0.5em;
-}
-
-.ml1 {
-  margin-left: 0.5em;
-}
-
-.mr1 {
-  margin-right: 0.5em;
-}
-
-/* 2 */
-
-.m2 {
-  margin: 1em;
-}
-
-.mx2 {
-  margin-left: 1em;
-  margin-right: 1em;
-}
-
-.my2 {
-  margin-top: 1em;
-  margin-bottom: 1em;
-}
-
-.mt2 {
-  margin-top: 1em;
-}
-
-.mb2 {
-  margin-bottom: 1em;
-}
-
-.ml2 {
-  margin-left: 1em;
-}
-
-.mr2 {
-  margin-right: 1em;
-}
-
-/* 3 */
-
-.m3 {
-  margin: 1.5em;
-}
-
-.mx3 {
-  margin-left: 1.5em;
-  margin-right: 1.5em;
-}
-
-.my3 {
-  margin-top: 1.5em;
-  margin-bottom: 1.5em;
-}
-
-.mt3 {
-  margin-top: 1.5em;
-}
-
-.mb3 {
-  margin-bottom: 1.5em;
-}
-
-.ml3 {
-  margin-left: 1.5em;
-}
-
-.mr3 {
-  margin-right: 1.5em;
-}
-
-/* 4 */
-
-.m4 {
-  margin: 2em;
-}
-
-.mx4 {
-  margin-left: 2em;
-  margin-right: 2em;
-}
-
-.my4 {
-  margin-top: 2em;
-  margin-bottom: 2em;
-}
-
-.mt4 {
-  margin-top: 2em;
-}
-
-.mb4 {
-  margin-bottom: 2em;
-}
-
-.ml4 {
-  margin-left: 2em;
-}
-
-.mr4 {
-  margin-right: 2em;
-}
-
-/* text alignment */
-
-.text-centered {
-  text-align: center;
-}
-
-.text-left {
-  text-align: left;
-}
-
-.text-right {
-  text-align: right;
-}
-
-.text-uppercase {
-  text-transform: uppercase;
-}
-
-/* text weight */
-
-.text-normal {
-  font-weight: 400;
-}
-
-.text-bold {
-  font-weight: 700;
-}
-
-/* text style */
-
-.text-italic {
-  font-style: italic;
-}
-
-.as-sortable-item {
-  background-color: #ffffff;
-}
-
-.as-sortable-placeholder {
-  border: 1px dashed darkgrey;
-  background-color: #dbdbdb;
-}
-
-.as-sortable-drag {
-  opacity: .8;
-}
-
-/*
-  @editable fields
-  sadly the library overqualifies the a
-  -------------------
-*/
-
-.editable-click,
-a.editable-click {
-  color: #666;
-}
-
-.editable-empty,
-a.editable-empty {
-  color: #666666;
-}
-
-/* from xeditable */
-
-.editable-input {
-  border: 1px solid #d9d9d9;
-  padding: 0.8rem 1rem;
-  min-width: 200px;
-  outline: none;
-}
-
-.editable-textarea .editable-input {
-  display: block;
-}
-
-/*
-  TODO(@kyle) - naming convention for modifiers
-  we don't have full control over the classes for alerts yet so we're not
-  following out naming convention
-*/
-
-.Alert {
-  padding: 1em;
-  overflow: hidden;
-  border: 1px solid transparent;
-  border-radius: 4px;
-  box-shadow: 0 0 1px rgba(0, 0, 0, .12);
-}
-
-/* alert component template isn't accessbile and uses a .close button */
-
-.Alert .close {
-  float: right;
-  border: none;
-  background: none;
-}
-
-.alert-success {
-  background-color: rgb(171, 235, 179);
-  border-color: #2ECC40;
-  color: rgb(37, 163, 51);
-}
-
-.alert-success .close {
-  color: rgb(37, 163, 51);
-}
-
-.alert-error {
-  background-color: rgb(255, 179, 175);
-  border-color: #FF4136;
-  color: rgb(204, 52, 43);
-}
-
-.alert-error .close {
-  color: rgb(204, 52, 43);
-}
-
-.Button {
-  padding: 0.6rem 0.8rem;
-  text-decoration: none;
-  font-size: 0.8rem;
-  color: #777;
-  display: inline-block;
-  box-sizing: border-box;
-  border: 1px solid #b9b9b9;
-  background-color: #fff;
-  border-radius: 4px;
-}
-
-.Button:hover {
-  cursor: pointer;
-  color: #777;
-  border-color: rgb(130, 130, 130);
-  transition: border .3s linear;
-  background-color: rgb(250, 250, 250);
-}
-
-.Button--primary {
-  color: #fff;
-  border-color: #4A90E2;
-  background-color: #4A90E2;
-}
-
-.Button--primary:hover {
-  color: #fff;
-  border-color: rgb(67, 130, 203);
-  background-color: rgb(67, 130, 203);
-}
-
-.Button--cancel {
-  border-radius: 99px;
-}
-
-.Button-group {
-  display: inline-block;
-  border-radius: 4px;
-  border: 1px solid #b9b9b9;
-  overflow: hidden;
-  clear: both;
-}
-
-.Button-group .Button {
-  margin: 0;
-  float: left;
-  border-top: none;
-  border-bottom: none;
-  border-right: none;
-  border-radius: 0;
-}
-
-.Button-group .Button:first-child {
-  border-left: none;
-}
-
-.Button:disabled {
-  opacity: 0.5;
-  cursor: not-allowed;
-}
-
-.Button--selected,
-.Button--selected:hover {
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .12);
-  background-color: #F4F6F8;
-}
-
-.Canvas {
-  position: absolute;
-  top: 61px;
-  margin-bottom: -61px;
-  padding-bottom: 61px;
-  right: 0;
-  height: 100%;
-  overflow-y: scroll;
-  overflow-x: hidden;
-  background-color: #fff;
-}
-
-.Canvas--new .card-inner {
-  height: 200px;
-}
-
-.Canvas--new .Card {
-  padding-top: 1em;
-}
-
-.Canvas--new .Card-heading {
-  display: none;
-}
-
-@media screen and (min-width: 80em) {
-  .Canvas--new .card-inner {
-    height: auto;
-  }
-}
-
-.Card {
-  position: relative;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-  box-shadow: 0 0 1px rgba(0, 0, 0, .12);
-}
-
-.Card-footing {
-  font-size: 0.8rem;
-  color: #999;
-}
-
-.Card-title {
-  font-size: 0.8em;
-}
-
-.Card-actions {
-  position: absolute;
-  right: 1em;
-  top: 0;
-  opacity: 0;
-  transition: opacity .3s linear;
-  background-color: #fff;
-}
-
-.Card:hover .Card-actions {
-  opacity: 1;
-  transition: opacity .3s linear;
-}
-
-.Card-dataSource {
-  color: #999;
-  padding-top: 0.5em;
-}
-
-.Card-defaultBox {
-  height: 500px;
-}
-
-@media screen and (min-width: 60em) {
-  .Card-title {
-    font-size: 0.8em;
-  }
-}
-
-.Card--errored {
-  min-height: 80px;
-}
-
-@media screen and (min-width: 80em) {
-  .Card-scalarValue {
-    font-size: 2.4em;
-  }
-}
-
-@media screen and (min-width: 120em) {
-  .Card-scalarValue {
-    font-size: 3.4em;
-  }
-}
-
-.CardSettings-group {
-  border-bottom: 1px solid #ddd;
-}
-
-.CardSettings-groupTitle {
-  padding: 0.5em;
-  border-bottom: 1px solid #ddd;
-}
-
-.CardSettings-content {
-  padding: 2em;
-  background-color: #fafafa;
-}
-
-.CardSettings {
-  border-top: 1px solid #ddd;
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, .12);
-}
-
-.CardSettings-label {
-  font-size: 1.15em;
-  margin-left: 0.5em;
-  color: #666;
-}
-
-.CardSettings-colorBlock {
-  display: inline-block;
-  width: 2.5em;
-  height: 2.5em;
-  margin-right: 1em;
-  border-radius: 4px;
-}
-
-:root {
-  /* visual */
-}
-
-.CoreNav {
-  background-color: #fff;
-  border-bottom: 1px solid #E4E4E4;
-}
-
-.CoreNav-trigger {
-  display: block;
-  position: fixed;
-  width: 40px;
-  height: 40px;
-  left: 1em;
-  bottom: 1em;
-  border-radius: 99px;
-  color: #fff;
-  z-index: 3;
-  -webkit-transform: translate3d(0, 0, 0);
-  transform: translate3d(0, 0, 0);
-  transition: -webkit-transform .2s ease-out;
-  transition: transform .2s ease-out;
-  box-shadow: 0 0 3px rgba(0, 0, 0, .22);
-  background-color: #4A90E2;
-}
-
-.CoreNav-trigger.CoreNav--showing {
-  -webkit-transform: translate3d(0, -334px, 0);
-  transform: translate3d(0, -334px, 0);
-  transition: -webkit-transform .3s ease-in-out;
-  transition: transform .3s ease-in-out;
-}
-
-.CoreNav-triggerIconOpen,
-.CoreNav-triggerIconClose {
-  display: block;
-  position: absolute;
-  top: 11px;
-  left: 11px;
-  right: 0;
-}
-
-.CoreNav-triggerIconClose {
-  opacity: 0;
-  -webkit-transform: rotate(12deg);
-  -ms-transform: rotate(12deg);
-  transform: rotate(12deg);
-  transition: -webkit-transform .3s linear;
-  transition: transform .3s linear;
-}
-
-.CoreNav-triggerIconClose.CoreNav--showing {
-  opacity: 1;
-  -webkit-transform: rotate(0deg);
-  -ms-transform: rotate(0deg);
-  transform: rotate(0deg);
-  transition: -webkit-transform .3s linear .2s;
-  transition: transform .3s linear .2s;
-}
-
-.CoreNav-triggerIconOpen.CoreNav--showing {
-  opacity: 0;
-}
-
-.CoreNav-showingBg {
-  opacity: 0;
-  pointer-events: none;
-  position: fixed;
-  top: 0;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  background-color: rgba(0, 0, 0, .18);
-  z-index: 1;
-  transition: opacity .3s linear;
-}
-
-.CoreNav-showingBg.CoreNav--showing {
-  opacity: 1;
-  pointer-events: all;
-  transition: opacity .3s linear;
-}
-
-.CoreNav--showing {
-  -webkit-transform: translate3d(0, 0, 0);
-  transform: translate3d(0, 0, 0);
-  transition: -webkit-transform .3s linear;
-  transition: transform .3s linear;
-}
-
-.NavItem {
-  display: inline-block;
-  text-decoration: none;
-  color: #8691AC;
-  padding: 1em 0.5em;
-  font-size: 0.9em;
-  text-rendering: optimizeLegibility;
-  position: relative;
-}
-
-.NavItem-withIcon {
-  padding-left: 3.5em;
-  padding-right: 1em;
-}
-
-.NavItem-text {
-  display: inline-block;
-  margin: 0.5em 0;
-}
-
-.NavItem:after {
-  content: '';
-  display: block;
-  position: absolute;
-  bottom: 0;
-  width: 100%;
-  background-color: #8691AC;
-  height: 4px;
-  left: 0;
-  opacity: 0;
-  transition: opacity .2s ease-in;
-}
-
-.NavItem:hover {
-  color: rgb(107, 116, 138);
-  transition: color .3s linear, opacity .3s ease-in;
-}
-
-.NavItem:hover:after {
-  opacity: 1;
-}
-
-.NavItem.is--selected {
-  color: #4A90E2;
-  fill: #4A90E2;
-}
-
-.NavItem.is--selected .IconWrapper {
-  color: #4A90E2;
-  border-color: #4A90E2;
-}
-
-.NavItem.is--selected:after {
-  background-color: #4A90E2;
-  opacity: 1;
-  transition: opacity .3s ease-in;
-}
-
-.ContextNav {
-  margin-left: 1em;
-}
-
-.Search {
-  position: absolute;
-  top: 3px;
-  right: 0;
-  min-width: 200px;
-}
-
-.Search-button {
-  background-color: #4A90E2;
-  color: #fff;
-  display: inline-block;
-  border-radius: 2px;
-  padding: 6px 8px;
-  font-size: 0;
-  position: absolute;
-  top: 4px;
-  right: 4px;
-}
-
-.Search-button:hover {
-  color: #fff;
-}
-
-.Search-field {
-  width: 100%;
-  border: 1px solid #E4E4E4;
-  padding: 1em;
-  border-radius: 4px;
-  box-sizing: border-box;
-  transition: border .3s linear;
-}
-
-.Search-field:focus {
-  border-color: #4A90E2;
-  transition: border .3s linear;
-  box-shadow: none;
-  outline: none;
-}
-
-.SearchNav:after {
-  display: none;
-}
-
-.NavItem-withIcon .IconWrapper {
-  position: absolute;
-  left: 10px;
-  color: #BFC4D1;
-}
-
-.Dash-card {
-  position: relative;
-  background: #fff;
-  z-index: 1;
-}
-
-.DashCard-inner {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  bottom: 0;
-  overflow: hidden;
-  /* make sure dash cards content doesn't overflow its bounds */
-}
-
-.DashCard-remove {
-  display: none;
-  /* hidden until the user starts editing */
-  position: absolute;
-  z-index: 4;
-  top: -10px;
-  right: -10px;
-  width: 24px;
-  height: 24px;
-  border-radius: 99px;
-  background: #222;
-  color: #fff;
-  cursor: pointer;
-}
-
-.DashCard-removeIcon {
-  position: absolute;
-  left: 6px;
-  top: 2px;
-}
-
-.Dash--editing .Dash-card:hover .DashCard-remove {
-  display: block;
-}
-
-.Dash--editing .Card {
-  border-color: #acacac;
-  border-style: dashed;
-}
-
-.Dash--editing .Card:hover {
-  border-color: #777;
-  transition: border .3s linear;
-}
-
-/* hide card actions when editing the dash */
-
-.Dash--editing .Card:hover .Card-actions,
-.Dash--editing .Card:hover .Card-footing {
-  opacity: 0;
-  pointer-events: none;
-}
-
-.Dash-card .Card {
-  position: absolute;
-  top: 0;
-  left: 0;
-  bottom: 0;
-  right: 0;
-}
-
-.Dash-card .Card-outer {
-  overflow: hidden;
-}
-
-.Dash-card .card-inner {
-  display: block;
-  overflow: hidden;
-}
-
-.Dash-card .Card-footing {
-  opacity: 0;
-  position: absolute;
-  bottom: 0;
-  left: 0;
-  right: 0;
-  background: #fff;
-  transition: opacity .3s linear;
-}
-
-.Dash-card:hover .Card-footing {
-  opacity: 1;
-  transition: opacity .3s linear;
-}
-
-.gridster-mobile .Dash-card {
-  position: relative;
-}
-
-/* this class is applied when .sortable is applied */
-
-.sortable-placeholder {
-  float: left;
-  /* can't use util float because element is added dynamically */
-  padding-left: 14px;
-  padding-right: 14px;
-  border: 2px solid #999;
-  min-width: 33.3333333%;
-}
-
-.Dropdown {
-  position: relative;
-}
-
-.Dropdown-content {
-  opacity: 0;
-  /* start invisible */
-  pointer-events: none;
-  /* and without any clicks */
-  z-index: 20;
-  position: absolute;
-  top: 40px;
-  padding: 1em;
-  min-width: 200px;
-  margin-top: 18px;
-  border: 1px solid #d9d9d9;
-  background-color: #fff;
-  border-radius: 4px;
-  box-shadow: 0 0 2px rgba(0, 0, 0, .12);
-  background-clip: padding-box;
-}
-
-.Dropdown-content:before {
-  position: absolute;
-  top: -20px;
-  right: 0;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-right: 5px solid red;
-  content: '';
-  display: block;
-}
-
-/* switching from home rolled to BS logic for dropdowns so we still have both classes */
-
-.Dropdown.open .Dropdown-content,
-.Dropdown--showing.Dropdown-content {
-  opacity: 1;
-  pointer-events: all;
-  transition: opacity .3s linear, margin .2s linear;
-  margin-top: 0;
-}
-
-.EntityField {
-  position: relative;
-  padding: 12px 0 24px;
-  color: #777;
-  border-bottom: 1px solid #f0f0f0;
-}
-
-.EntityField:hover {
-  background-color: #fafafa;
-}
-
-.EntityInfo {
-  margin-left: 64px;
-}
-
-.EntityFieldName {
-  font-size: 18px;
-  font-weight: 700;
-  color: #777;
-}
-
-.EntityDescription {
-  display: block;
-  color: #999;
-}
-
-.EntityVisibility {
-  margin: 17px 0 0 24px;
-}
-
-.EntityOriginalType {
-  margin-top: 11px;
-  margin-left: 11px;
-}
-
-.EntityCustomType {
-  margin: 14px 24px 0 0;
-}
-
-.EntityFieldHidden {
-  opacity: 0.4;
-}
-
-.CustomTypeApplied {
-  color: #4A90E2;
-  border-color: #4A90E2;
-}
-
-.EditedEntity {
-  position: relative;
-  color: #4A90E2;
-}
-
-.EntityField:hover .Drag-handle {
-  display: block;
-}
-
-.Drag-handle {
-  position: absolute;
-  top: 50%;
-  left: 5px;
-  margin-top: -21px;
-  /* half the height of the item, which is 42px */
-}
-
-.Form {
-  margin: 0 auto;
-  max-width: 640px;
-}
-
-.Form-label {
-  display: block;
-  color: #777;
-  font-size: 1.2rem;
-}
-
-.Form-group {
-  padding: 1em;
-  transition: opacity .3s linear;
-}
-
-.Form-groupDisabled {
-  opacity: 0.2;
-  pointer-events: none;
-  transition: opacity .3s linear;
-}
-
-.IconWrapper {
-  font-size: 0;
-}
-
-.List {
-  margin: 2em 0;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-  overflow: hidden;
-}
-
-.List-section {
-  border-bottom: 1px solid #d9d9d9;
-}
-
-.List-item,
-.List-heading {
-  padding: 1em;
-}
-
-.List-item:last-child {
-  border-bottom: none;
-}
-
-.List-timeStamp {
-  font-size: 0.8em;
-  color: #777;
-}
-
-.List-filters {
-  padding: 0.6em;
-  background-color: #fafafa;
-}
-
-.List-filterLabel {
-  padding: 0.8em 0.5em 0.8em 0;
-  display: inline-block;
-  color: #999;
-  font-weight: 700;
-  font-size: 0.8em;
-}
-
-.List-filterCategories {
-  display: inline-block;
-}
-
-.Metric {
-  border: 1px solid #ddd;
-  border-radius: 4px;
-}
-
-.Metric-value {
-  color: #4A90E2;
-  font-weight: 700;
-  font-size: 1em;
-  margin-top: 1em;
-}
-
-@media screen and (min-width: 80em) {
-  .Metric-value {
-    margin-top: .5em;
-    margin-bottom: .25em;
-    font-size: 1.25em;
-  }
-}
-
-.Metric-title {
-  color: #94A2B3;
-}
-
-@media screen and (min-width: 80em) {
-  .Metric-title {
-    margin-bottom: .75em;
-  }
-}
-
-.Modal,
-.modal {
-  z-index: 10000;
-  position: absolute;
-  top: 50%;
-  left: 50%;
-  margin: auto;
-  width: 640px;
-  -webkit-transform: translate3d(-50%, -50%, 0);
-  transform: translate3d(-50%, -50%, 0);
-  -webkit-font-smoothing: antialiased;
-  background-color: #fff;
-  border: 1px solid #d9d9d9;
-  border-radius: 4px;
-  box-shadow: 0 0 6px rgba(0, 0, 0, .12);
-  outline: none;
-}
-
-/* from angular-ui-bootstrap */
-
-.modal-backdrop {
-  position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  background-color: rgba(0, 0, 0, .32);
-}
-
-/* A dark translucent div that covers the whole screen */
-
-.Modal-overlay {
-  position: absolute;
-  z-index: 9999;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 100%;
-  background-color: #000;
-  opacity: 0.8;
-}
-
-.Modal-close {
-  position: absolute;
-  top: 3px;
-  right: 5px;
-  padding: 5px;
-  cursor: pointer;
-}
-
-.Pill {
-  border: 1px solid #ddd;
-  border-radius: 45px;
-  font-size: 0.8rem;
-  line-height: 0.8rem;
-  padding: 0.5em 1em;
-}
-
-.Pill--filled {
-  border-color: #4A90E2;
-  background-color: #4A90E2;
-  color: #fff;
-}
-
-.Pill-action {
-  border-left: 1px slid rgba(0, 0, 0, .12);
-}
-
-.Pill--filled .Pill-action,
-.Pill--filled .Pill-action:hover {
-  color: #fff;
-  margin-top: 1px;
-  margin-left: 6px;
-  float: right;
-}
-
-.Select {
-  position: relative;
-  display: inline-block;
-  color: #777;
-}
-
-/* custom arrows */
-
-.Select:before,
-.Select:after {
-  content: '';
-  position: absolute;
-  top: 50%;
-  right: 1rem;
-  width: 0;
-  height: 0;
-  pointer-events: none;
-  /* no clicks since arrow is just for appearance */
-}
-
-/* arrow pointing up */
-
-.Select:before {
-  margin-top: -.25rem;
-  border-left: .3rem solid transparent;
-  border-right: .3rem solid transparent;
-  border-bottom: .3rem solid #CACACA;
-}
-
-/* arrow pointing down */
-
-.Select:after {
-  margin-top: .2rem;
-  border-left: .3rem solid transparent;
-  border-right: .3rem solid transparent;
-  border-top: .3rem solid #CACACA;
-}
-
-.Select select {
-  display: inline-block;
-  width: 100%;
-  padding: .5rem 3rem .5rem 1rem;
-  font-size: 0.8em;
-  line-height: 1;
-  color: #777;
-  border: 1px solid #d9d9d9;
-  background: #fff;
-  border-radius: 4px;
-  -webkit-appearance: none;
-  -moz-appearance: none;
-  box-shadow: 0 0 1px rgba(0, 0, 0, .12);
-}
-
-.Select select:focus {
-  outline: none;
-}
-
-.Table {
-  /* standard table reset */
-  border-collapse: collapse;
-  border-spacing: 0;
-  width: 100%;
-  font-family: "Helvetica Neue", "Helvetica", sans-serif;
-  font-size: 0.76rem;
-  line-height: 0.76rem;
-  text-align: left;
-}
-
-.Table--bordered {
-  border: 1px solid rgba(213, 213, 213, .3);
-}
-
-.Table tr {
-  border-bottom: 1px solid rgba(213, 213, 213, .3);
-}
-
-.Table tr:nth-child(even) {
-  background-color: rgba(0, 0, 0, .02);
-}
-
-.Table th,
-.Table td {
-  padding: 6px;
-  border: 1px solid rgba(213, 213, 213, .3);
-}
-
-.EntityImage {
-  border-radius: 99px;
-  box-shadow: 0 0 4px rgba(0, 0, 0, .12);
-  background-color: #fafafa;
-}
-
-.EntityImage--small {
-  width: 24px;
-  height: 24px;
-}
-
-.EntityImage--large {
-  width: 64px;
-  height: 64px;
-}
-
-.EntityTableWrapper {
-  margin: 1em;
-}
-
-.EntityName {
-  margin-top: .25em;
-}
-
-.EntityTable tbody {
-  color: #555F6B;
-}
-
-.EntityTable td {
-  padding: 5px;
-  border: 1px solid #E7E7E7;
-}
-
-@media screen and (min-width: 80em) {
-  .EntityTable td {
-    padding: 10px;
-  }
-}
-
-.EntityTable .EntityTable--columnSelected {
-  color: #4A90E2;
-}
-
-.EntityTable tbody tr:hover {
-  background-color: #E3F0FF;
-}
-
-.EntityTable th {
-  color: #555F6B;
-  padding: 1em;
-}
-
-.EntityTable thead th:hover {
-  cursor: pointer;
-}
-
-.Message {
-  padding-left: 1.5em;
-  margin-top: 1em;
-}
-
-.Message-sender {
-  font-size: 0.8em;
-}
-
-.Message-text {
-  line-height: 1.5em;
-  max-width: 65%;
-  color: #666;
-  margin-top: .25em;
-}
-
-.Message--alt .Message-text {
-  color: #4A90E2;
-}
-
-.Timestamp {
-  color: #999;
-  font-size: 0.8em;
-}
-
-.TableWrapper {
-  overflow-x: scroll;
-  width: 100%;
-  border: 1px solid #d9d9d9;
-}
-
-.Workspace {
-  position: absolute;
-  left: 0;
-  top: 61px;
-  padding-bottom: 61px;
-  margin-bottom: -61px;
-  overflow-y: scroll;
-  bottom: 0;
-  background-color: #F4F6F8;
-  border-left: 1px solid #d9d9d9;
-  border-right: 1px solid #d9d9d9;
-  z-index: 2;
-  box-shadow: 1px 0 2px rgba(0, 0, 0, .12);
-}
-
-@media screen and (min-width: 60em) {
-  .Workspace {
-    box-shadow: none;
-  }
-}
\ No newline at end of file