Refactoring of style files

Change-Id: I56d3641741f2289bb0f9dbaf641b85a401cf1042
diff --git a/dev/demo/all.html b/dev/demo/all.html
index 79130e6..4ca3c6b 100644
--- a/dev/demo/all.html
+++ b/dev/demo/all.html
@@ -143,6 +143,10 @@
               "type": "type:string"
             },
             {
+              "@type":"koral:docGroupRef",
+              "ref":"@admin/derekosub"
+            },
+            {
               "@type": "koral:doc",
               "key": "subTitle",
               "match": "match:eq",
diff --git a/dev/demo/alldemo.js b/dev/demo/alldemo.js
index 108bfe6..ab252ee 100644
--- a/dev/demo/alldemo.js
+++ b/dev/demo/alldemo.js
@@ -315,6 +315,10 @@
               "match":"match:eq"
             },
             {
+              "@type":"koral:docGroupRef",
+              "ref":"@admin/derekosub"
+            },
+            {
               "@type":"koral:doc",
               "key":"subTitle",
               "value":"Gedichte",
diff --git a/dev/img/noise.png b/dev/img/noise.png
deleted file mode 100644
index 12ca37d..0000000
--- a/dev/img/noise.png
+++ /dev/null
Binary files differ
diff --git a/dev/scss/base.scss b/dev/scss/base.scss
deleted file mode 100644
index fe16021..0000000
--- a/dev/scss/base.scss
+++ /dev/null
@@ -1,128 +0,0 @@
-@charset "utf-8";
-@import "util";
-@import "base/fonts";
-@import "base/flextable";
-@import "base/fragment";
-@import "base/load";
-@import "base/form";
-@import "base/view";
-
-/**
- * Basic global CSS rules for Kalamar
- */
-
-body,
-html,
-select,
-g > text {
-  color: $dark-grey;
-  font-family: verdana, tahoma, arial, Helvetica, sans-serif;
-  margin: 0;
-}
-
-* {
-  @include box-sizing-box;
-}
-
-g > text {
-  fill: $dark-grey;
-}
-
-html {
-  height: 100%;
-}
-
-body {
-  position: relative;
-  min-height: 100%;
-  font-size: 12pt;
-  margin: 0;
-  padding: 0;
-}
-
-
-a {
-  &:link {
-    color: $dark-orange;
-    text-decoration: none;
-    &:hover {
-      color: $darkest-orange;
-      @include color-transition;
-    }
-  }
-
-  // External links
-  &[href^="http://"]::after,
-  &[href^="https://"]::after {
-    font-family: FontAwesome;
-    white-space: nowrap;
-    content: " " + $fa-extlink;
-    font-size: 75%;
-  }
-}
-
-// Styles for Mojolicious::Plugin::TagHelpers::MailToChiffre
-a[onclick$='return PArok(this,false)'] {
-  direction:rtl;
-  unicode-bidi:bidi-override;
-  text-align:left;
-  & > span {
-    &:nth-child(1n+2){
-      display:none
-    }
-    &:nth-child(1)::after{
-      content:'@'
-    }
-  }
-}
-
-button {
-  cursor: pointer;
-}
-
-button[type=submit] {
-  font-weight: normal;
-  @include choose-item;
-  padding: 0;
-  height: 100%;
-  top: 0;
-  width: $button-width;
-  cursor:pointer;
-  > span:nth-of-type(1) {
-    @include blind;
-  }
-  &::after {
-    font-family: "FontAwesome";
-  }
-  border: {
-    width: $border-size;
-    style: solid;
-    color: $nearly-white;
-  }
-  &:hover, &:focus {
-    @include choose-hover;
-  }
-  &::-moz-focus-inner {
-    border: none;
-  }
-  &:active {
-    @include choose-active;
-  }
-  /**
-   * This is just for styling the last button,
-   * in case there are more than one buttons.
-   */
-  &:last-of-type {
-    // @include box-sizing-box();
-    border: {
-      right-width: $border-size;
-      right-style: solid;
-      top-right-radius: $standard-border-radius;
-      bottom-right-radius: $standard-border-radius;
-    }
-  }
-}
-
-button + button {
-  right: 0;
-}
diff --git a/dev/scss/base/base.scss b/dev/scss/base/base.scss
new file mode 100644
index 0000000..022c590
--- /dev/null
+++ b/dev/scss/base/base.scss
@@ -0,0 +1,128 @@
+@charset "utf-8";
+@import "../util";
+@import "fonts";
+@import "flextable";
+@import "fragment";
+@import "load";
+@import "form";
+@import "view";
+@import "menu";
+
+/**
+ * Basic global CSS rules for Kalamar
+ */
+
+
+* {
+  @include box-sizing-box;
+}
+
+body,
+html,
+select,
+g > text {
+  font-family: verdana, tahoma, arial, Helvetica, sans-serif;
+  color:       $dark-grey;
+  margin:      0;
+}
+
+g > text {
+  fill: $dark-grey;
+}
+
+html {
+  height: 100%;
+}
+
+body {
+  position:   relative;
+  min-height: 100%;
+  font-size:  12pt;
+  margin:     0;
+  padding:    0;
+}
+
+a {
+  &:link {
+    text-decoration: none;
+    color:           $dark-orange;
+    &:hover {
+      color:      $darkest-orange;
+      transition: color 0.3s ease 0s;
+    }
+  }
+
+  // External links
+  &[href^="http://"]::after,
+  &[href^="https://"]::after {
+    @include icon-font;
+    content:   " " + $fa-extlink;
+    font-size: 75%;
+  }
+}
+
+// Styles for Mojolicious::Plugin::TagHelpers::MailToChiffre
+a[onclick$='return PArok(this,false)'] {
+  unicode-bidi: bidi-override;
+  direction:    rtl;
+  text-align:   left;
+  & > span {
+    &:nth-child(1n+2){
+      display: none
+    }
+    &:nth-child(1)::after{
+      content: '@'
+    }
+  }
+}
+
+.clear {
+  clear: both;
+}
+
+blockquote {
+  border-radius:    $standard-border-radius;
+  padding:          2pt 5pt 2pt 20pt;
+  margin:           0;
+  border-left:      5px solid $ids-blue-1;
+  background-color: $ids-blue-2;
+  color:            $ids-blue-1;
+
+  &.bug,
+  &.missing {
+    border-left-color: $dark-red;
+    background-color:  $middle-red;
+    color:             $nearly-white;
+  }
+}
+
+dl {
+  margin:         0;
+  padding-bottom: .5em;
+
+  dt {
+    font-weight: bold;
+
+    abbr {
+      border-width: 0;
+
+      &[data-type=token]::after {
+	      color: $ids-blue-1;
+      }
+
+      &[data-type=span]::after {
+	      color: $ids-pink-1;
+      }
+
+      &::after {
+	      content:        ' (' attr(title) ')';
+	      vertical-align: bottom;
+	      font: {
+          style:  italic;
+	        weight: normal;
+	        size:   80%;
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/scss/base/choose.scss b/dev/scss/base/choose.scss
new file mode 100644
index 0000000..fc3d250
--- /dev/null
+++ b/dev/scss/base/choose.scss
@@ -0,0 +1,66 @@
+@import "colors";
+
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+$choose-bg:           $light-grey;
+$choose-color:        $dark-grey;
+$choose-blind-color:  $middle-grey;
+$choose-border-color: $middle-grey;
+$choose-border:       2px solid $choose-border-color;
+$choose-box-shadow:   2px 2px 2px  rgba(0,0,0,0.2);
+
+
+/**
+ * Chooseable items (default)
+ */
+@mixin choose-item {
+  color:            $choose-color;
+  background-color: $choose-bg;
+  border-color:     $choose-border-color;
+  text-shadow:      $light-shadow;
+}
+
+
+/**
+ * Chooseable items (mouse over)
+ */
+@mixin choose-hover {
+  color:            $nearly-white;
+  background-color: $dark-orange;
+  border-color:     $darker-orange;
+  text-shadow:      none;
+}
+
+
+/**
+ * Chooseable items (not available)
+ */
+@mixin choose-inactive {
+  color:            lighten($choose-color, 20%);
+  background-color: lighten($choose-bg, 20%);
+  border-color:     transparent;
+  text-shadow:      none;
+}
+
+/**
+ * Chooseable items (active)
+ */
+@mixin choose-active {
+  color:            $dark-green;
+  background-color: $light-green;
+  border-color:     $dark-green;
+  text-shadow:      none;
+}
+
+
+/**
+ * Chooseable items (action: remove something)
+ */
+@mixin choose-remove {
+  color:            $nearly-white;
+  background-color: $middle-red;
+  border-color:     $dark-red;
+  text-shadow:      none;
+}
diff --git a/dev/scss/base/colors.scss b/dev/scss/base/colors.scss
new file mode 100644
index 0000000..244d1fe
--- /dev/null
+++ b/dev/scss/base/colors.scss
@@ -0,0 +1,87 @@
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+
+/**
+ * Official IDS colors
+ */
+$ids-orange-1: rgb(246, 168,   0);
+$ids-orange-2: rgb(242, 148,   0);
+$ids-grey-1:   rgb(135, 136, 138);
+$ids-grey-2:   rgb(217, 218, 219);
+$ids-blue-1:   rgb(  0, 158, 224); // Pragmatik
+$ids-blue-2:   rgb(188, 228, 247); // Pragmatik
+$ids-green-1:  rgb( 99, 111,   7); // Grammatik
+$ids-green-2:  rgb(227, 232, 163); // Grammatik
+$ids-pink-1:   rgb(193,   0,  43); // Lexik
+$ids-pink-2:   rgb(250, 243, 222); // Lexik
+
+$black:        #333;
+
+
+/**
+ * Orange Colors
+ */
+$light-orange:   #f4eebb;
+$middle-orange:  #ffd080;
+$dark-orange:    $ids-orange-1;
+$darker-orange:  #ff8000;
+$darkest-orange: #e55d00;
+
+
+/**
+ * Green Colors
+ */
+$dark-green:     $ids-green-1; // #496000;
+$middle-green:   lighten($ids-green-1, 9%);
+$light-green:    lighten($ids-green-1, 13%); // #7ba400;
+$lightest-green: desaturate(lighten($light-green, 35%), 20%); // #d8e38c;
+$grey-green:     darken(desaturate($lightest-green, 25%), 12%); // #bcc387;
+
+
+/**
+ * Blue Colors
+ */
+$light-blue:     $ids-blue-2;
+$dark-blue:      $ids-blue-1;
+$darkest-blue:   darken($dark-blue, 40%);
+
+
+/**
+ * Grey Colors
+ */
+$middle-grey:  $ids-grey-1; // #999;
+$light-grey:   $ids-grey-2; // #ddd;
+$dark-grey:    darken($middle-grey, 15%);
+$nearly-white: #fefefe;
+
+
+/**
+ * Red Colors (no IDS relation)
+ */
+$middle-red: #c1002b;
+$light-red:  lighten($middle-red, 40%);
+$dark-red:   darken($middle-red, 40%);
+$alert-red:  rgb(254,26,0);
+
+/**
+ * Basic shadows
+ */
+$dark-shadow:  1px 1px 1px rgba(0,0,0,0.3);
+$light-shadow: 1px 1px     rgba(255,255,255,0.5);
+
+
+/**
+ * KWIC colors
+ */
+$kwic-border:       $middle-grey;
+$kwic-line-noneven: $light-grey;
+$kwic-line-even:    $nearly-white;
+$kwic-match-color:  $dark-grey;
+$kwic-match-shadow: $light-shadow;
+
+$kwic-highlight-1:  $middle-red;
+$kwic-highlight-2:  $dark-blue;
+$kwic-highlight-3:  $dark-orange;
+$kwic-highlight-4:  $light-green;
diff --git a/dev/scss/base/flextable.scss b/dev/scss/base/flextable.scss
index 910d275..dc5ffd9 100644
--- a/dev/scss/base/flextable.scss
+++ b/dev/scss/base/flextable.scss
@@ -1,6 +1,9 @@
+@import "lengths";
+@import "mixins";
+
 /**
  * This defines flexible table cells
- * for views.
+ * for views (including media queries).
  */
 
 dl.flex {
diff --git a/dev/scss/base/fonts.scss b/dev/scss/base/fonts.scss
index 81726ad..febfa57 100644
--- a/dev/scss/base/fonts.scss
+++ b/dev/scss/base/fonts.scss
@@ -1,5 +1,5 @@
 @charset "utf-8";
-@import "../util";
+@import "paths";
 
 /**
  * Load web fonts for Kalamar
@@ -10,5 +10,5 @@
   src: url('#{$font-path}/fontawesome-webfont.eot?v=4.3.0');
   src: url('#{$font-path}/fontawesome-webfont.eot?#iefix&v=4.3.0') format('embedded-opentype'), url('#{$font-path}/fontawesome-webfont.woff2?v=4.3.0') format('woff2'), url('#{$font-path}/fontawesome-webfont.woff?v=4.3.0') format('woff'), url('#{$font-path}/fontawesome-webfont.ttf?v=4.3.0') format('truetype'), url('#{$font-path}/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular') format('svg');
   font-weight: normal;
-  font-style: normal;
+  font-style:  normal;
 }
\ No newline at end of file
diff --git a/dev/scss/base/form.scss b/dev/scss/base/form.scss
index d5c9aba..6fc75dc 100644
--- a/dev/scss/base/form.scss
+++ b/dev/scss/base/form.scss
@@ -1,4 +1,9 @@
-// This class defines form views
+@import "lengths";
+@import "colors";
+
+/**
+ * Definition of form elements for Kalamar.
+ */
 
 .form-table {
   display: block;
@@ -8,11 +13,9 @@
     border-width: 0;
     padding: 0;
     margin: 0;
-    // margin-left: 5em;
-  }
-
-  fieldset > div {
-    white-space: nowrap;
+    > div {
+      white-space: nowrap;
+    }
   }
 
   legend {
@@ -22,7 +25,8 @@
     border-radius: $standard-border-radius;
   }
 
-  label, input[type=radio] {
+  label,
+  input[type=radio] {
     font-size: 80%;
   }
   
@@ -31,63 +35,65 @@
     text-align: left;
   }
   
-  label[for], input[type=submit], a.form-button {
+  label[for],
+  input[type=submit],
+  a.form-button {
     margin-top: 2em;
   }
 
-  input, textarea, button, a.form-button {
+  input,
+  textarea,
+  button,
+  a.form-button {
     border-radius: $standard-border-radius;
   }
   
-  input, textarea {
-    border-color: $ids-grey-2;
+  input,
+  textarea {
+    border-color:     $ids-grey-2;
     background-color: $nearly-white;
-    border-style: solid;
+    border-style:     solid;
   }
   
-  input, textarea, select, a.form-button {
+  input,
+  textarea,
+  select,
+  a.form-button {
     border-style: solid;
-    display: inline-block;
-    width: 20%;
-    min-width: 20em;
-    padding: $base-padding;
+    display:      inline-block;
+    width:        20%;
+    min-width:    20em;
+    padding:      $base-padding;
   }
 
   input[type=radio] {
-    display: inline;
-    text-aline: right;
+    display:          inline;
+    text-aline:       right;
     background-color: red;
-    width: auto;
-    min-width: auto;
+    width:            auto;
+    min-width:        auto;
   }
   
-  input[readonly=readonly],textarea[readonly] {
-    background-color: $light-orange; // rgba(0,0,0,0.5);
+  input[readonly=readonly],
+  textarea[readonly] {
+    background-color: $light-orange;
   }
   
   .field-with-error {
     border-color: $ids-pink-1;
   }
 
-  /*
-  input:not([type=radio]),
-  button,
-  a.form-button {
-     height: 3em;
-  }
-*/
-
   input[type=submit],
   button,
   a.form-button {
-    display: inline-block;
-    cursor: pointer;
-    border-width: thin;
-    text-align: center;
+    display:          inline-block;
+    cursor:           pointer;
+    border-width:     thin;
+    text-align:       center;
     background-color: $middle-green;
-    border-color: $dark-green;
-    font-size: 8pt;
-    color: $dark-green;
+    border-color:     $dark-green;
+    font-size:        8pt;
+    color:            $dark-green;
   }
 
   a.form-button:hover {
@@ -95,13 +101,98 @@
   }
   
   label.field-required::after {
-    color: $ids-blue-1;
-    content:'*';
+    color:   $ids-blue-1;
+    content: '*';
   }
 }
 
 .button-abort {
   background-color: $middle-orange !important;
-  color: $darkest-orange !important;
-  border-color: $darkest-orange !important;
+  color:            $darkest-orange !important;
+  border-color:     $darkest-orange !important;
+}
+
+button {
+  cursor: pointer;
+
+  + button {
+    right: 0;
+  }
+  
+  &[type=submit] {
+    @include choose-item;
+    font-weight: normal;
+    padding:     0;
+    height:      100%;
+    top:         0;
+    width:       $button-width;
+
+    > span:nth-of-type(1) {
+      @include blind;
+    }
+
+    &::after {
+      font-family: "FontAwesome";
+    }
+    
+    border: $border-size solid $nearly-white;
+
+    &:hover,
+    &:focus {
+      @include choose-hover;
+    }
+
+    &::-moz-focus-inner {
+      border: none;
+    }
+
+    &:active {
+      @include choose-active;
+    }
+
+    /*
+     * This is just for styling the last button,
+     * in case there are more than one buttons.
+     */
+    &:last-of-type {
+      border: {
+        right-width:         $border-size;
+        right-style:         solid;
+        top-right-radius:    $standard-border-radius;
+        bottom-right-radius: $standard-border-radius;
+      }
+    }
+  }
+}
+
+/**
+ * Checkbox styling
+ * http://stackoverflow.com/questions/4148499/how-to-style-checkbox-using-css
+ */
+.checkbox {
+  display: none;
+
+  + label {
+    cursor: pointer;
+
+    span {
+      display:        inline-block;
+      border-radius:  4px;
+      width:          1em;
+      height:         1em;
+      line-height:    1em;
+      vertical-align: middle;
+      padding:        0;
+      margin-right:   .2em;
+
+      &::after {
+	      @include icon-font; 
+	      content: $fa-check;
+      }
+    }
+  }
+
+  &:checked + label span::after {
+    content: $fa-checked;
+  }
 }
diff --git a/dev/scss/base/fragment.scss b/dev/scss/base/fragment.scss
index 0a986d5..f68e7db 100644
--- a/dev/scss/base/fragment.scss
+++ b/dev/scss/base/fragment.scss
@@ -1,31 +1,40 @@
 @charset "utf-8";
-@import "../util";
+@import "choose";
+@import "lengths";
+@import "icons";
 
-.vc.fragment, p.query.fragment {
-  position:relative;
+/**
+ * Definitions of fragments for vc and query
+ * builder.
+ */
+
+.vc.fragment,
+p.query.fragment {
   @include choose-item;
+  position: relative;
+  padding:  4pt 6pt !important;
   
   border : {
-    width: $border-size;
-    style: solid;
+    width:  $border-size;
+    style:  solid;
     radius: $standard-border-radius;
   }
-  padding: 4pt 6pt !important;
+
   margin: {
-    // left: $border-size;
-    left: $left-distance;
-    top: .5em;
+    left:   $left-distance;
+    top:    .5em;
     bottom: .5em;
-    right: $right-view-distance;
+    right:  $right-view-distance;
   }
+
   &:hover {
-    cursor:pointer;
     @include choose-hover;
+    cursor: pointer;
   }
 
   // This is the description
   > span:first-of-type {
-    font-weight: bold;
+    font-weight:   bold;
     padding-right: 4pt;
   }
 
@@ -36,9 +45,9 @@
   
   &::after {
 	  font-family: 'FontAwesome';
-	  content: $fa-to-query;
-    position: absolute;
-    right: 4pt;
-    top: $border-size;
+	  content:     $fa-to-query;
+    position:    absolute;
+    right:       4pt;
+    top:         $border-size;
   }
 }
diff --git a/dev/scss/base/icons.scss b/dev/scss/base/icons.scss
new file mode 100644
index 0000000..64b9a60
--- /dev/null
+++ b/dev/scss/base/icons.scss
@@ -0,0 +1,35 @@
+/**
+ * Font Awesome symbol table.
+ */
+
+$fa-bars:         "\f0c9";
+$fa-extlink:      "\f08e";
+$fa-up:           "\f0d8";
+$fa-down:         "\f0d7";
+$fa-minimize:     "\f0d8";
+$fa-close:        "\f00d";
+$fa-download:     "\f019";
+$fa-info:         "\f05a";
+$fa-elipsis:      "\f141";
+$fa-previous:     "\f0d9";
+$fa-next:         "\f0da";
+$fa-search:       "\f002";
+$fa-rewrite:      "\f040";
+$fa-login:        "\f090";
+$fa-logout:       "\f08b";
+$fa-tutorial:     "\f19d";
+$fa-left-align:   "\f036";
+$fa-right-align:  "\f038";
+$fa-center-align: "\f037";
+$fa-question:     "\f128";
+$fa-checked:      "\f046";
+$fa-check:        "\f096";
+$fa-code:         "\f121";
+$fa-marked:       "\f005";
+// $fa-metadata:    "\f067";
+$fa-metadata:     "\f055";
+$fa-to-query:     "\f102";
+$fa-cut:          "\f0c4";
+$fa-plugin:       "\f1e6";
+$fa-referto:      "\f0c5";
+$fa-redo:         "\f01e";
diff --git a/dev/scss/base/lengths.scss b/dev/scss/base/lengths.scss
new file mode 100644
index 0000000..d0aafd5
--- /dev/null
+++ b/dev/scss/base/lengths.scss
@@ -0,0 +1,21 @@
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+$standard-border-radius: 6px;
+$item-padding:           3pt 6pt;
+$button-width:           30px;
+$base-padding:           8px;
+$border-size:            2px;
+$result-border-size:     1px;
+$left-width:             176px;
+$border-size:            2px;
+$left-distance:          $left-width + ($border-size * 2);
+
+/**
+ * Margins
+ */
+$standard-margin:     40px;
+$right-distance:      $standard-margin;
+$right-view-distance: $standard-margin / 2;
+$logo-left-distance:  230px;
diff --git a/dev/scss/base/load.scss b/dev/scss/base/load.scss
index 1917a54..c634fa9 100644
--- a/dev/scss/base/load.scss
+++ b/dev/scss/base/load.scss
@@ -1,14 +1,18 @@
+/**
+ * Load indicator.
+ */
+
 div.loading {
   background-color: transparent !important;
-  height: 16px !important;
-  width: 16px !important;
-  margin: 0 auto !important;
+  height:           16px !important;
+  width:            16px !important;
+  margin:           0 auto !important;
 }
 
 .loading {
   background: {
     position: center;
-    repeat: no-repeat;
-    image: url('data:image/gif;base64,R0lGODlhEAAQAIABAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBAABACwAAAAAEAAQAAACKYQPobt44QyM01VW0cVNPq48Hzh2UngyGvet6OpmKWmBb5TI+LlTOlAAACH5BAkEAAEALAAAAAAQABAAAAIohA+hu3gMnXyBqnkNw1XDnHThZ32bd6LUg0SOOIJsCaPmtOJvrctHAQAh+QQJBAABACwAAAAAEAAQAAACKYQPobt44QyM01VW0cVNPq48nxZKGLkxqGiungmyCXh9nRUleSZrO10AACH5BAkEAAEALAAAAAAQABAAAAIohA8RyKwN04pSWdumufp0niHghnkPyaWmqZLsKL3QWXUrJdpo66RKAQAh+QQJBAABACwAAAAAEAAQAAACJoQPEcisDdOKUlnbrp4IH989n1iBJUhK47itxkbGsEvRtXq/8B4UACH5BAkEAAEALAAAAAAQABAAAAIphA8RyKwN04pSWdvuNPto1HEX6G1YOYrain5im0pQ/GSnTIFr7eyhUQAAIfkECQQAAQAsAAAAABAAEAAAAiqMf6ALwWoelJFS5CbESTdeNUu3jWP4IWe2qS0TsmC8cuZFsrAkWrgtKQAAIfkECQQAAQAsAAAAABAAEAAAAiiMf6AL6LwMnDFQVG9SkrveWN6XjR82Mmi4cdMTvWsjnyIV4rIOgUwBACH5BAkEAAEALAAAAAAQABAAAAImjH+gC8HrXpNTxoeuzkltrkFg6BnMiJxpaYpWV76jDFKujV14LBUAIfkEAR4AAQAsAAAAABAAEAAAAiSEDxHIrA3TilJZ266eaN/8HJixdd4nailXgafrwSUVUqltQgUAOw==');
+    repeat:   no-repeat;
+    image:    url('data:image/gif;base64,R0lGODlhEAAQAIABAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBAABACwAAAAAEAAQAAACKYQPobt44QyM01VW0cVNPq48Hzh2UngyGvet6OpmKWmBb5TI+LlTOlAAACH5BAkEAAEALAAAAAAQABAAAAIohA+hu3gMnXyBqnkNw1XDnHThZ32bd6LUg0SOOIJsCaPmtOJvrctHAQAh+QQJBAABACwAAAAAEAAQAAACKYQPobt44QyM01VW0cVNPq48nxZKGLkxqGiungmyCXh9nRUleSZrO10AACH5BAkEAAEALAAAAAAQABAAAAIohA8RyKwN04pSWdumufp0niHghnkPyaWmqZLsKL3QWXUrJdpo66RKAQAh+QQJBAABACwAAAAAEAAQAAACJoQPEcisDdOKUlnbrp4IH989n1iBJUhK47itxkbGsEvRtXq/8B4UACH5BAkEAAEALAAAAAAQABAAAAIphA8RyKwN04pSWdvuNPto1HEX6G1YOYrain5im0pQ/GSnTIFr7eyhUQAAIfkECQQAAQAsAAAAABAAEAAAAiqMf6ALwWoelJFS5CbESTdeNUu3jWP4IWe2qS0TsmC8cuZFsrAkWrgtKQAAIfkECQQAAQAsAAAAABAAEAAAAiiMf6AL6LwMnDFQVG9SkrveWN6XjR82Mmi4cdMTvWsjnyIV4rIOgUwBACH5BAkEAAEALAAAAAAQABAAAAImjH+gC8HrXpNTxoeuzkltrkFg6BnMiJxpaYpWV76jDFKujV14LBUAIfkEAR4AAQAsAAAAABAAEAAAAiSEDxHIrA3TilJZ266eaN/8HJixdd4nailXgafrwSUVUqltQgUAOw==');
   }
 }
diff --git a/dev/scss/base/menu.scss b/dev/scss/base/menu.scss
new file mode 100644
index 0000000..054dabd
--- /dev/null
+++ b/dev/scss/base/menu.scss
@@ -0,0 +1,248 @@
+@charset "utf-8";
+@import "choose";
+@import "lengths";
+@import "icons";
+
+/**
+ * Definitions for menu design.
+ */
+
+ul.menu {
+  position: absolute;
+  padding: 0;
+  margin: 0;
+  text-indent: 0;
+
+  opacity: 0;
+  &.visible {
+    opacity: 1;
+  }
+
+  list-style: {
+    type:     none;
+    position: outside;
+  }
+
+  &,
+  > span.pref:not(:empty) {
+    box-sizing:  border-box;
+    text-shadow: none;
+    font-weight: normal;
+    z-index:     120;
+  }
+  
+  > li,
+  > span.pref:not(.active) {
+    @include choose-item;
+  }
+
+  > li,
+  > span.pref:not(:empty) {
+    @include choose-item;
+    box-shadow:  $choose-box-shadow;
+    cursor:      pointer;
+    padding:     $item-padding;
+    white-space: normal;
+    border: {
+      width:        $border-size;
+      bottom-width: 0px;
+      top-width:    0px;
+      style:        solid;
+    }
+  }
+  span.desc {
+    display:   block;
+    font-size: 75%;
+  }
+
+  div.lengthField {
+    border: {
+      color: transparent;
+      width: $border-size;
+    }
+    padding: $item-padding;
+    padding-top: 0;
+    padding-bottom: 0;
+    span {
+      display:     block !important;
+      line-height: 0;
+      color:       transparent;
+    }
+  }
+
+  /**
+   * Ruler
+   */
+  > div.ruler {
+    position:         absolute;
+    right:            0px;
+    margin-right:     -14px;
+    background-color: transparent;
+    width:            14px;
+    height:           100%;
+    opacity:          0;
+    cursor:           pointer;
+    transition:       opacity .5s ease 1s;
+
+    > span {
+      @include choose-active;
+      position: absolute;
+      display:  block;
+      right:    0;
+      width:    10px;
+      z-index:  115;
+      border: {
+	      radius: 4px;
+	      width:  2px;
+	      style:  solid;
+      }
+    }
+
+    &.active > span {
+      @include choose-hover;
+    }
+
+    > div {
+      @include choose-item;
+      box-shadow: $choose-box-shadow;
+      position:   absolute;
+      right:      0;
+      width:      10px;
+      height:     100%;
+      border: {
+        radius: 4px;
+	      width:  2px;
+	      style:  solid;
+      }
+    }
+  }
+
+  &:active > div.ruler,
+  &:hover > div.ruler,
+  > div.ruler.active {
+    transition: opacity .1s ease;
+    opacity:    1;
+  }
+
+
+  /**
+   * List items
+   */
+  > li,
+  div.lengthField {
+    padding-right: 1.6em;
+  }
+
+  > li {
+    &:first-of-type {
+      border-top: {
+	      width:        $border-size;
+	      left-radius:  $standard-border-radius;
+	      right-radius: $standard-border-radius;
+      }
+    }
+
+    &:last-of-type {
+      border-bottom: {
+	      width:        $border-size;
+	      left-radius:  $standard-border-radius;
+	      right-radius: $standard-border-radius;
+      }
+    }
+    mark {
+      text-decoration:  underline;
+      background-color: transparent;
+      color:            inherit;
+      font-weight:      bold;
+    }
+  }
+
+  > li.active,
+  > span.pref.active {
+    @include choose-active;
+  }
+
+  > li:hover,
+  > span.pref:hover {
+    @include choose-hover;
+  }
+
+  /**
+   * Default prefix view
+   */
+  > span.pref:not(:empty) {
+    position:      absolute;
+    min-width:     5px;
+    font-size:     80%;
+    left:          0;
+    bottom:        0;
+    display:       block;
+    margin-bottom: -2.1em;
+    padding:       2px 6px;
+    border: {
+      radius: $standard-border-radius;
+      width:  $border-size;
+    }
+  }
+}
+
+
+/**
+ * Rolling menu
+ */
+ul.menu.roll {
+  > li:first-of-type {
+    &:not(.no-more):before {
+      position:    absolute;
+      font-family: "FontAwesome";
+      content:     $fa-up;
+      right:       .5em;
+      top:         .4em;
+    }
+  }
+  > li:last-of-type {
+    &:not(.no-more):before {
+      position:    absolute;
+      font-family: "FontAwesome";
+      content:     $fa-down;
+      right:       .5em;
+      bottom:      .4em;
+    }
+  }
+  &:not(.visible) {
+    height: 0;
+  }
+}
+
+
+/**
+ * Sorting menu
+ */
+ul.menu.sort {
+  position: relative;
+  display:  inline-block;
+  > li::before {
+    content: '';
+  }
+  > li.active:hover {
+    @include choose-remove;
+  }
+}
+
+
+/**
+ * select menu
+ */
+span.menu.select {
+  > span {
+    z-index: 105;
+  }
+  > ul.menu.roll {
+    display: none;
+    z-index: -100;
+    &.visible {
+      display: block;
+      z-index: 110;
+    }
+  }
+}
diff --git a/dev/scss/base/mixins.scss b/dev/scss/base/mixins.scss
new file mode 100644
index 0000000..765ea76
--- /dev/null
+++ b/dev/scss/base/mixins.scss
@@ -0,0 +1,67 @@
+@import "colors";
+
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+@mixin blind {
+  position:    absolute;
+  margin-left: -3000px;
+}
+
+
+@mixin cell-info {
+  text-overflow: ellipsis;
+  white-space:   nowrap;
+  max-width:     25em;
+  overflow:      hidden;
+  padding:       1px 6px;
+  margin:        0px;
+}
+
+
+/**
+ * Mixin for basic color transition
+ */
+@mixin input-field {
+  outline:   none;
+  font-size: 11pt;
+  border:    $border-size solid $nearly-white;
+  padding:   2px;
+  margin:    0;
+}
+
+
+/**
+ * Mixing for basic text padding
+ */
+@mixin standard-text-padding {
+  padding-left:  .4em;
+  padding-right: .4em;
+}
+
+
+/**
+ * Mixing for icon fonts
+ */
+@mixin icon-font {
+  font-family: 'FontAwesome';
+  white-space: nowrap;
+}
+
+
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+@mixin box-sizing-box() {
+  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
+  -moz-box-sizing:    border-box; /* Firefox, other Gecko */
+  box-sizing:         border-box; /* Opera/IE 8+ */
+}
+
+
+@mixin matchinfo-head {
+  border-top: $border-size solid $darker-orange; // #ff8000;
+  width:      $left-width / 2;
+}
\ No newline at end of file
diff --git a/dev/scss/base/paths.scss b/dev/scss/base/paths.scss
new file mode 100644
index 0000000..7ff9527
--- /dev/null
+++ b/dev/scss/base/paths.scss
@@ -0,0 +1,5 @@
+/**
+ * Path information - relative to css!
+ */
+$img-path:  '../img';
+$font-path: '../font';
diff --git a/dev/scss/base/view.scss b/dev/scss/base/view.scss
index 96162cf..5aa4b6e 100644
--- a/dev/scss/base/view.scss
+++ b/dev/scss/base/view.scss
@@ -1,4 +1,4 @@
-@import "../util.scss";
+@import "colors";
 
 .result-view {
   background-color: $nearly-white;
diff --git a/dev/scss/footer/footer.scss b/dev/scss/footer/footer.scss
index 0581985..8c2675c 100644
--- a/dev/scss/footer/footer.scss
+++ b/dev/scss/footer/footer.scss
@@ -5,23 +5,24 @@
  * Rules for the footer section of Kalamar
  */
 footer {
-  position: absolute;
   background-color: $dark-grey;
-  bottom: 0;
-  padding-bottom: 2px;
-  font-size: 70%;
-  width: 100%;
-  text-align: right;
+  position:         absolute;
+  bottom:           0;
+  padding-bottom:   2px;
+  font-size:        70%;
+  width:            100%;
+  text-align:       right;
+
   a {
     &:link {
       margin: 0 .5em;
-      color: $light-grey;
+      color:  $light-grey;
     }
     &:visited {
-      color: $light-grey;
+      color:  $light-grey;
     }
     &:hover {
-      color: $nearly-white;
+      color:  $nearly-white;
     }
     &[href^="http://"]::after,
     &[href^="https://"]::after {
@@ -31,7 +32,7 @@
   span.separator {
     &:after {
       content: "-";
-      color: $light-grey;
+      color:   $light-grey;
     }
   }
 }
diff --git a/dev/scss/header/datepicker.scss b/dev/scss/header/datepicker.scss
index faf8336..ecc509d 100644
--- a/dev/scss/header/datepicker.scss
+++ b/dev/scss/header/datepicker.scss
@@ -7,112 +7,125 @@
  * in Kalamar.
  */
 
-$border-size: 2px;
-
 div.datepicker {
-  display: inline-block;
-  position: absolute;
-  z-index: 90;
-
-  font-size: 80%;
-  padding: 4pt;
   @include choose-item;
+  position:   absolute;
+  display:    inline-block;
+  z-index:    90;
+  font-size:  80%;
+  padding:    4pt;
   box-shadow: $choose-box-shadow;
 
   border: {
-    width: $border-size;
-    style: solid;
+    width:  $border-size;
+    style:  solid;
     radius: $standard-border-radius;
   }
+
   > div {
     font-size: 120%;
-    width: 45%;
+    width:     45%;
+
     &.month {
       float: right;
     }
 
     > span {
-      display: inline-block;
+      display:     inline-block;
+      overflow:    hidden;
+      white-space: nowrap;
+
       &:first-child,
       &:last-child {
-	width: 15%;
-	&::before {
-	  display: inline-block;
-	  text-align: center;
-	  cursor: pointer;
-	  font-family: 'FontAwesome';
-	  min-width: 14px;
-	}
+	      width: 15%;
+	      &::before {
+          @include icon-font;
+	        display:    inline-block;
+	        text-align: center;
+	        cursor:     pointer;
+	        min-width:  14px;
+	      }
       }
+
       &:first-child::before {
-	content: $fa-previous;
+	      content: $fa-previous;
       }
+
       &:last-child::before {
-	content: $fa-next;
+	      content: $fa-next;
       }
-      overflow: hidden;
-      white-space: nowrap;
+
       &:nth-child(2) {
-	cursor: pointer;
-	display: inline-block;
-	width: 70%;
-	text-align: center;
-	text-overflow: ellipsis;
-	border: {
-	  radius: $standard-border-radius;
-	  style: solid;
-	  width: $border-size;
-	  color: transparent;
-	}
-	&:hover {
-	  @include choose-hover;
-	}
-	&.selected {
-	  @include choose-active;
-	}
+	      display:       inline-block;
+	      cursor:        pointer;
+	      width:         70%;
+	      text-align:    center;
+	      text-overflow: ellipsis;
+
+	      border: {
+	        radius: $standard-border-radius;
+	        style:  solid;
+	        width:  $border-size;
+	        color:  transparent;
+	      }
+
+	      &:hover {
+	        @include choose-hover;
+	      }
+
+	      &.selected {
+	        @include choose-active;
+	      }
       }
     }
   }
   
   table {
     border-collapse: separate;
-    border-spacing: 1px;
+    border-spacing:  1px;
   }
 
   input {
+    @include choose-item;
     @include standard-text-padding;
+    background-color: $nearly-white;
+    width:            100%;
+
     border: {
       style: solid;
       width: 1px;
     }
-    @include choose-item;
-    background-color: $nearly-white;
-    width: 100%;
   }
 
   td {
     @include standard-text-padding;
     text-align: center;
+
     border: {
       style: solid;
       width: 1px;
     }
+
     &:not(.out) {
-      cursor: pointer;
       @include choose-item;
+      cursor: pointer;
       background-color: $nearly-white;
+
       &.today {
-	background-color: $light-blue;
-	color: $dark-blue;
-	text-shadow: none;
+	      background-color: $light-blue;
+	      color: $dark-blue;
+	      text-shadow: none;
       }
+
       &.selected {
-	@include choose-active;
+	      @include choose-active;
       }
+
       &:hover {
-	@include choose-hover;
+	      @include choose-hover;
       }
     }
+
     &.out {
       border-color: transparent;
     }
diff --git a/dev/scss/header/header.scss b/dev/scss/header/header.scss
index 65e2483..763c20e 100644
--- a/dev/scss/header/header.scss
+++ b/dev/scss/header/header.scss
@@ -1,167 +1,131 @@
 @charset "utf-8";
 @import "../util";
 @import "hint";          // Hint specific menu list
-@import "menu";          // Menu list
 @import "searchbar";     // The search bar
 @import "vc";            // Virtual corpus builder
 @import "statistics";    // Statistics for VCs
 @import "datepicker";    // Datepicker
+@import "querylanguage"; // Query language
+@import "pipe";          // Pipe
 
 header {
-  position: relative;
-  background-color: $light-green;
-//  @include light-noise;
   @include box-sizing-box();
-  padding: $base-padding 0 0 $base-padding;
-  // padding-bottom: 0;
-  font-size: 10pt;
-  color: $nearly-white;
-  // text-shadow: none;
-  button {
-    color: $light-green;
-    background-color: transparent;
-    border-width: 0;
-    font-weight: normal;
-    margin: 0;
-    padding: 0;
-    outline: none;
-  }
-  span.select { /* , #vc-choose, Formally vc.location */
-    cursor: pointer;
+  position:         relative;
+  background-color: $light-green;
+  padding:          $base-padding 0 0 $base-padding;
+  font-size:        10pt;
+  color:            $nearly-white;
+  
+  span.select {
+    display:     inline-block;
+    cursor:      pointer;
     line-height: 1.8em;
+
     > span {
       font-weight: bold;
     }
+
     border: {
-      width: 0;
+      width:        0;
       bottom-width: 3px;
-      style: solid;
-      color: transparent;
+      style:        solid;
+      color:        transparent;
     }
-    display: inline-block;
+
     &:hover {
-      color: $dark-green;
+      color:        $dark-green;
       border-color: $dark-green;
     }
-    &.active {
-      border-color: $dark-orange;
-    }
+
     &::after {
+      @include icon-font;
       pointer-events: none;
-      font-family: FontAwesome;
-      text-align: center;
-    }
-  }
-  span.select {
-    &::after {
-      content: $fa-down;
+      text-align:     center;
+      content:        $fa-down;
+
       padding: {
-	      left: 4pt;
+	      left:  4pt;
 	      right: 4pt;
       }
     }
-    &.active::after {
-      content: $fa-up;
+
+    &.active {
+      border-color: $dark-orange;
+      &::after {
+        content: $fa-up;
+      }
     }
   }
 
   form {
+    position:     relative;
+    display:      block;
     padding-left: $logo-left-distance;
-    min-height: 2.7em;
-    display: block;
-    margin: 0px;
-    position: relative;
+    min-height:   2.7em;
+    margin:       0px;
   }
-  .clear {
-    clear: both;
+
+  input {
+    @include input-field;
   }
 
   .button {
+    color:        $nearly-white;
+    line-height:  2em;
+    margin-right: $right-distance;
+
     &.right {
-      float: right;
+      float:   right;
       display: inline-block;
     }
+
     &.top {
-      position: absolute;
-      display: block;
-      top: 0;
-      right: 0;
-      margin-right: 0;
-      width: ($standard-margin / 2);
+      position:         absolute;
+      display:          block;
+      top:              0;
+      right:            0;
+      margin-right:     0;
+      width:            ($standard-margin / 2);
       background-color: $dark-green;
-      text-align: center;
-      height: 100%;
-      z-index: 20;
+      text-align:       center;
+      height:           100%;
+      z-index:          20;
+
       > a:hover {
-	color: $nearly-white
+	      color: $nearly-white
       }
     }
-    color: $nearly-white;
-    line-height: 2em;
-    margin-right: $right-distance;
+
     > a {
-      color: $nearly-white;
-      cursor:pointer;
-      position: relative;
+      color:     $nearly-white;
+      cursor:    pointer;
+      position:  relative;
       font-size: 120%;
+
       > span {
-	@include blind;
+	      @include blind;
       }
     }
+
     > a::after {
-      font-family: 'FontAwesome';
+      @include icon-font;
     }
+
+    // Icons for buttons
     > a.tutorial::after {
       content: $fa-tutorial;
     }
+
     > a.question::after {
       content: $fa-question;
     }
+
     > a.login::after {
       content: $fa-login;
     }
+
     > a.logout::after {
       content: $fa-logout;
     }
   }
-}
-
-
-/**
- * Temporary hack for language chooser
- * http://cssdeck.com/labs/styling-select-box-with-css3
- */
-#ql-field {
-  cursor: pointer;
-  margin: 0;
-  outline: none;
-  border: none;
-  display: inline-block;
-  position: relative;
-  color: white;
-  background-color: $light-green;
-  border-width: 0;
-  border-radius: 0;
-  @include no-appearance;
-  &:checked {
-    outline: none;
-  }
-  > option {
-    padding: 0pt 2pt;
-    outline: none;
-  }
-}
-
-/**
- * funny hack for firefox
- */
-#ql-field:-moz-focusring {
-  color: transparent;
-  text-shadow: 0 0 0 white;
-}
-
-
-// Hide pipe
-input.pipe {
-  display: none;
 }
\ No newline at end of file
diff --git a/dev/scss/header/hint.scss b/dev/scss/header/hint.scss
index b2e9bee..ae763b2 100644
--- a/dev/scss/header/hint.scss
+++ b/dev/scss/header/hint.scss
@@ -4,91 +4,94 @@
 /**
  * Rules for the Kalamar hint helper.
  */
-
-$border-size: 2px;
-
 ul.menu.hint {
-  display: inline-block;
+  display:     inline-block;
   white-space: normal;
-  text-align:left;
-  top: 0;
-  max-width: 23em !important;
+  text-align:  left;
+  max-width:   23em !important;
+  top:         0;
 
   > li:first-of-type {
     border-top: {
-      width: 1px;
-      left-radius: 0;
+      width:        1px;
+      left-radius:  0;
       right-radius: 0;
     }
   }
 }
 
+// Alert bubble
 div.alert.hint {
-  position: absolute;
-//  background-color: rgba(254,26,0,.9); // from alertify
-  background-color: rgb(254,26,0); // from alertify
-  color: $nearly-white;
-  padding: $item-padding;
-  margin-top: 8px;
-  box-shadow: $choose-box-shadow;
+  position:         absolute;
+  background-color: $alert-red;
+  color:            $nearly-white;
+  padding:          $item-padding;
+  margin-top:       8px;
+  box-shadow:       $choose-box-shadow;
+  width:            auto;
+  min-width:        10em;
+  max-width:        23em !important;
+  transition:       opacity 0.2s ease 0s;
+
   border: {
-    radius: $standard-border-radius;
+    radius:          $standard-border-radius;
     top-left-radius: 0;
   }
-  width: auto;
-  min-width: 10em;
-  max-width: 23em !important;
-  transition: opacity 0.2s ease 0s;
-}
 
-div.hint.alert::before {
-  position: absolute;
-  content: "";
-  display: block;
-  top: -12px;
-  left: 0;
-  width: 0;
-  white-space: normal; 
-  border: {
-    width: 0 8px 12px 0;
-    style: solid;
-    color: rgb(254,26,0) transparent; // from alertify
+  &::before {
+    position:    absolute;
+    content:     "";
+    display:     block;
+    top:         -12px;
+    left:        0;
+    width:       0;
+    white-space: normal; 
+    border: {
+      width: 0 8px 12px 0;
+      style: solid;
+      color: $alert-red transparent;
+    }
   }
 }
 
+// Mirror element for the hint helper
 .hint.mirror {
-  position: absolute;
-  left: 0;
-  top: 0;
-  z-index: 90;
+  position:    absolute;
+  display:     block;
+  left:        0;
+  top:         0;
+  z-index:     90;
   white-space: pre-wrap;
-  height: 0;
-  display: block;
+  height:      0;
+
   > span {
-    opacity: 0;
+    opacity:     0;
     white-space: pre-wrap;
-    overflow: hidden;
+    overflow:    hidden;
   }
+
   // TODO: Only in focus
   > div {
-    position: absolute;
-    display: block;
-    cursor: pointer;
+    position:   absolute;
+    display:    block;
+    cursor:     pointer;
     transition: left 0.2s ease 0s;
-    top: 0;
-    left: 0;
+    top:        0;
+    left:       0;
     text-align: left;
-    padding: 0;
+    padding:    0;
     border-top: 5px solid $dark-orange;
-    height: 10px;
-    width: 1.2em;
+    height:     10px;
+    width:      1.2em;
+
     &:hover:not(.active) {
       border-top: 10px solid $dark-orange;
     }
+
     &.active {
       border-top-width: 0;
-      height: 0;
-      width: 23em;
+      height:           0;
+      width:            23em;
     }
   }
 }
\ No newline at end of file
diff --git a/dev/scss/header/menu.scss b/dev/scss/header/menu.scss
deleted file mode 100644
index 7d76f4e..0000000
--- a/dev/scss/header/menu.scss
+++ /dev/null
@@ -1,239 +0,0 @@
-@charset "utf-8";
-@import "../util";
-
-$border-size: 2px;
-
-/**
- * Menu list - used nearly everywhere
- */
-ul.menu,
-ul.menu > span.pref:not(:empty) {
-  box-sizing: border-box;
-  text-shadow: none;
-  font-weight: normal;
-  // Pagination border?
-
-  z-index: 120;
-}
-
-ul.menu > li,
-ul.menu > span.pref:not(:empty) {
-  box-shadow: $choose-box-shadow;
-  border: {
-    width: $border-size;
-    bottom-width: 0px;
-    top-width: 0px;
-    style: solid;
-  }
-  @include choose-item;
-  cursor: pointer;
-  padding: $item-padding;
-  white-space: normal;
-}
-
-ul.menu span.desc {
-  display: block;
-  font-size: 75%;
-}
-
-ul.menu div.lengthField {
-  border: {
-    color: transparent;
-    width: $border-size;
-  }
-  padding: $item-padding;
-  padding-top: 0;
-  padding-bottom: 0;
-  span {
-    display: block !important;
-    line-height: 0;
-    color: transparent;
-  }
-}
-
-ul.menu > li,
-ul.menu > span.pref:not(.active) {
-  @include choose-item;
-}
-
-ul.menu:active > div.ruler,
-ul.menu:hover > div.ruler,
-ul.menu > div.ruler.active {
-  transition: opacity .1s ease;
-  opacity: 1;
-}
-
-ul.menu {
-  position: absolute;
-  padding: 0;
-  margin: 0;
-  text-indent: 0;
-  list-style-type: none;
-  list-style-position: outside;
-
-  > div.ruler {
-    position: absolute;
-    right: 0px;
-    margin-right: -14px;
-    background-color: transparent;
-    width: 14px;
-    height: 100%;
-    opacity: 0;
-    cursor: pointer;
-    transition: opacity .5s ease 1s;
-
-    > span {
-      position: absolute;
-      @include choose-active;
-      display: block;
-      right: 0;
-      width: 10px;
-      z-index: 115;
-      border: {
-	radius: 4px;
-	width: 2px;
-	style: solid;
-      }
-    }
-    &.active > span {
-      @include choose-hover;
-    }
-    > div {
-      box-shadow: $choose-box-shadow;
-      position: absolute;
-      right: 0;
-      border: {
-	width: 2px;
-	style: solid;
-      }
-      width: 10px;
-      @include choose-item;
-      // background-color: -grey;
-      height: 100%;
-      border-radius: 4px;
-    }
-  }
-
-  /**
-   * List items
-   */
-  > li, div.lengthField {
-    padding-right: 1.6em;
-  }
-  > li {
-
-    &:first-of-type {
-      border-top: {
-	width: $border-size;
-	left-radius: $standard-border-radius;
-	right-radius: $standard-border-radius;
-      }
-    }
-    &:last-of-type {
-      border-bottom: {
-	width: $border-size;
-	left-radius: $standard-border-radius;
-	right-radius: $standard-border-radius;
-      }
-    }
-    mark {
-      text-decoration: underline;
-      background-color: transparent;
-      color: inherit;
-      font-weight: bold;
-    }
-  }
-  > li.active,
-  > span.pref.active {
-    @include choose-active;
-  }
-  > li:hover,
-  > span.pref:hover {
-    @include choose-hover;
-  }
-
-  /**
-   * Default prefix view
-   */
-  > span.pref:not(:empty) {
-    position: absolute;
-    min-width: 5px;
-    font-size: 80%;
-    left: 0;
-    bottom: 0;
-    display: block;
-    margin-bottom: -2.1em;
-    padding: 2px 6px;
-    border: {
-      radius: $standard-border-radius;
-      width: $border-size;
-    }
-  }
-}
-
-ul.menu {
-  opacity: 0;
-}
-ul.menu.visible {
-  opacity: 1;
-}
-
-/**
- * Rolling menu
- */
-ul.menu.roll {
-  > li:first-of-type {
-    &:not(.no-more):before {
-      position: absolute;
-      font-family: "FontAwesome";
-      content: $fa-up;
-      right: .5em;
-      top: .4em;
-    }
-  }
-  > li:last-of-type {
-    &:not(.no-more):before {
-      position: absolute;
-      font-family: "FontAwesome";
-      content: $fa-down;
-      right: .5em;
-      bottom: .4em;
-    }
-  }
-}
-
-ul.menu.roll:not(.visible) {
-  height: 0;
-}
-
-
-/**
- * Sorting menu
- */
-ul.menu.sort {
-  position: relative;
-  display: inline-block;
-  > li::before {
-    content: '';
-  }
-  > li.active:hover {
-    @include choose-remove;
-  }
-}
-
-/**
- * select menu
- */
-span.menu.select {
-  > span {
-    z-index: 105;
-  }
-  > ul.menu.roll {
-    display: none;
-    z-index: -100;
-    &.visible {
-      display: block;
-      z-index: 110;
-    }
-  }
-}
diff --git a/dev/scss/header/pipe.scss b/dev/scss/header/pipe.scss
new file mode 100644
index 0000000..f0c0807
--- /dev/null
+++ b/dev/scss/header/pipe.scss
@@ -0,0 +1,8 @@
+/**
+ * The pipe input field
+ */
+
+// Hide pipe
+input.pipe {
+  display: none;
+}
\ No newline at end of file
diff --git a/dev/scss/header/querylanguage.scss b/dev/scss/header/querylanguage.scss
new file mode 100644
index 0000000..44978bb
--- /dev/null
+++ b/dev/scss/header/querylanguage.scss
@@ -0,0 +1,40 @@
+@import "../util";
+
+/**
+ * Temporary hack for language chooser
+ * http://cssdeck.com/labs/styling-select-box-with-css3
+ * This is only active in no-js environment and before the
+ * javascript is loaded.
+ */
+#ql-field {
+  position:         relative;
+  background-color: $light-green;
+  cursor:           pointer;
+  margin:           0;
+  outline:          none;
+  border:           none;
+  display:          inline-block;
+  color:            white;
+  border-width:     0;
+  border-radius:    0;
+
+  // https://css-tricks.com/almanac/properties/a/appearance/
+  -webkit-appearance: none;
+  -moz-appearance:    none;
+  appearance:         none;
+
+  &:checked {
+    outline: none;
+  }
+
+  > option {
+    padding: 0pt 2pt;
+    outline: none;
+  }
+
+   // funny hack for firefox
+  &:-moz-focusring {
+    color:       transparent;
+    text-shadow: 0 0 0 white;
+  }
+}
diff --git a/dev/scss/header/searchbar.scss b/dev/scss/header/searchbar.scss
index 7e34b27..45bc4ec 100644
--- a/dev/scss/header/searchbar.scss
+++ b/dev/scss/header/searchbar.scss
@@ -1,87 +1,46 @@
 @charset "utf-8";
 @import "../util";
 
-$border-size: 2px;
-$qmargin: 3px;
-// $right-padding: 60px;
-
-
 
 /**
- * Input field
+ * Search field
  */
 #q-field {
-  width: 100%;
-  margin: 0;
-  margin-bottom: $qmargin;
-  display: block;
+  display:       block;
+  margin-bottom: 3px;
+  width:         100%;
+  margin:        0;
 
   &::-webkit-search-cancel-button {
     display: none;
   }
 
   &.loading {
-    background-color: $light-orange;
-    background-image: none;
+    background: {
+      color: $light-orange;
+      image: none;
+    }
   }
 }
 
-header input {
-  @include input-field;
-}
 
 #searchbar {
-  position: relative;
-  width: 100%;
-  padding: 0;
+  position:      relative;
+  width:         100%;
+  padding:       0;
   padding-right: $right-distance + $button-width;
+
   button[type=submit] {
     position: absolute;
-    padding: 0;
-    right: $right-distance;
+    padding:  0;
+    right:    $right-distance;
+
     &:not(.loading)::after {
       content: $fa-search;
     }
   }
 }
 
-/**
- * Checkbox styling
- * http://stackoverflow.com/questions/4148499/how-to-style-checkbox-using-css
-*/
-.checkbox {
-  display: none;
-  + label {
-    cursor: pointer;
-    span { 
-      border-radius: 4px;
-      display: inline-block;
-      width: 1em; // 12px
-      height: 1em;
-      line-height: 1em; // 12px;
-      vertical-align: middle;
-      padding: 0;
-      margin-right: .2em;
-/*
-    background-color: $nearly-white;
-    &:hover {
-      border-color: $nearly-white;
-    }
-*/
-      &::after {
-	font-family: "FontAwesome"; 
-	content: $fa-check;
-      }
-    }
-  }
-  &:checked + label span { 
-    &:after {
-      content: $fa-checked;
-    }
-  }
-}
-
-
 .query.panel {
   padding-right: $right-distance + $button-width;
 }
@@ -89,11 +48,12 @@
 // Specify result button group layout
 
 .query.button-group.button-panel {
-  width: auto;
-  text-align: right;
+  display:        block;
+  width:          auto;
+  text-align:     right;
   vertical-align: top;
-  display: block;
-  line-height: 1.3em;
+  line-height:    1.3em;
+
   > span {
     box-shadow: none;
   }
diff --git a/dev/scss/header/statistics.scss b/dev/scss/header/statistics.scss
index 234e81b..500fc70 100644
--- a/dev/scss/header/statistics.scss
+++ b/dev/scss/header/statistics.scss
@@ -2,37 +2,45 @@
 @import "../util";
 
 
-/* 
-Corpus statistic  
-Graying corpus statistic 
-*/
+/**
+ * Corpus statistic  
+ * Graying corpus statistic 
+ */
 div.stattable {
-    display: flex;
-    flex-direction: row;
-    margin-right: $right-view-distance;
+  display: flex;
+  flex-direction: row;
+  margin-right: $right-view-distance;
 }
+
 div.stattable {
   > dl {
     margin-bottom:4px;
+
     > div {
       border-color: $dark-green;
+
       > dt {
         background-color: $middle-green;
-        width: 15em;
-        margin: 0;
-        &:after {
+        width:            15em;
+        margin:           0;
+
+        &::after {
           content: ":";
         }
       }   
       > dd {
         background-color: $lightest-green;
-        color: $dark-grey;
+        color:            $dark-grey;
       }
     }
   }
+
   &.stdisabled {
-    dt, dd {
-      @include vcinfo-inactive;
+    dt,
+    dd {
+      background-color: $grey-green;
+      color:            $dark-green;
+      text-shadow:      none;
     }
   }
 }
@@ -45,7 +53,7 @@
 
 span.refresh::after{
   vertical-align: sub;
-  content : $fa-redo;
+  content :       $fa-redo;
 }
 
 // Default value 20% doesn't work with < 5 items,
diff --git a/dev/scss/header/vc.scss b/dev/scss/header/vc.scss
index 2a4a3b8..cdc700b 100644
--- a/dev/scss/header/vc.scss
+++ b/dev/scss/header/vc.scss
@@ -1,14 +1,14 @@
 @charset "utf-8";
 @import "../util";
 
-$left-padding: 4em; // 32pt; // 2.8em;
-$border-size: 2px;
-$bracket-size: .4em; // 4pt;
-
 /**
  * Virtual Collection Builder
  */
 
+$left-padding: 4em;
+$bracket-size: .4em;
+
+// Rules for VC view (including fragments)
 .vc {
   margin-top: 4pt;
 
@@ -17,35 +17,39 @@
   }
 
   .docGroup {
-    position: relative;
+    position:    relative;
+    display:     inline-block;
+    margin-left: $left-padding;
+    padding:     4pt 2pt 4pt 0pt;
 
-    display: inline-block;
-    margin-left: $left-padding; // 28pt
+    .docGroup {
+      display: block;
+    }
 
-    .docGroup { display: block; }
-
-    padding: 4pt 2pt 4pt 0pt;
     border: {
       radius: $standard-border-radius * 2;
-      style: solid;
-      width: 0 $bracket-size; // .6em .5em
+      style:  solid;
+      width:  0 $bracket-size;
     }
 
     &[data-operation] {
+
       > .doc:first-child::before,
       > .docGroup:first-child::before {
         content: none;
       }
+
       > .doc::before,
       > .docGroup::before {
-        display: inline-block;
-        position: absolute;
-        text-align: right;
-        width: $left-padding;
-        margin-left: -1 * ($left-padding + .5em); // -28pt
+        position:    absolute;
+        display:     inline-block;
+        text-align:  right;
+        width:       $left-padding;
+        margin-left: -1 * ($left-padding + .5em);
         line-height: 1.5em;
-        border-top: $border-size solid transparent;
+        border-top:  $border-size solid transparent;
       }
+
       > .docGroup::before {
         margin-left: -1 * ($left-padding + .5em) + (-1 * $bracket-size);
       }
@@ -74,19 +78,20 @@
      * All operators on groups
      */
     > .operators {
-      position: absolute;
-      display: block;
-      top: 10px;
+      position:       absolute;
+      display:        block;
       vertical-align: middle;
-      left: 3px;
+      top:            10px;
+      left:           3px;
+      margin-left:    100%;
+      padding:        0;
+
       > span:first-child {
         border: {
-        top-left-radius: 0;
-        bottom-left-radius: 0;
+          top-left-radius:    0;
+          bottom-left-radius: 0;
+        }
       }
-      }
-      margin-left: 100%;
-      padding: 0;
     }
   }
 
@@ -97,78 +102,78 @@
   .doc {
     line-height: 170%;
     padding-left: $left-padding;
-    > span + span,
-    > span + div + span,
-    > span + ul + span {
-      margin-left: 5pt;
-    }
 
-    > span.key,
-    > span.value {
-      font-weight: bold;
-    }
-    > span.value {
-      &[data-type=regex] {
+    > span {
+
+      + span,
+      + div + span,
+      + ul + span {
+        margin-left: 5pt;
+      }
+
+      &.key,
+      &.value {
+        font-weight: bold;
+      }
+
+      &.value[data-type=regex] {
         font-style: italic;
+
         &::after,
         &::before {
           content: '/';
         }
       }
+
+      &.key {
+        position: relative;
+
+        > ul {
+          margin:      0;
+          margin-left: 3.3em;
+        }
+
+        &.fixed {
+          color: $light-green;
+        }
+      }
     }
 
     // Unspecified value
-    &.unspecified > span, span.unspecified {
-      padding: 0 4px;
+    &.unspecified > span,
+    span.unspecified {
+      @include choose-item;
+      padding:    0 4px;
       box-shadow: $choose-box-shadow;
+
       border: {
-        style: solid;
-        width: $border-size;
+        style:  solid;
+        width:  $border-size;
         radius: $standard-border-radius;
       }
-      @include choose-item;
-      &:hover {
-	      @include choose-hover;
-      }
     }
 
-    > span.key.fixed {
-      color: $light-green;
-    }
-
-    /**
-     * All operators on docs
-     */
+    // All operators on docs
     > .operators {
-      display: inline-block;
+      display:     inline-block;
       margin-left: 10px;
     }
-    > span.key {
-      position: relative;
-      > ul {
-        margin: 0;
-        margin-left: 3.3em;
-      }
-    }
   }
 
-  .rewritten {
-    .rewrite {
-      margin-left: 4pt;
-      display: inline-block;
-      color: $dark-orange;
-      &::after {
-        font: {
-          family: FontAwesome;
-          style: normal;
-          weight: normal;
-        }
-        content: $fa-rewrite;
-        text-decoration: underline;
-      }
-      > span {
-        display: none;
-      }
+  .rewritten .rewrite {
+    display:     inline-block;
+    margin-left: 4pt;
+    color:       $dark-orange;
+    &::after {
+      @include icon-font;
+      font-style:      normal;
+      font-weight:     normal;
+      content:         $fa-rewrite;
+      text-decoration: underline;
+    }
+
+    > span {
+      display: none;
     }
   }
 
@@ -176,12 +181,12 @@
    * All operators
    */
   .operators {
-    opacity: 0;
+    opacity:     0;
     white-space: nowrap;
-    padding: 0;
-    font-size: 0;
+    padding:     0;
+    font-size:   0;
     line-height: 0;
-    text-align: center;
+    text-align:  center;
   }
 
   > .docGroup {
@@ -192,48 +197,50 @@
     display: inline-block;
   }
 
-  .menu li[data-type=ref]:before,
-  span.key.ref:before {
-    content: $fa-referto;
-    font-family: 'FontAwesome';
+  // referTo entries
+  .menu li[data-type=ref]::before,
+  span.key.ref::before {
+    @include icon-font;
+    content:       $fa-referto;
     padding-right: 4pt;
-    style: normal;
-    weight: normal;
+    style:         normal;
+    weight:        normal;
   }  
 
   div.value {
-    position: absolute;
-    display: inline-block;
-    z-index: 8000;
-    padding: 4pt;
+    position:   absolute;
+    display:    inline-block;
+    z-index:    8000;
+    padding:    4pt;
     margin-top: -6pt;
+
     border: {
-      width: $border-size;
-      style: solid;
       radius: $standard-border-radius;
+      width:  $border-size;
+      style:  solid;
     }
+
     input {
       border-width: 0;
     }
+
     > div {
+      @include choose-item;
+      display: inline-block;
       padding: 2pt;
-      cursor: pointer;
+
       font: {
-        size: 80%;
+        size:  80%;
         style: italic;
       }
-      display: inline-block;
-      @include choose-item;
+
       border: {
-        width: $border-size;
-        style: solid;
+        width:  $border-size;
+        style:  solid;
         radius: $standard-border-radius;
       }
-
-      &:hover {
-        @include choose-hover;
-      }
     }
+
     &.regex {
       > input {
         font-style: italic;
@@ -246,12 +253,14 @@
   }
 }
 
+/* Rules for vcs excluding fragments,
+ * i.e. includingy dynamic changes.
+ */
 .vc:not(.fragment) {
-  .docGroup, .doc {
-    // color: $nearly-white;
-    // color: $dark-green;
+
+  .docGroup,
+  .doc {
     color: $dark-grey;
-    // text-shadow: $light-shadow;
   }
   
   /**
@@ -259,26 +268,24 @@
    */
   // Whiten on hover 
   .docGroup:hover {
-    // background-color: rgba(255,255,255,.06);
     background-color: rgba(255,255,255,.3);
   }
 
-  .doc > span.key.fixed {
-    color: $light-green;
-  }  
-
   .doc > span:not(.fixed) {
     cursor: pointer;
     &:hover {
-      // color: $dark-green;
       color: $dark-orange;
     }
   }
 
-  .rewritten .rewrite {
-    color: $dark-orange;
+    // Unspecified value
+  .doc.unspecified > span,
+  span.unspecified {
+    &:hover {
+	    @include choose-hover;
+    }
   }
-
+  
   .doc, .docGroup {
     &:hover > .operators {
       opacity: 1;
@@ -289,7 +296,6 @@
     &[data-operation] {
       > .doc::before,
       > .docGroup::before {
-        // color: $dark-green;
         color: $dark-orange;
       }
     }
@@ -301,6 +307,13 @@
   div.value {
     @include choose-item;
     box-shadow: $choose-box-shadow;
+
+    > div {
+      cursor:  pointer;
+      &:hover {
+        @include choose-hover;
+      }
+    }
   }
 }
 
@@ -359,47 +372,40 @@
   border-radius: $standard-border-radius;
 }
 
-/*
-header #vc-view > div {
-  margin: 1.3em 0 .5em 0;
-}
-*/
-
-#vc-choose > span.rewritten {
-  &::after {
-    color: $dark-orange;
-    padding: 0;
-    padding-left: 4px;
-    font: {
-      family: FontAwesome;
-      style: normal;
-      weight: normal;
-    }
-    content: $fa-rewrite;
-    text-decoration: underline;
-  }
+#vc-choose > span.rewritten::after {
+  @include icon-font;
+  color:           $dark-orange;
+  padding:         0;
+  padding-left:    4px;
+  content:         $fa-rewrite;
+  text-decoration: underline;
+  font-style:      normal;
+  font-weight:     normal;
 }
 
 div#vc-view {
   position:relative;
+
   > div.vc {
-    display: none;
+    display:          none;
+    margin:           1.3em 0 .5em 0;
+    border:           2px solid $dark-green;
+    background-color: $nearly-white;
+
     &.active {
       display: block;
     }
-    margin: 1.3em 0 .5em 0;
-    border: 2px solid $dark-green;
-    background-color: $nearly-white;
+
     > div:first-child {
-      // margin: 1.3em;
       padding: 1.3em;
     }
   }
 }
 
 div.panel.vcinfo {
-  padding: 3pt 0pt 3pt 3pt;
+  padding:          3pt 0pt 3pt 3pt;
   background-color: $dark-green;
+
   div.button-group > span {
     box-shadow: none;
   }
diff --git a/dev/scss/kalamar.scss b/dev/scss/kalamar.scss
index 084b443..b38fe31 100644
--- a/dev/scss/kalamar.scss
+++ b/dev/scss/kalamar.scss
@@ -5,7 +5,7 @@
  */
 
 // Global variables and mixins
-@import "base";            // Base styles
+@import "base/base";            // Base styles
 @import "main/main";       // Main frame styles
 @import "header/header";   // Top frame styles
 @import "footer/footer";   // Bottom frame styles
diff --git a/dev/scss/main/alertify.scss b/dev/scss/main/alertify.scss
index 55f6c59..be2f656 100644
--- a/dev/scss/main/alertify.scss
+++ b/dev/scss/main/alertify.scss
@@ -2,11 +2,9 @@
 @import "alertify/alertify-core";
 @import "alertify/alertify-default";
 
-/*
-article.alertify-log {
-  text-shadow:none;
-}
-*/
+/**
+ * Alertify styles.
+ */
 
 article.alertify-log-warn {
   background-color: $dark-orange;
@@ -19,4 +17,8 @@
   display: block;
   color: $dark-red;
   font-size: 70%;
+}
+
+.alertify-log-error {
+  background-color: $alert-red;
 }
\ No newline at end of file
diff --git a/dev/scss/main/alertify/alertify-default.scss b/dev/scss/main/alertify/alertify-default.scss
index 97a1232..82637d4 100644
--- a/dev/scss/main/alertify/alertify-default.scss
+++ b/dev/scss/main/alertify/alertify-default.scss
@@ -72,11 +72,13 @@
   color: #FFF;
   // text-shadow: -1px -1px 0 rgba(0,0,0,.5);
 }
+/*
 .alertify-log-error {
   background: #FE1A00;
   //  background: rgba(254,26,0,.9);
     background: rgb(254,26,0);
 }
+*/
 .alertify-log-success {
   background: #5CB811;
 //  background: rgba(92,184,17,.9);
diff --git a/dev/scss/main/buttongroup.scss b/dev/scss/main/buttongroup.scss
index 55bd6b9..49df159 100644
--- a/dev/scss/main/buttongroup.scss
+++ b/dev/scss/main/buttongroup.scss
@@ -8,58 +8,61 @@
   > span {
     cursor: pointer;
   }
-
-  span.button-icon {
-    font-family: 'FontAwesome';
-    > span {
-      @include blind;
-    }
-  }
   
-  &.button-panel, &.operators {
-    > span, a {
-      box-shadow: $choose-box-shadow;
-      font-size: 9pt;
-      font-weight: normal;
-      line-height: 1.5em;
-      padding: 0 4px;
-      display: inline-block;
+  &.button-panel,
+  &.operators {
+    > span,
+    a {
       @include choose-item;
+      box-shadow:   $choose-box-shadow;
+      font-size:    9pt;
+      font-weight:  normal;
+      line-height:  1.5em;
+      padding:      0 4px;
+      display:      inline-block;
       border-style: solid;
       border-width: $border-size 0;
+
       &:hover {
 	      @include choose-hover;
       }
+
       &:first-child {
 	      border: {
-	      left-width: $border-size;
-	      top-left-radius: $standard-border-radius;
-	      bottom-left-radius: $standard-border-radius;
-	    }
+	        left-width:          $border-size;
+	        top-left-radius:     $standard-border-radius;
+	        bottom-left-radius:  $standard-border-radius;
+	      }
       }
+
       &:last-child {
 	      border: {
-	      right-width: $border-size;
-	      top-right-radius: $standard-border-radius;
-	      bottom-right-radius: $standard-border-radius;
-      }
+	        right-width:         $border-size;
+	        top-right-radius:    $standard-border-radius;
+	        bottom-right-radius: $standard-border-radius;
+        }
       }
     }
   }
 
   &.button-panel {
-    > span, a {
+    > span,
+    a {
+
       > span.check {
-        font-family: 'FontAwesome';
-        width: 1.2em;
-        display: inline-block;
+        @include icon-font;
+        width:      1.2em;
+        display:    inline-block;
         text-align: left;
+
         &:not(.checked)::after {
           content: $fa-check;
         }
+
         &.checked::after {
           content: $fa-checked;
         }
+
         > span {
           @include blind;
         }
@@ -68,23 +71,27 @@
   }
 
   &.button-view {
-    display: block;
-    position: absolute;
-    right: 0;
-    top: 0;
-    z-index: 20;
-    margin: 0;
-    padding: 0;
-    width: $right-view-distance;
+    position:  absolute;
+    display:   block;
+    right:     0;
+    top:       0;
+    z-index:   20;
+    margin:    0;
+    padding:   0;
+    width:     $right-view-distance;
+    font-size: 10pt;
+    color:     $nearly-white;
+
     > span:first-child {
       margin-top: $border-size
     }
+
     > span {
-      display: block !important;
-      border-width: 0;
-      text-decoration:none;
-      text-align: center;
-      font-style: normal;
+      display:         block !important;
+      border-width:    0;
+      text-decoration: none;
+      text-align:      center;
+      font-style:      normal;
       
       &.download::after {
 	      content: $fa-download;
@@ -105,22 +112,24 @@
   }
 }
 
-.button-group.button-view {
-  font-size: 10pt;
-  color: $nearly-white;
-}
-
 
 ul.menu.button-group-list {
   border-top-right-radius: 8px;
-  font-size: 10pt;
-  position: fixed;
-  left: 0;
+  position:   fixed;
+  font-size:  10pt;
+  left:       0;
   text-align: left;
-  margin: -1 * $border-size;
+  margin:     -1 * $border-size;
   margin-top: 0;
+
   > li:first-of-type {
 	  border-top-right-radius: 5px;
   }
 }
 
+.button-icon {
+  @include icon-font;
+  > span {
+    @include blind;
+  }
+}
diff --git a/dev/scss/main/helper.scss b/dev/scss/main/helper.scss
index ec33901..31b07fa 100644
--- a/dev/scss/main/helper.scss
+++ b/dev/scss/main/helper.scss
@@ -1,5 +1,8 @@
+@import "../util"
+
 // Make cursor helper
-body.helper, body.helper a {
+body.helper,
+body.helper a {
   cursor: help !important;
 }
 
diff --git a/dev/scss/main/intro.scss b/dev/scss/main/intro.scss
index 7c71e1b..8f83175 100644
--- a/dev/scss/main/intro.scss
+++ b/dev/scss/main/intro.scss
@@ -1,4 +1,10 @@
+@import "../util";
+
+/**
+ * Styles for the intro page
+ */
 div.intro {
+
   // Visited links
   a:visited {
     color: $darkest-orange
@@ -6,11 +12,11 @@
 
   div.announcement {
     background-color: $light-orange;
-    padding: $base-padding;
-    border: 5px dashed $dark-orange;
-    border-radius: 1em;
-    width: 90%;
-    margin: auto;
+    padding:          $base-padding;
+    border:           5px dashed $dark-orange;
+    border-radius:    1em;
+    width:            90%;
+    margin:           auto;
   }
 }
 
diff --git a/dev/scss/main/introjs-ids.scss b/dev/scss/main/introjs-ids.scss
index 01c751e..d97013a 100644
--- a/dev/scss/main/introjs-ids.scss
+++ b/dev/scss/main/introjs-ids.scss
@@ -1,28 +1,32 @@
 @import "../util";
 
+/**
+ * Styles overriding introJS styles
+ */
+
 .introjs-helperLayer {
-    background-color:transparent;
-    }
+  background-color: transparent;
+}
  
-.introjs-tooltip.gTstartSearch{
-    max-width: 500px;
-    }
+.introjs-tooltip.gTstartSearch {
+  max-width: 500px;
+}
 
 
 .tgreeting {
-    font-weight: bold;
-    color: $darkest-orange;
-    }
+  font-weight: bold;
+  color:       $darkest-orange;
+}
 
-.pfirstStep{
-    width: 500px;
-    }
+.pfirstStep {
+  width: 500px;
+}
 
 .introjs-donebutton {
-    float: right;
-    margin-left: 5px;
-    }
+  float:       right;
+  margin-left: 5px;
+}
  
-.introjs-skipbutton{
-    color: $black;
-    }
+.introjs-skipbutton {
+  color: $black;
+}
diff --git a/dev/scss/main/koralquery.scss b/dev/scss/main/koralquery.scss
index d6d4818..53dd64d 100644
--- a/dev/scss/main/koralquery.scss
+++ b/dev/scss/main/koralquery.scss
@@ -1,7 +1,9 @@
 @charset "utf-8";
 @import "../util";
 
-$border-size: 2px;
+/**
+ * Styles for the KoralQuery view.
+ */
 
 #koralquery {
   white-space: pre;
@@ -9,13 +11,14 @@
     // TODO:
     //   Mark this with result-view
     background-color: $nearly-white;
-    overflow-x: auto;
-    font-size: 85%;
+    overflow-x:       auto;
+    font-size:        85%;
+
     margin: {
-      top: 2pt;
-      right: $right-view-distance; // 3em;
+      top:    2pt;
+      right:  $right-view-distance;
       bottom: 2pt;
-      left: 2pt;
+      left:  2pt;
     }
   }
 }
diff --git a/dev/scss/main/kwic.scss b/dev/scss/main/kwic.scss
index 4a3ecce..f207045 100644
--- a/dev/scss/main/kwic.scss
+++ b/dev/scss/main/kwic.scss
@@ -1,389 +1,373 @@
 @charset "utf-8";
 @import "../util";
 
-$border-size: 2px;
+/**
+ * Styles for the KWIC view.
+ */
+
 $font-size: 10pt;
 
 #search {
-  position: relative;
+  position:      relative;
   margin-bottom: 30px;
-  overflow: visible;
-//  margin-top: 14pt;
-}
+  overflow:      visible;
 
-#search > ol {
-  overflow-x: hidden;
-  overflow-y: visible;
-  width: auto;
-  text-indent: 0;
-  list-style-type: none;
-  margin: 0;
-  padding: 0;
-  border: $result-border-size solid $kwic-border;
-  font-size: $font-size;
+  div.matchinfo {
+    display: none;
+  }
 
-  > li {
-    display: flex;
-    flex-direction: row;
-    flex-wrap: nowrap;
-    align-items: stretch;
-    align-content: stretch;
+  > ol {
+    overflow-x:      hidden;
+    overflow-y:      visible;
+    width:           auto;
+    text-indent:     0;
+    list-style-type: none;
+    margin:          0;
+    padding:         0;
+    border:          $result-border-size solid $kwic-border;
+    font-size:       $font-size;
 
-    div.meta {
-      position: relative;
-      flex: 1 0;
-      min-width: 12em;
-      max-width: 15em;
+    > li {
+      display:        flex;
+      flex-direction: row;
+      flex-wrap:      nowrap;
+      align-items:    stretch;
+      align-content:  stretch;
+      
+      border: {
+        style: solid;
+        color: $dark-orange;
+        width: 0;
+      }
 
-      // Tiny hack
-      &:before {
-        content:" ";
-        display:inline-block;
-        height:100%;
-        vertical-align:middle;
+      // Actions
+      .button-group.button-view {
+        display: none;
+      }
+
+      // Zebra style
+      &:nth-of-type(even) div.match-main div.match-wrap {
+        background-color: $kwic-line-even;
+      }
+
+      // References
+      p.ref {
+        display: none;
       }
       
-      text-align: left;
-      // cursor: initial;
-      width: 2px;
-      z-index: 5;
-      overflow-y: hidden;
-      overflow-x: hidden;
-      text-overflow: ellipsis;
-      white-space: nowrap;
-      background-color: lighten($middle-grey, 5%);
-      // @include light-noise;
-      border: {
-        color: $dark-grey;
-        style: solid;
-        width: 2px 1px 0 0;
+      div.meta,
+      div.match-main {
+        position: relative;
+	      cursor:   pointer;
       }
-      &:empty {
-        border-width: 0 1px 0 0;
+
+      div.match-main {
+        display:  block;
+        flex:     7 0;
+        z-index:  4;
+        overflow: hidden;
+
+        > div.match-wrap {
+          width:            99999%;
+	        margin-left:      -49999.5%;
+	        background-color: $kwic-line-noneven;
+	        overflow-x:       hidden;
+	        overflow-y:       visible;
+	        white-space:      normal;
+        }
       }
-      &.flip {
-        background-color: lighten($middle-grey, 17%);
+
+      div.meta {
+        flex:             1 0;
+        min-width:        12em;
+        max-width:        15em;
+        text-align:       left;
+        width:            2px;
+        z-index:          5;
+        overflow-y:       hidden;
+        overflow-x:       hidden;
+        text-overflow:    ellipsis;
+        white-space:      nowrap;
+        background-color: lighten($middle-grey, 5%);
+        color:            $nearly-white;
+        font-size:        75%;
+        padding:          0 5pt;
+
+        border: {
+          color: $dark-grey;
+          style: solid;
+          width: 2px 1px 0 0;
+        }
+
+        // Tiny hack
+        &:before {
+          content:        " ";
+          display:        inline-block;
+          height:         100%;
+          vertical-align: middle;
+        }
+        
+        &:empty {
+          border-width: 0 1px 0 0;
+        }
+
+        &.flip {
+          background-color: lighten($middle-grey, 17%);
+        }
       }
-      color: $nearly-white;
-      font-size: 75%;
-      padding: 0 5pt;
-    }
-    &:first-of-type div.meta {
-      border-top-width: 0;
-    }
-    &:last-of-type div.meta {
-      border-bottom-width: 0;
+
+      &:first-of-type div.meta {
+        border-top-width: 0;
+      }
+
+      &:last-of-type div.meta {
+        border-bottom-width: 0;
+      }
     }
   }
 }
 
-#search > ol > li {
-  border: {
-    style: solid;
-    color: $dark-orange;
-    width: 0;
-  }
-}
 
-#search {
-  div.meta, div.match-main {
-    position: relative;
-	  cursor: pointer;
-  }
-  /*
-	    &:not(.active):not(:target) {
-        &:nth-of-type(even) div.main-col {
+/**
+ * Snippet rules
  */
-  div.match-main {
-    display: block;
-    flex: 7 0;
-    z-index: 4;
-    overflow: hidden;
-
-    > div.match-wrap {
-      width: 99999%;
-	    margin-left: -49999.5%;
-	    background-color: $kwic-line-noneven;
-	    overflow-x: hidden;
-	    overflow-y: visible;
-	    white-space: normal;
-    }
-  }
-}
-
-#search ol li:nth-of-type(even) div.match-main div.match-wrap {
-  background-color: $kwic-line-even;
-}
-
-
 div.snippet {
 	text-overflow: ellipsis;
-	text-indent: 0;
-	text-shadow: $light-shadow;
-  font-size: 0;
-  white-space: nowrap !important;
+	text-indent:   0;
+	text-shadow:   $light-shadow;
+  font-size:     0;
+  white-space:   nowrap !important;
 
   > span, mark {
-	  padding: 5pt 0 6pt 0;
+	  padding:   5pt 0 6pt 0;
     font-size: $font-size;
-    // white-space: nowrap;
-    // > span {
-      // white-space: nowrap;
-    // }
   }
-  > mark, > span.match {
+
+  > mark,
+  > span.match {
     font-weight: bold;
     color: $black;
     text-shadow: none;
     padding-left: 4pt;
     padding-right: 2pt;
   }
+
   > span.match > span.cutted::after {
+    @include icon-font;
     content: $fa-cut;
-    font-family: FontAwesome;
+    color:   $light-green;
+
     padding: {
-      left: 4pt;
+      left:  4pt;
       right: 4pt;
     }
-    color: $light-green;
-  }
-}
-
-
-
-#search div.matchinfo {
-  display: none;
-}
-
-#search {
-  li.active div.matchinfo {
-    display: block;
   }
 
-  li.active + li.active {
-    border-top: $border-size solid $light-grey;
-    padding-top: 3 * $border-size;
-    // > ul.action.right {
-    .button-group.button-view {
-      padding-top: 3 * $border-size;
-    }
+  &.startMore:before,
+  &.endMore:after {
+    content:       "…";
+    padding-left:  2pt;
+    padding-right: 2pt;
   }
-}
 
-
-
-/*
-#search div.match-main {
-  position: relative;
-  z-index: 4;
-  > div.match-wrap {
-    margin-left: -49999.5%;
-    width: 99999%;
-    overflow-x: hidden;
-    overflow-y: visible;
-    position: relative;
-    box-sizing: border-box;
+  // Flags
+  div.flag {
+    position:           absolute;
+    height:             100%;
+    top:                0;
+    left:               0;
+    width:              11px;
+    background-color:   $dark-orange;
+    border-right:       1px solid $darkest-orange;
   }
 }
-*/
-
-div.snippet.startMore:before,
-div.snippet.endMore:after {
-  content: "…";
-  padding-left: 2pt;
-  padding-right: 2pt;
-}
-
-/**
- * flag
- */
-div.snippet div.flag {
-  position: absolute;
-  height: 100%;
-  top: 0;
-  left: 0;
-  width: 11px;
-  background-color: $dark-orange;
-  border-right-color: $nearly-white;
-  border-right: 1px solid $darkest-orange;
-}
-
-/**
- * References
- */
-
-#search > ol > li p.ref {
-  display: none;
-}
 
 
 /**
- * Active
+ * Active rules
  */
 body.no-js #search > ol > li:active,
 #search > ol > li.active,
 #search > ol > li:target {
+  position:         relative;
+  display:          block;
   background-color: $dark-orange;
-  display: block;
-  text-align: left;
-  position: relative;
-  border-width: 2px;
-  white-space: wrap;
-  height: auto;
-  width: auto;
+  text-align:       left;
+  border-width:     2px;
+  white-space:      wrap;
+  height:           auto;
+  width:            auto;
+  overflow:         hidden;
 
-  div.match-main > div.match-wrap {
-    cursor: default;
+  div.matchinfo {
+    display: block;
   }
-  .snippet {
-    white-space: normal !important;
+
+  + li.active {
+    border-top:  $border-size solid $light-grey;
+    padding-top: 3 * $border-size;
+
+    .button-group.button-view {
+      padding-top: 3 * $border-size;
+    }
   }
   
-  .snippet span {
-    display: inline !important;
+  .snippet {
+    white-space:      normal !important;
+	  padding:          2pt 0 5pt 5pt;
+    background-color: $light-orange;
+
+    span {
+      display: inline !important;
+    }
+
+	  > * {
+	    background-color: transparent;
+	  }
+
+    div.flag {
+      display: none;
+    }
+
+	  margin: {
+	    top:    0;
+	    right:  $right-view-distance;
+	    bottom: 0;
+	    left:   0;
+	  }
+
+	  > span {
+      line-height: 1.4em;
+      width:       auto;
+
+      &.context-left {
+        margin-left: 0;
+        display:     inline;
+        overflow:    visible;
+        text-align:  left;
+        width:       auto;
+      }
+	  }
   }
+  
   .button-group.button-view {
     display: block;
   }
-  div.match-wrap {
-    min-height: 20pt;
-    div.snippet {
-      
-	    background-color: $light-orange;
-	    > * {
-	      background-color: transparent;
-	    }
-      div.flag {
-        display: none;
-      }
-	    padding: 2pt 0 5pt 5pt;
-	    margin: {
-	      top: 0;
-	      right: $right-view-distance;
-	      bottom: 0;
-	      left: 0; // 5pt margin-top
-	    }
-	    > span {
-        line-height: 1.4em;
-        width: auto;
-        &.context-left {
-          margin-left: 0;
-          display: inline;
-          overflow: visible;
-          text-align: left;
-          width: auto;
-        }
-	    }
+
+  div.match-main {
+    display: block;
+    width:   100%;  
+
+    div.match-wrap {
+      cursor:           default;
+      min-height:       20pt;
+      background-color: $dark-orange;
+      width:            100%;
+      margin-left:      0;
+      overflow-x:       visible;
+      white-space:      wrap;
     }
   }
 
-  overflow: hidden;
-
   div.meta {
     display: none;
-    // visibility: hidden;
   }
-  div.match-main {
-    display: block;
-    width: 100%;
-  
-    div.match-wrap {
-      background-color: $dark-orange;
-      width: 100%;
-      margin-left: 0;
-      overflow-x: visible;
-      white-space: wrap;
-    }
-  }
+
   p.ref {
-    display: block;
-	  color: $nearly-white;
-	  padding: 3pt 10pt 3pt 3pt;
+    display:       block;
+	  color:         $nearly-white;
+	  padding:       3pt 10pt 3pt 3pt;
 	  padding-right: $right-view-distance;
-	  margin: 0pt;
-	  width: 100%;
-	  bottom: 0;
-	  z-index: 30;
+	  margin:        0pt;
+	  width:         100%;
+	  bottom:        0;
+	  z-index:       30;
+
 	  > span.sigle {
-	    font-size: 75%;
+	    font-size:      75%;
 	    vertical-align: top;
-	    color: $light-orange;
-	    float: right;
+	    color:          $light-orange;
+	    float:          right;
 	  }
   }
 }
-    
-#search ol span.context-left {
-  display: inline-block;
-  width: 50.01%;
-  text-align: right;
-}
 
 
 /**
- * Right aligned
+ * Alignment rules
  */
-
-#search ol.align-right {
-  text-align: right;
-
-  div.match-main span.context-right {
-    display: inline-block;
-    width: 49.915%;
-    text-align: left;
-  }
-}
-
-/**
- * Center aligned
- */
-#search ol.align-center {
-  div.match-main {
-    width: 100% !important;
-
-    > .match-wrap {
-      margin-left: 0;
-      position: relative;
-    }
+#search ol {
+  span.context-left {
+    display:    inline-block;
+    width:      50.01%;
+    text-align: right;
   }
 
-  li:not(.active) div.snippet {
-    white-space: normal;
-    text-align: center;
-    width: 100000pt;
-    margin-left: -50000pt;
+  // Right aligned
+  &.align-right {
+    text-align: right;
 
-    span.context-left {
-      display: inline-block;
-      text-align: right;
-      width: 40000pt;
-      margin-left: 70vw;
-    }
-
-    span.context-right {
-      display: inline-block;
+    div.match-main span.context-right {
+      display:    inline-block;
+      width:      49.915%;
       text-align: left;
-      width: 40000pt;
+    }
+  }
+
+  // Center aligned
+  &.align-center {
+    div.match-main {
+      width: 100% !important;
+
+      > .match-wrap {
+        position:    relative;
+        margin-left: 0;
+      }
+    }
+
+    li:not(.active) div.snippet {
+      white-space: normal;
+      text-align:  center;
+      width:       100000pt;
+      margin-left: -50000pt;
+
+      span.context-left {
+        display:     inline-block;
+        text-align:  right;
+        width:       40000pt;
+        margin-left: 70vw;
+      }
+
+      span.context-right {
+        display:     inline-block;
+        text-align:  left;
+        width:       40000pt;
+      }
     }
   }
 }
 
 
-// fix empty contexts
-#search ol span.context-left,
-#search ol span.context-right {
-  &:empty::after {
-    content: " ";
-    display: inline-block;
+/**
+ * Fix empty contexts
+ */
+#search ol span {
+  &.context-left,
+  &.context-right {
+    &:empty::after {
+      content: " ";
+      display: inline-block;
+    }
   }
 }
 
+
 /**
- * Highlights
+ * Highlight rules
  */
 mark {
   background-color: inherit;
-  color: inherit;
+  color:            inherit;
 }
 
 mark > mark,
@@ -391,8 +375,8 @@
 .level-0 {
   border-bottom-width: 2px;
   border-bottom-style: solid;
-  padding-bottom: 0px !important;
-  font-style: normal;
+  padding-bottom:      0px !important;
+  font-style:          normal;
 }
 
 mark > mark > mark,
@@ -423,11 +407,3 @@
 .class-2 { border-color: $kwic-highlight-2; }
 .class-3 { border-color: $kwic-highlight-3; }
 .class-4 { border-color: $kwic-highlight-4; }
-
-
-/**
- * Actions
- */
-#search > ol > li .button-group.button-view {
-  display: none;
-}
diff --git a/dev/scss/main/logos.scss b/dev/scss/main/logos.scss
index 705ea43..3b87e96 100644
--- a/dev/scss/main/logos.scss
+++ b/dev/scss/main/logos.scss
@@ -1,59 +1,66 @@
 @charset "utf-8";
 @import "../util";
 
+/**
+ * Rules for logos.
+ */
 .logo {
   &::after {
     content: "" !important;
   }
+
   > * {
     background: {
-      repeat: no-repeat;
-      size: 90%;
+      repeat:   no-repeat;
+      size:     90%;
       position: 50% 50%;
     }
+
     > span {
-      margin-left: -30000px;
+      @include blind;
     }
   }
 }
 
+
 /**
  * Background image for the front page
  */
 #kalamar-bg {
   position: fixed;
-  height: 110%;
-  width: 175%;
-  top: 0;
-  z-index: -5000;
-  opacity: .1;
+  height:   110%;
+  width:    175%;
+  top:      0;
+  z-index:  -5000;
+  opacity:  .1;
   background: {
-    image:url('#{$img-path}/korap-bg-kalamar.svg');
-    size: 50%;
-    repeat: no-repeat;
+    image:    url('#{$img-path}/korap-bg-kalamar.svg');
+    size:     50%;
+    repeat:   no-repeat;
     position: 50% 50%;
   }
 }
 
+
 /**
  * Logo table of the front page
  */
 #logos {
-  position: relative;
-  text-align: right;
-  font-size: 85%;
-  right: 0;
-  width: 100%;
+  position:    relative;
+  text-align:  right;
+  font-size:   85%;
+  right:       0;
+  width:       100%;
   margin-left: ($standard-margin / 2);
-
   padding-left: 60%;
+
   > div {
-    border-top: 26px solid $dark-orange;
+    border-top:    26px solid $dark-orange;
     padding-right: 2em;
   }
   p {
     text-align: left;
-    display: inline-block;
+    display:    inline-block;
   }
 }
 
@@ -62,12 +69,10 @@
  * Logo: Institute for German Language
  */
 #ids-logo {
-  display: block;
-  width: (631 / 30) + em;
-  height: (200 / 30) + em;
-  background: {
-    image:url('#{$img-path}/ids-leibniz-institute-for-the-german-language.svg');
-  }
+  display:          block;
+  width:            (631 / 30) + em;
+  height:           (200 / 30) + em;
+  background-image: url('#{$img-path}/ids-leibniz-institute-for-the-german-language.svg');
 }
 
 
@@ -75,21 +80,21 @@
  * Logo: KorAP
  */
 h1 {
-  position: absolute;
-  margin: 0;
-  margin-left:15px;
-  left: 0;
-  top: 0;
-  width: 7.8em;
-  height: 2.4em;
-  z-index: 105;
+  position:    absolute;
+  margin:      0;
+  margin-left: 15px;
+  left:        0;
+  top:         0;
+  width:       7.8em;
+  height:      2.4em;
+  z-index:     105;
   background: {
-    size: 72%;
+    size:  72%;
     image: url('#{$img-path}/korap-logo-kalamar.svg');
   }
 }
 
 #overview {
   text-align: center;
-  width: 100%;
+  width:      100%;
 }
diff --git a/dev/scss/main/main.scss b/dev/scss/main/main.scss
index 67b48fa..c49ceb1 100644
--- a/dev/scss/main/main.scss
+++ b/dev/scss/main/main.scss
@@ -2,74 +2,65 @@
 @import "kwic";        // Kwic view information
 @import "logos";       // Logo images
 @import "matchinfo";   // Match table
-@import "tree";        // Tree view
 @import "pagination";  // Pagination
 @import "query";       // View query
 @import "resultinfo";  // Information on results
 @import "tutorial";    // Embedded and non-embedded tutorial
 @import "koralquery";  // KoralQuery
-@import "tagger";      // Tagger
 @import "alertify";    // Styling alerts
 @import "intro";       // Intro page
 @import "buttongroup"; // Button groups
 @import "panel";       // Base panel system
-@import "plugin";      // Plugin mechanism
 @import "introjs";     // Guided Tour
 @import "introjs-ids"; // Guided Tour: IDS specific 
 @import "oauth";       // OAuth Management styles
+// @import "tagger";   // Tagger
+
+@import "../util";
 
 
 main {
+  padding-bottom: 20pt;
+
   margin: {
-    left: $standard-margin; 
+    left:  $standard-margin; 
     right: ($standard-margin / 2);
   }
-  padding-bottom: 20pt;
+
   &.embedded {
     margin: {
-      left: 14px;
+      left:  14px;
       right: 14px;
     }
   }
+
   p {
     text-align: justify;
-    hyphens: auto;
+    hyphens:    auto;
   }
 
   h2#page-top {
-    margin-top: 0;
+    margin-top:  0;
     padding-top: 1em;
   }
 
   &.page {
     margin-left: $logo-left-distance + 15px;
-    p,li, dd, dt {
+    p,
+    li,
+    dd,
+    dt {
       code {
         background-color: $ids-grey-2;
-        color: $ids-grey-1;
-        padding: 0 .5em;
-        border-radius: $standard-border-radius;
+        color:            $ids-grey-1;
+        padding:          0 .5em;
+        border-radius:    $standard-border-radius;
       }
     }
   }
 
   p.hint {
-    margin: 0 auto;
+    margin:     0 auto;
     text-align: center;
   }
 }
-
-blockquote {
-  border-radius: $standard-border-radius;
-  padding: 2pt 5pt 2pt 20pt;
-  margin: 0;
-  border-left: 5px solid $ids-blue-1;
-  background-color: $ids-blue-2;
-  color: $ids-blue-1;
-
-  &.bug, &.missing {
-    border-left-color: $dark-red;
-    background-color: $middle-red;
-    color: $nearly-white;
-  }
-}
diff --git a/dev/scss/main/matchinfo.scss b/dev/scss/main/matchinfo.scss
index 3039d03..a0f98c4 100644
--- a/dev/scss/main/matchinfo.scss
+++ b/dev/scss/main/matchinfo.scss
@@ -1,286 +1,47 @@
 @charset "utf-8";
 @import "../util";
+@import "view/matchtable";
+@import "view/matchtree";
+@import "view/metatable";
 
-$left-width: 176px;
-$border-size: 2px;
-$left-distance: $left-width + ($border-size * 2);
 
 /**
- * Table view
- *
- * The table view is complicated, as the
- * first column has to be static.
+ * General matchinfo styles.
  */
-@mixin matchinfo-head {
-  // border-width: 0px;
-  border-top: $border-size solid $darker-orange; // #ff8000;
-  width: $left-width / 2;
-}
 
-div.matchinfo:empty {
-  display: none !important;
-}
+// TODO: This should be moved to panel/match
 
 div.matchinfo {
-  position: relative;
-  width: 100%;
+  position:    relative;
+  width:       100%;
   padding-top: $border-size;
-  //  background-color: $dark-orange;
-  height: auto;
-  font-size: 10pt;
-  text-align: left;
-}
+  height:      auto;
+  font-size:   10pt;
+  text-align:  left;
 
-  
-div.matchtable > div {
-  z-index: 20;
-  margin-left: $left-distance - ($border-size / 2);
-  margin-right: $right-view-distance;
-  padding: 0;
-  overflow-x: auto;
-  overflow-y: visible;
-  width: auto;
-  
-  table {
-    display: table;
-    border-collapse: separate;
-    border-spacing: 0px;
-  }
-  th {
-    color: $nearly-white;
+  &:empty {
+    display: none !important;
   }
 
-  // Use matchinfo cells for query creation
-  td,
-  tbody th,
-  thead th:not(:nth-child(1)):not(:nth-child(2)):not(.cutted) {
-    cursor: pointer;
-  }
-  td:empty {
-    cursor: default;
-    // Fix for empty annotation lines:
-    &::after {
-      content: " ";
-      white-space: pre;
-    }
-  }
-  tr {
-    outline: none;
-    // equal to dd.chosen
-    td.chosen,
-    th.chosen,
-    div.chosen {
-      background-color: $light-green !important;
-      color: $nearly-white;
-      // transition: color 0.1s, background-color 0.15s ease-out;
-    }
-  }
-
-  thead {
-    tr th {
-      background-color: $darker-orange;
-      border-top-width: 0px !important;
-      text-align: center;
-      &:nth-of-type(1), &:nth-of-type(2) {
-	                        text-align: left;
-                        }
-      &.mark {
-        background-color: $darkest-orange; // #f6a800;
-      }
-
-      &.cutted {
-        background-color: $light-orange;
-        &::after {
-          content: $fa-cut;
-          font-family: FontAwesome;
-          padding: {
-            left: 4pt;
-            right: 4pt;
-          }
-          color: $light-green;
-        }
-      }
-    }
-  }
-  
-  tbody {
-    > tr:nth-of-type(1) > th {
-      border-top-color: transparent;
-    }
-  }
-  tr {
-    /**
-     * The first two columns.
-     */
-    > th:nth-of-type(1),
-    > th:nth-of-type(2) {
-      position: absolute;
-      z-index: 80;
-      vertical-align: middle;
-      left: 0px;
-      @include matchinfo-head;
-    }
-    > th:nth-of-type(2) {
-      left: ($left-width / 2) + $border-size;
-    }
-
-    // Includes header line as well
-    > * {
-      @include cell-info;
-      border: ($border-size / 2) solid $dark-orange;
-    }
-  }
-  tr > td {
-    background-color: $middle-orange; // $nearly-white;
-    white-space: nowrap;
-    vertical-align: top;
-    text-align: center;
-    &.mark {
-      background-color: $light-orange;
-    }
-  }
-  tr:nth-child(even) > td {
-    background-color: $light-orange;
-    &.mark {
-      background-color: $middle-orange;
-    }
-  }
-
-  // table for key-value pairs
-  td.matchkeyvalues {
-    padding: 0;
-    > div {
-      @include cell-info;
-      > span {
-        color: $darkest-orange;
-        text-align: right;
-        &::after {
-          content: ":"
-        }
-        padding-right: .5em;
-      }
-    }
+  .view + .view {
+    margin-top: 4 * $border-size !important;
   }
 }
 
 
-div.metatable, div.matchtable {    
-    background-color: $dark-orange;
-    position: relative;
-}
-
-/**
- * Label
- */
-// The metatable branch was experimental
+div.metatable,
+div.matchtable,
 div.matchtree {
-  h6 {
-    display: inline;
-    font-size: inherit;
-    color: $nearly-white;
-    margin: 0;
-    padding: 0 !important;
-    float: left;
-    > span { // , > div {
-      @include matchinfo-head;
-      @include cell-info;
-      display: inline-block !important;
-      margin: 0;
-      &:nth-of-type(2) {
-	      margin-left: $border-size;
-      }
-    }
-  }
-}
-
-/**
-  * Tree view
-  */
-div.matchtree {
-  position: relative;
-  overflow-x: hidden;
-  overflow-y: visible;
-  padding: 0;
-  margin-top: 1pt;
+  position:         relative;
   background-color: $dark-orange;
-
-  > div {
-    position: unset;
-    z-index: 4;
-    overflow-x: auto;
-    margin: $border-size;
-    margin-left: $left-distance;
-    margin-right: $right-view-distance;
-
-    background-color: $light-orange;
-  }
 }
 
 div.button-group.button-panel.button-matchinfo {
-  display: inline-block;
+  display:      inline-block;
   margin-right: .5em;
+
   > span {
-    position: relative;
+    position:   relative;
     box-shadow: none;
   }
 }
-
-div.matchinfo .view + .view {
-  margin-top: 4 * $border-size !important;
-}
-
-
-// Metatable
-div.metatable > dl {
-  margin-right: $right-view-distance;
-  margin-top: $border-size;
-
-  > div {
-    border-color: $dark-orange;
-    > * {
-      padding: .2em;
-    }
-    > dt {
-      background: $darker-orange;
-      color: $nearly-white;
-      width: 12.5em;
-    }
-    > dd {
-      background-color: $light-orange;
-      cursor: pointer;
-    }
-    > dd[data-type="type:store"],
-    > dd[data-type="type:attachement"]{
-      background-color: $middle-orange;
-      cursor: default;
-
-      a {
-        color: inherit;
-      }
-    }
-    
-    > dd.metakeyvalues {
-      padding:0;
-      > div {
-        padding: .2em;
-        &::before {
-          content: "\2022\00A0";
-          color: $dark-orange
-        }
-      }
-    }
-
-    // equal to td.chosen
-    > dd.chosen, > dd > div.chosen {
-      background-color: $light-green !important;
-      color: $nearly-white;
-    }
-  }
-}
-
-// This is a temporary feature to disable
-// corpusByMatch assistant. See corpusByMatch.js
-// for reasons.
-div.metatable > dl.cbm-disabled > div > dd {
-  cursor: default !important;
-}
diff --git a/dev/scss/main/oauth.scss b/dev/scss/main/oauth.scss
index 0b37285..9dca691 100644
--- a/dev/scss/main/oauth.scss
+++ b/dev/scss/main/oauth.scss
@@ -1,28 +1,35 @@
+@import "../util";
+
+/**
+ * Styles for OAuth management form.
+ */
+
 ul.client-list {
   padding-left: 1.5em;
+
   li.client {
     list-style-type: none;
-    span.client-name {
-      &::before {
-        margin-left: -1.5em;
-      }
-      font-weight: bold;
+
+    span.client-name::before {
+      margin-left: -1.5em;
     }
+
     span.client-desc {
       font-size: 70%;
-      display: block;
+      display:   block;
     }
   }
 }
 
 span.client-name {
+  font-weight: bold;
+
   &::before {
-    display: inline-block;
-    width: 1.5em;
-    content: $fa-plugin;
-    font-family: 'FontAwesome';
-    color: $ids-blue-1;
+    @include icon-font;
+    display:   inline-block;
+    width:     1.5em;
+    content:   $fa-plugin;
+    color:     $ids-blue-1;
     font-size: 100%;
   }
-  font-weight: bold;
 }
\ No newline at end of file
diff --git a/dev/scss/main/pagination.scss b/dev/scss/main/pagination.scss
index 9704638..daa9bd9 100644
--- a/dev/scss/main/pagination.scss
+++ b/dev/scss/main/pagination.scss
@@ -1,54 +1,52 @@
 @charset "utf-8";
 @import "../util";
 
-$border-size : 2px;
-
 /**
  * The pagination view
+ *
+ * <div id="pagination">
+ *   <a rel="prev"><span><i class="fa fa-caret-left"></i></span></a>
+ *   <a rel="self"><span>1</span></a>
+ *   <a href="#p=2"><span>2</span></a>
+ *   <a href="#3"><span>3</span></a>
+ *   <span><i class="fa fa-ellipsis-h"></i></span>
+ *   <a href="#67"><span>67</span></a>
+ *   <a rel="next" href="#2"><span><i class="fa fa-caret-right"></i></span></a>
+ * </div>
  */
-/*
-<div id="pagination">
-  <a rel="prev"><span><i class="fa fa-caret-left"></i></span></a>
-  <a rel="self"><span>1</span></a>
-  <a href="#p=2"><span>2</span></a>
-  <a href="#3"><span>3</span></a>
-  <span><i class="fa fa-ellipsis-h"></i></span>
-  <a href="#67"><span>67</span></a>
-  <a rel="next" href="#2"><span><i class="fa fa-caret-right"></i></span></a>
-</div>
-*/
 #pagination {
-  /**
+  /*
    * Always in fixed position.
    * This may need to be overwritten in case multiple
    * paginations have to be activated.
    */
-  font-size: 0;
-  position: fixed;
-  right: ($standard-margin / 4);
-  bottom: ($standard-margin / 2);
-  z-index: 35;
-  padding: 0;
-  height: auto;
+  position:    fixed;
+  font-size:   0;
+  right:       ($standard-margin / 4);
+  bottom:      ($standard-margin / 2);
+  z-index:     35;
+  padding:     0;
+  height:      auto;
   line-height: 0;
 
   > a {
-    margin: 0;
+    margin:    0;
     font-size: 10pt;
-    padding: 0;
+    padding:   0;
 
     > span {
-      box-shadow: $choose-box-shadow;
       @include standard-text-padding;
       @include choose-item;
-      display: inline-block;
+      box-shadow:  $choose-box-shadow;
+      display:     inline-block;
       line-height: 2em;
-      text-align: center;
+      text-align:  center;
+
       border: {
-	top-width: $border-size;
-	bottom-width:  $border-size;
-	top-style: solid;
-	bottom-style: solid;
+	      top-width:    $border-size;
+	      bottom-width: $border-size;
+	      top-style:    solid;
+	      bottom-style: solid;
       }
     }
 
@@ -58,63 +56,70 @@
 
     &.ellipsis > span {
       > span {
-	@include blind;
+	      @include blind;
       }
+
       &::after {
-	font-family: 'FontAwesome';
-	content: $fa-elipsis;
-	line-height: 1em;
+	      @include icon-font;
+	      content:     $fa-elipsis;
+	      line-height: 1em;
       }
     }
 
     &[rel=self] > span {
       @include choose-active;
+
       border {
-	left-width: $border-size;
-	right-width: $border-size;
-	left-style: solid;
-	right-style: solid;
+	      left-width:  $border-size;
+	      right-width: $border-size;
+	      left-style:  solid;
+	      right-style: solid;
       }
     }
 
     &[rel=prev] > span {
       border: {
-	top-left-radius: $standard-border-radius;
-	bottom-left-radius: $standard-border-radius;
-	left-width: $border-size;
-	left-style: solid;
+	      top-left-radius:    $standard-border-radius;
+	      bottom-left-radius: $standard-border-radius;
+	      left-width:         $border-size;
+	      left-style:         solid;
       }
+
       > span {
-	@include blind;
+	      @include blind;
       }
+
       &::after {
-	font-family: 'FontAwesome';
-	content: $fa-previous;
-	line-height: 1em;
+        @include icon-font;
+	      content:     $fa-previous;
+	      line-height: 1em;
       }
     }
 
     &[rel=next] > span {
       border: {
-	top-right-radius: $standard-border-radius;
-	bottom-right-radius: $standard-border-radius;
-	right-width: $border-size;
-	right-style: solid;
+	      top-right-radius:    $standard-border-radius;
+	      bottom-right-radius: $standard-border-radius;
+	      right-width:         $border-size;
+	      right-style:         solid;
       }
+
       > span {
-	@include blind;
+	      @include blind;
       }
+
       &::after {
-	font-family: 'FontAwesome';
-	content: $fa-next;
-	line-height: 1em;
+        @include icon-font;
+	      content:     $fa-next;
+	      line-height: 1em;
       }
     }
+
     &:link:hover,
     &:link:focus {
       outline: none;
       span {
-	@include choose-hover;
+	      @include choose-hover;
       }
     }
   }
diff --git a/dev/scss/main/panel.scss b/dev/scss/main/panel.scss
index 55d0c9c..adddf71 100644
--- a/dev/scss/main/panel.scss
+++ b/dev/scss/main/panel.scss
@@ -1,14 +1,18 @@
 @import "../util";
 
+/**
+ * Base styles for all panels and views
+ */
+
 div.panel {
   position: relative;
-  width: 100%;
-  display: block;
+  width:    100%;
+  display:  block;
 }
 
 div.view {
-  position: relative;
+  position:    relative;
   padding-top: $border-size;
-  display: block;
-  width: 100%;
+  display:     block;
+  width:       100%;
 }
diff --git a/dev/scss/main/plugin.scss b/dev/scss/main/plugin.scss
deleted file mode 100644
index 42867f6..0000000
--- a/dev/scss/main/plugin.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-@import "../util";
-
-div.view.widget {
-  padding-right: $right-view-distance;
-  > iframe {
-    margin: 0;
-    box-sizing: border-box;
-    padding: 0;
-    width: 100%;
-    overflow-x: auto;
-  }
-}
\ No newline at end of file
diff --git a/dev/scss/main/resultinfo.scss b/dev/scss/main/resultinfo.scss
index d767d19..67b4157 100644
--- a/dev/scss/main/resultinfo.scss
+++ b/dev/scss/main/resultinfo.scss
@@ -1,102 +1,113 @@
 @charset "utf-8";
 @import "../util";
 
+/**
+ * Rules applicable for the result panel
+ */
+
+// TODO: This should be moved to panel/result
 
 #resultinfo {
-  clear: both;
-  text-align: right;
+  clear:       both;
+  text-align:  right;
   line-height: 1.5em;
-  min-height: 1.5em;
-  margin-top:.4em;
-  font-size: 10pt;
+  min-height:  1.5em;
+  margin-top:  .4em;
+  font-size:   10pt;
+
   p.found {
-    display: inline;
-    padding: 0;
-    margin: 0;
+    display:    inline;
+    padding:    0;
+    margin:     0;
     text-align: right;
   }
+
+  /*
+   * TODO:
+   *   This rule should not be dependent on
+   *   whether something is found or not,
+   *   but whether #search contains a result,
+   *   e.g. when a result view is open in the
+   *   result panel. This should probably be
+   *   indicated by a class on the button group
+   *   rather than a class on the resultinfo.
+   */
+  &.found {
+    position:      relative;
+    margin-bottom: 0px;
+
+    .button-group > span {
+      margin-bottom:       0;
+      border-bottom-width: 0;
+      box-shadow:          none;
+
+      &:first-child {
+        border-bottom-left-radius: 0;
+      }
+
+      &:last-child {
+        border-bottom-right-radius: 0;
+      }   
+    }
+  }
 }
 
+
 div.result.panel .view {
-  border: 1px solid $kwic-border;
+  border:           1px solid $kwic-border;
   background-color: $dark-orange;
 }
 
+
 // Specify result button group layout
 .result.button-group.button-panel {
-  width: auto;
+  display:        inline-block;
+  width:          auto;
   vertical-align: bottom;
-  display: inline-block;
-  line-height: 1.3em;
+  line-height:    1.3em;
 
   > span {
-    line-height: 1.3em;
+    line-height:  1.3em;
     border-width: $result-border-size 0;
+
     &:first-child {
       border-left-width: $result-border-size;
     }
+
     &:last-child {
       border-right-width: $result-border-size;
     }
   }
-
-  // Define icons for result buttons
-  .button-icon {
-    &.align.left::after {
-      content: $fa-left-align;
-    }
-    &.align.right::after {
-      content: $fa-right-align;
-    }
-    &.align.center::after {
-      content: $fa-center-align;
-    }
-    &.show-kq::after {
-      content: $fa-code;
-    }
-  }
 }
 
-/*
- * TODO:
- *   This rule should not be dependent on
- *   whether something is found or not,
- *   but whether #search contains a result,
- *   e.g. when a result view is open in the
- *   result panel. This should probably be
- *   indicated by a class on the button group
- *   rather than a class on the resultinfo.
- */
-#resultinfo.found {
-  position: relative;
-  // z-index: 20;
-  margin-bottom: 0px;
-
-  .button-group > span {
-    margin-bottom: 0;
-    border-bottom-width: 0;
-    box-shadow: none;
-    &:first-child {
-      border-bottom-left-radius: 0;
-    }
-    &:last-child {
-      border-bottom-right-radius: 0;
-    }   
-  }
-}
-
-
 
 #total-results {
-  color: $total-results;
+  color:       $light-green;
   font-weight: bold;
 }
 
+
 .no-results {
-  margin: 0 auto;
+  margin:     0 auto;
   text-align: center;
   code {
     font-weight: bold;
   }
 }
 
+
+// Define icons for result buttons
+.button-icon {
+  &.align.left::after {
+    content: $fa-left-align;
+  }
+  &.align.right::after {
+    content: $fa-right-align;
+  }
+  &.align.center::after {
+    content: $fa-center-align;
+  }
+  &.show-kq::after {
+    content: $fa-code;
+  }
+}
diff --git a/dev/scss/main/tagger.scss b/dev/scss/main/tagger.scss
index c3a08be..d7ba90f 100644
--- a/dev/scss/main/tagger.scss
+++ b/dev/scss/main/tagger.scss
@@ -1,62 +1,70 @@
 @charset "utf-8";
 @import "../util";
 
-$border-size: 1px;
+/**
+ * Styles for tags.
+ */
+
+// Currently not used
+
 $tagcolor: rgba(0,0,0,0.5);
 
 .tagger {
-  display: table;
+  display:         table;
   border-collapse: collapse;
-  width: 100%;
-  font-size: 100%;
+  width:           100%;
+  font-size:       100%;
 
   // The tag list
   > div  {
-    display: table-cell;
-    font-size: inherit;
+    display:     table-cell;
+    font-size:   inherit;
     white-space: nowrap;
-    width: 0;
+    width:       0;
 
     // The tag
     > span {
-      font-size: 80%;
-      display: inline-block;
-      white-space: nowrap;
+      display:          inline-block;
+      font-size:        80%;
+      white-space:      nowrap;
       background-color: $dark-orange;
-      padding: 2px 6px;
-      color: $tagcolor;
-      text-shadow: 1px 1px 0px rgba(255,255,255,0.3);
-      margin-right: 2px;
-      box-shadow: $choose-box-shadow;
-      cursor: pointer;
+      padding:          2px 6px;
+      color:            $tagcolor;
+      text-shadow:      $light-shadow;
+      margin-right:     2px;
+      box-shadow:       $choose-box-shadow;
+      cursor:           pointer;
+
       border: {
-	width: $border-size;
-	style:solid;
-	color: rgba(0,0,0,0.3);
-	radius: $standard-border-radius;
+	      width:  $border-size;
+	      style:  solid;
+	      color:  rgba(0,0,0,0.3);
+	      radius: $standard-border-radius;
       }
+
       > span {
-	cursor: crosshair;
-	&::after {
-	  font-size: 70%;
-	  vertical-align: top;
-	  padding-left: 3px;
-	  color: $tagcolor;
-	  text-shadow: none;
-	  font-family: 'FontAwesome';
-	  content: $fa-close;
-	}
+	      cursor: crosshair;
+
+        &::after {
+          @include icon-font;
+	        font-size:      70%;
+	        vertical-align: top;
+	        padding-left:   3px;
+	        color:          $tagcolor;
+	        text-shadow:    none;
+	        content:        $fa-close;
+	      }
       }
     }
   }
 
   // The tag input field
   input[type=text] {
-    display: table-cell;
-    width: 100%;
-    border: none;
+    display:          table-cell;
+    width:            100%;
+    border:           none;
     background-color: $light-grey;
-    font-size: inherit;
+    font-size:        inherit;
   }
 }
 
diff --git a/dev/scss/main/tutorial.scss b/dev/scss/main/tutorial.scss
index 526a190..6ccc32e 100644
--- a/dev/scss/main/tutorial.scss
+++ b/dev/scss/main/tutorial.scss
@@ -1,45 +1,45 @@
 @charset "utf-8";
 @import "../util";
 
-$border-size: 2px;
+/**
+ * Rules for the embedded documentation.
+ */
 
 #tutorial {
-  position: fixed;
-  z-index: 9999;
-  top:    5%;
-  bottom: 5%;
-  left:   2%;
-  right:  2%;
-  padding-right: $right-view-distance;
-/*
-  padding: 0;
-  margin: 0;
-*/
+  position:         fixed;
+  z-index:          9999;
+  top:              5%;
+  bottom:           5%;
+  left:             2%;
+  right:            2%;
+  padding-right:    $right-view-distance;
   background-color: $nearly-white;
+  box-shadow:       $choose-box-shadow;
 
   .button-group.button-view {
     background-color: $middle-grey;
-    display: block;
-    height: 100%;
+    display:          block;
+    height:           100%;
   }
+
   border: {
-    width: 2 * $border-size;
-//    color: $dark-orange;
-    color: $dark-grey;
-    style: solid;
+    width:  2 * $border-size;
+    color:  $dark-grey;
+    style:  solid;
     radius: $standard-border-radius;
   }
-  box-shadow: $choose-box-shadow;
+
   iframe {
     border-width: 0;
     width: 100%;
+
     // Hack for a Firefox bug
     min-height: 100.1%;
     background: {
-      image:url('#{$img-path}/korap-bg-kalamar.svg');
-      repeat: no-repeat;
+      image:    url('#{$img-path}/korap-bg-kalamar.svg');
+      repeat:   no-repeat;
       position: center center;
-      size: 20%;
+      size:     20%;
     }
   }
 }
@@ -47,59 +47,23 @@
 body.embedded {
   background-color: $nearly-white;
   aside {
-/*
-    border-right: {
-      width: $border-size;
-      style: solid;
-    }
-*/
-    padding-top: 0;
     @include choose-item;
+    padding-top: 0;
     background-color: $middle-grey;
+
     > div {
-      position: relative;
-      top: 50%;
+      position:         relative;
+      top:               50%;
       -webkit-transform: translateY(-50%);
-      -ms-transform: translateY(-50%);
-      transform: translateY(-50%);
-      // margin-right: -1 * $border-size;
+      -ms-transform:     translateY(-50%);
+      transform:         translateY(-50%);
     }
   }
 }
 
-main.tutorial {
-  // Link to documentation
-  a.embedded-link::after {
-    font-family: FontAwesome;
-    white-space: nowrap;
-    content: " " + $fa-tutorial;
-    font-size: 75%;
-  }
-}
-
-dl {
-  margin: 0;
-  padding-bottom: .5em;
-  dt {
-    font-weight: bold;
-    abbr {
-      border-width: 0;
-      &[data-type=token]::after {
-	      color: $ids-blue-1;
-      }
-      &[data-type=span]::after {
-	      color: $ids-pink-1;
-      }
-      &::after {
-	      content: ' (' attr(title) ')';
-	      vertical-align: bottom;
-	      font-style: italic;
-	      font-weight: normal;
-	      font-size: 80%;
-      }
-    }
-  }
-}
-
-
-
+// Link to documentation
+main.tutorial a.embedded-link::after {
+  @include icon-font;
+  content:   " " + $fa-tutorial;
+  font-size: 75%;
+}
\ No newline at end of file
diff --git a/dev/scss/main/view/matchtable.scss b/dev/scss/main/view/matchtable.scss
new file mode 100644
index 0000000..6239c61
--- /dev/null
+++ b/dev/scss/main/view/matchtable.scss
@@ -0,0 +1,148 @@
+@import "../../util";
+
+/**
+ * Table view
+ *
+ * The table view is complicated, as the
+ * first column has to be static.
+ */
+div.matchtable {
+
+  > div {
+    z-index:      20;
+    margin-left:  $left-distance - ($border-size / 2);
+    margin-right: $right-view-distance;
+    padding:      0;
+    overflow-x:   auto;
+    overflow-y:   visible;
+    width:        auto;
+  }
+
+  table {
+    display:         table;
+    border-collapse: separate;
+    border-spacing:  0px;
+  }
+
+  th {
+    color: $nearly-white;
+  }
+
+  // Use matchinfo cells for query creation
+  td,
+  tbody th,
+  thead th:not(:nth-child(1)):not(:nth-child(2)):not(.cutted) {
+    cursor: pointer;
+  }
+
+  td {
+    &:empty {
+      cursor: default;
+      // Fix for empty annotation lines:
+      &::after {
+        content:     " ";
+        white-space: pre;
+      }
+    }
+
+    // table for key-value pairs
+    &.matchkeyvalues {
+      padding: 0;
+      > div {
+        @include cell-info;
+        > span {
+          color:         $darkest-orange;
+          text-align:    right;
+          padding-right: .5em;
+          &::after {
+            content: ":"
+          }
+        }
+      }
+    }
+  }
+
+  tr {
+    outline: none;
+
+    // equal to dd.chosen
+    td.chosen,
+    th.chosen,
+    div.chosen {
+      background-color: $light-green !important;
+      color:            $nearly-white;
+    }
+
+    /**
+     * The first two columns.
+     */
+    > th:nth-of-type(1),
+    > th:nth-of-type(2) {
+      @include matchinfo-head;
+      position:       absolute;
+      z-index:        80;
+      vertical-align: middle;
+      left:           0px;
+    }
+
+    > th:nth-of-type(2) {
+      left: ($left-width / 2) + $border-size;
+    }
+
+    // Includes header line as well
+    > * {
+      @include cell-info;
+      border: ($border-size / 2) solid $dark-orange;
+    }
+
+    > td {
+      background-color: $middle-orange;
+      white-space:      nowrap;
+      vertical-align:   top;
+      text-align:       center;
+      &.mark {
+        background-color: $light-orange;
+      }
+    }
+
+    &:nth-child(even) > td {
+      background-color: $light-orange;
+      &.mark {
+        background-color: $middle-orange;
+      }
+    }
+  }
+
+  thead th {
+    background-color: $darker-orange;
+    border-top-width: 0px !important;
+    text-align:       center;
+
+    &:nth-of-type(1),
+    &:nth-of-type(2) {
+	    text-align: left;
+    }
+
+    &.mark {
+      background-color: $darkest-orange;
+    }
+
+    &.cutted {
+      background-color: $light-orange;
+
+      &::after {
+        @include icon-font;
+        content: $fa-cut;
+        color:   $light-green;
+        padding: {
+          left:  4pt;
+          right: 4pt;
+        }
+      }
+    }
+  }
+  
+  tbody > tr:nth-of-type(1) > th {
+    border-top-color: transparent;
+  }
+}
diff --git a/dev/scss/main/view/matchtree.scss b/dev/scss/main/view/matchtree.scss
new file mode 100644
index 0000000..96fb86a
--- /dev/null
+++ b/dev/scss/main/view/matchtree.scss
@@ -0,0 +1,44 @@
+@import "../../util";
+@import "tree";
+
+/**
+ * Matchtree view
+ */
+
+div.matchtree {
+  overflow-x:       hidden;
+  overflow-y:       visible;
+  padding:          0;
+  margin-top:       1pt;
+
+  // Label
+  h6 {
+    display:   inline;
+    font-size: inherit;
+    color:     $nearly-white;
+    margin:    0;
+    padding:   0 !important;
+    float:     left;
+
+    > span {
+      @include matchinfo-head;
+      @include cell-info;
+      display: inline-block !important;
+      margin: 0;
+
+      &:nth-of-type(2) {
+	      margin-left: $border-size;
+      }
+    }
+  }
+  
+  > div {
+    position:         unset;
+    z-index:          4;
+    overflow-x:       auto;
+    margin:           $border-size;
+    margin-left:      $left-distance;
+    margin-right:     $right-view-distance;
+    background-color: $light-orange;
+  }
+}
diff --git a/dev/scss/main/view/metatable.scss b/dev/scss/main/view/metatable.scss
new file mode 100644
index 0000000..8be5679
--- /dev/null
+++ b/dev/scss/main/view/metatable.scss
@@ -0,0 +1,64 @@
+@charset "utf-8";
+@import "../../util";
+
+// Metatable
+div.metatable > dl {
+  margin-right: $right-view-distance;
+  margin-top:   $border-size;
+
+  > div {
+    border-color: $dark-orange;
+
+    > * {
+      padding: .2em;
+    }
+
+    > dt {
+      background: $darker-orange;
+      color:      $nearly-white;
+      width:      12.5em;
+    }
+
+    > dd {
+      background-color: $light-orange;
+      cursor: pointer;
+
+      &.metakeyvalues {
+        padding: 0;
+
+        > div {
+          padding: .2em;
+
+          &::before {
+            content: "\2022\00A0";
+            color:   $dark-orange
+          }
+        }
+      }
+
+      // equal to td.chosen
+      &.chosen,
+      > div.chosen {
+        background-color: $light-green !important;
+        color:            $nearly-white;
+      }
+
+      &[data-type="type:store"],
+      &[data-type="type:attachement"] {
+        background-color: $middle-orange;
+        cursor:           default;
+
+        a {
+          color: inherit;
+        }
+      }
+    }
+  }
+
+  // This is a temporary feature to disable
+  // corpusByMatch assistant. See corpusByMatch.js
+  // for reasons.
+  &.cbm-disabled > div > dd {
+    cursor: default !important;
+  }
+}
\ No newline at end of file
diff --git a/dev/scss/main/tree.scss b/dev/scss/main/view/tree.scss
similarity index 60%
rename from dev/scss/main/tree.scss
rename to dev/scss/main/view/tree.scss
index 088690f..c7e064b 100644
--- a/dev/scss/main/tree.scss
+++ b/dev/scss/main/view/tree.scss
@@ -1,13 +1,13 @@
 @charset "utf-8";
-@import "../util";
+@import "../../util";
 
 /**
  * SVG tree
  */
 path.edge {
-  stroke: $darker-orange;
+  stroke:       $darker-orange;
   stroke-width: 2px;
-  fill: none;
+  fill:         none;
 }
 
 g.arc.infocus > path.edge {
@@ -17,37 +17,38 @@
 marker#arr {
   overflow: visible;
   path {
-    stroke: $darkest-orange;
-    fill: $darkest-orange;
-    fill-opacity:1;
+    stroke:       $darkest-orange;
+    fill:         $darkest-orange;
+    fill-opacity: 1;
     stroke-width: 2; 
   }
 }
 
 path.anchor {
-  stroke: $darkest-orange;
-  stroke-width: 3;
+  stroke:         $darkest-orange;
+  stroke-width:   3;
   stroke-linecap: round;
-  z-index: 20;
+  z-index:        20;
 }
 
 g.root rect.empty {
-  stroke: $darker-orange;
-  fill: $darker-orange;
+  stroke:       $darker-orange;
+  fill:         $darker-orange;
   stroke-width: 2px;
 }
 
-g.middle, g.label {
+g.middle,
+g.label {
   rect {
-    stroke: $darker-orange;
+    stroke:       $darker-orange;
     stroke-width: 2px;
-    fill: $middle-orange;
+    fill:         $middle-orange;
   }
 }
 
 g.label.infocus rect {
   stroke: $dark-green;
-  fill: $lightest-green;
+  fill:   $lightest-green;
 }
 
 g.middle.mark {
@@ -56,6 +57,7 @@
   }
   > text {
     fill: $light-orange;
+
     > tspan {
       stroke: $light-orange;
     }
@@ -72,13 +74,13 @@
 
 g > text > tspan {
   text-anchor: middle;
-  font-size: 9pt;
+  font-size:   9pt;
 }
 
 g.leaf > text,
 text.leaf {
   > tspan {
     font-size: 10pt;
-    overflow: visible;
+    overflow:  visible;
   }
 }
diff --git a/dev/scss/no-js.scss b/dev/scss/no-js.scss
index f948e44..c5f6410 100644
--- a/dev/scss/no-js.scss
+++ b/dev/scss/no-js.scss
@@ -1,50 +1,57 @@
 @import "util";
 
-// Aside in noscript mode
-body.no-js aside {
-  > * {
-    opacity: 1 !important;
-    transition: none;
-  }
-  transition: none;
-  position: relative;
-  margin-left: 0 !important;
-  display: block;
-  padding-top:0;
-  width: 100%;
-  top: 0;
-  form.login {
-    > input, > div {
-      width: auto;
-      margin-top: 0;
-      &:first-of-type {
-        float: left;
-        margin-right: 1em;
+/**
+ * Optimization for no-js behaviour
+ */
+body.no-js {
+
+  // Aside in noscript mode
+  aside {
+    position:    relative;
+    display:     block;
+    transition:  none;
+    margin-left: 0 !important;
+    padding-top: 0;
+    width:       100%;
+    top:         0;
+
+    > * {
+      opacity:    1 !important;
+      transition: none;
+    }
+
+    form.login {
+      > input,
+      > div {
+        width:      auto;
+        margin-top: 0;
+        &:first-of-type {
+          float:        left;
+          margin-right: 1em;
+        }
+      }
+      button {
+        height: 100%
       }
     }
-    button {
-      height: 100%
+
+    p,
+    &::after {
+      display: none;
     }
   }
-  &::after {
-    display: none;
-  }
-  p {
-    display: none;
+
+  main div.intro {
+    margin-left: $base-padding !important;
   }
 }
 
-body.no-js main div.intro {
-  margin-left: $base-padding !important;
-}
-
-
 #activate {
-  text-align: right;
+  text-align:       right;
   background-color: $dark-orange;
-  margin-top: 0;
-  padding: $base-padding;
-  padding-right: $standard-margin;
-  color: $nearly-white;
-  font-size: 80%;
+  margin-top:       0;
+  padding:          $base-padding;
+  padding-right:    $standard-margin;
+  color:            $nearly-white;
+  font-size:        80%;
 }
\ No newline at end of file
diff --git a/dev/scss/plugin.scss b/dev/scss/plugin.scss
new file mode 100644
index 0000000..5203758
--- /dev/null
+++ b/dev/scss/plugin.scss
@@ -0,0 +1,18 @@
+@import "base/base";
+
+/**
+ * Base rules for all plugin related styles,
+ * like widgets.
+ */
+
+div.view.widget {
+  padding-right: $right-view-distance;
+
+  > iframe {
+    margin:     0;
+    box-sizing: border-box;
+    padding:    0;
+    width:      100%;
+    overflow-x: auto;
+  }
+}
\ No newline at end of file
diff --git a/dev/scss/sidebar/sidebar.scss b/dev/scss/sidebar/sidebar.scss
index 2a99589..f9cb33d 100644
--- a/dev/scss/sidebar/sidebar.scss
+++ b/dev/scss/sidebar/sidebar.scss
@@ -1,67 +1,71 @@
 @charset "utf-8";
 @import "../util";
 
-$border-size: 2px;
-$right-padding: 60px;
-
 aside {
-  outline: none;
-  font-size: 10pt;
-  display: block;
   background-color: $dark-green;
-  position: fixed;
-  z-index: 100; // Needs to be behind alerts
-  color: $nearly-white;
-  width: $logo-left-distance;
-  top: 0;
-  left: 0;
-  height: 100%;
+  color:       $nearly-white;
+  width:       $logo-left-distance;
+  position:    fixed;
+  display:     block;
+  transition:  all .3s ease-in-out;
+  outline:     none;
+  font-size:   10pt;
+  z-index:     100; // Needs to be behind alerts
+  top:         0;
+  left:        0;
+  height:      100%;
   padding-top: 65px;
+
   > div {
     overflow-y: auto;
     overflow-x: visible;
     max-height: 100%;
   }
+
   > * {
     opacity: 1;
   }
+
   &::after {
-    position: absolute;
-    display: block;
-    opacity: 0;
-    cursor: pointer;
-    right: 0;
-    bottom: 0;
-    margin-right: -1 * ($standard-margin / 2);
-    background-color: $dark-green;
-    font-family: FontAwesome;
-    content: $fa-login; // $fa-bars
+    @include icon-font;
+    position:  absolute;
+    display:   block;
+    opacity:   0;
+    cursor:    pointer;
+    right:     0;
+    bottom:    0;
+    content:   $fa-login;
     font-size: 16pt;
-    width: 16pt;  
-    height: 17pt;
-    padding: 6pt;
+    width:     16pt;  
+    height:    17pt;
+    padding:   6pt;
+    background-color: $dark-green;
     border-top-right-radius: $standard-border-radius;
-  }
-  h2, legend {
-    font: {
-      size: 100%;
-      weight: bold;
-    }
-    line-height: 2em;
-    text-align: center;
-    padding: 0;
-    margin: 0;
+    margin-right: -1 * ($standard-margin / 2);
   }
 
+  h2,
+  legend {
+    line-height: 2em;
+    text-align:  center;
+    padding:     0;
+    margin:      0;
+    font: {
+      size:   100%;
+      weight: bold;
+    }
+  }
+
+  /**
+   * Navigation menu
+   */
   ul.nav {
     list-style-type: none;
-/*
-    background-color: $light-green;
-*/
-    margin: 0;
-    font-size: 10pt;
-    text-indent: 0;
-    padding: 0;
+    margin:          0;
+    font-size:       10pt;
+    text-indent:     0;
+    padding:         0;
+
     li {
       padding: 0;
       > a {
@@ -86,171 +90,127 @@
 
       > a:link {
         @include choose-item;
+        display: block;
+
         border-right: {
           width: $border-size;
           style: solid;
         }
 
-        display: block;
         &:hover {
-          // color: inherit;
-          transition: none;
           @include choose-hover;
+          transition: none;
         }
       }
+
       h3 {
-        font: {
-        weight: bold;
-        size: 100%;
-      }    
         padding: 0;
         margin: 0;
+        font: {
+          weight: bold;
+          size:   100%;
+        }
       }
-/*
-      &.active {
-  text-shadow: none;
-  h3 {
-    margin-bottom: 2pt;
-    padding-bottom: 2pt;
-    border-bottom: 1px solid black;
-  }
-      }
-*/
+
       > a {
         padding-left: 6pt;
       }
+
       li > a {
         padding-left: 18pt;
       }
+
       li li > a {
         padding-left: 36pt;
       }
     }
   }
+
   nav > ul > li > a {
     font-weight: bold;
   }
   
   fieldset {
-    position: relative;
+    position:     relative;
     border-width: 0;
+
     legend {
       display: none;
     }
     
-    input[type=text], input[type=password] {
+    input[type=text],
+    input[type=password] {
       @include input-field;
       width: 100%;
     }
     
     > form > div {
-      position: relative;
-      width: 100%;
-      margin-top: 4px;
+      position:      relative;
+      width:         100%;
+      margin-top:    4px;
       padding-right: $button-width
     }
 
     > p {
       color: $light-green;
     }
+
     > p.announcement {
       color: $nearly-white;
       > time {
-        display: block;
+        display:   block;
         font-size: 70%;
       }
     }
+
     hr {
       border: none;
       border-top: 2px solid $ids-grey-2;
     }
+
     ul {
-      display: block;
-      font-size: 80%;
+      display:    block;
+      font-size:  80%;
       text-align: right;
-      > li {
-  display: inline;
-  &:first-child::after {
-    content: ' | ';
-  }
-      }
-      padding: 0;
+      padding:    0;
       margin-top: 0;
+
+      > li {
+        display: inline;
+        &:first-child::after {
+          content: ' | ';
+        }
+      }
     }
 
     button {
       position: absolute;
-      // height: 100%;
-      top: 0;
-      right: 0;
+      top:      0;
+      right:    0;
       &::after {
         content: $fa-login;
       }
     }
   }
-}
 
-aside {
-  transition: all .3s ease-in-out;
-}
-
-aside.off, aside:not(:focus):not(.active) {
-  margin-left: -1 * ($logo-left-distance - ($standard-margin / 2));
-  &::after {
-    opacity: 1;
-  }
+  // Off aside
+  &.off,
+  &:not(:focus):not(.active) {
+    margin-left: -1 * ($logo-left-distance - ($standard-margin / 2));
+    &::after {
+      opacity: 1;
+    }
  
-  > * {
-    opacity: 0;
-    transition: {
-      property: opacity;
-      duration: .3s;
+    > * {
+      opacity: 0;
+      transition: {
+        property: opacity;
+        duration: .3s;
+      }
     }
   }
-}
 
-aside.off::after {
-  display:none;
-}
-
-
-/*
-#sidebar {
-  text-shadow: none;
-  height: 105%;
-  margin-top: -10px;
-  background-color: #496000;
-  left: 0;
-  top: 0;
-  &.active {
-    box-shadow: 2px 2px 5px darken($dark-green, 15%);
-    margin-left: 0px;
-    left: 0;
-    top: 0;
-  }
-  &:not(.active) > i.fa-bars {
-    opacity: 1;
-    cursor: pointer;
-    background-color: #496000;
-    position: fixed;
-    font-size: 16pt;
-    width: 16pt;  
-    height: 17pt;
-    padding: 6pt;
-    bottom: 0;
-    left: 0;
-    border-top-right-radius: 5pt;
-  }
-  dl.info {
-    font-size: 9pt;
-    padding: 0 10pt;
-    > dt {
-      font-weight: bold;
-      float: left;
-    }
-    > dd {
-      text-align: right;
-    }
+  &.off::after {
+    display:none;
   }
 }
-*/
\ No newline at end of file
diff --git a/dev/scss/util.scss b/dev/scss/util.scss
index 6edd3e7..12fb54b 100644
--- a/dev/scss/util.scss
+++ b/dev/scss/util.scss
@@ -1,281 +1,6 @@
-/**
- * Some variables and mixins for Kalamar,
- * other Sass styles will use.
- */
-
-/**
- * Official IDS colors
- */
-$ids-orange-1: rgb(246, 168,   0);
-$ids-orange-2: rgb(242, 148,   0);
-$ids-grey-1:   rgb(135, 136, 138);
-$ids-grey-2:   rgb(217, 218, 219);
-$ids-blue-1:   rgb(  0, 158, 224); // Pragmatik
-$ids-blue-2:   rgb(188, 228, 247); // Pragmatik
-$ids-green-1:  rgb( 99, 111,   7); // Grammatik
-$ids-green-2:  rgb(227, 232, 163); // Grammatik
-$ids-pink-1:   rgb(193,   0,  43); // Lexik
-$ids-pink-2:   rgb(250, 243, 222); // Lexik
-
-$black: #333;
-
-/**
- * Orange Colors
- */
-$light-orange:   #f4eebb; // #ffe56a;
-$middle-orange:  #ffd080;
-$dark-orange:    $ids-orange-1; // #ffa500;
-$darker-orange:  #ff8000;
-$darkest-orange: #e55d00;
-// $light-orange-2: #f4eebb;, #ffd080;
-// Yellow: #fff48d
-
-/**
- * Green Colors
- */
-$dark-green:     $ids-green-1; // #496000;
-// $middle-green:   lighten($ids-green-1, 5%);
-$middle-green:   lighten($ids-green-1, 9%);
-$light-green:    lighten($ids-green-1, 13%); // #7ba400;
-$lightest-green: desaturate(lighten($light-green, 35%), 20%); // #d8e38c;
-$grey-green:     darken(desaturate($lightest-green, 25%), 12%); // #bcc387;
-
-/**
- * Blue Colors
- */
-$light-blue:     $ids-blue-2;
-$dark-blue:      $ids-blue-1;
-$darkest-blue:   darken($dark-blue, 40%);
-
-/**
- * Grey Colors
- */
-$middle-grey:  $ids-grey-1; // #999;
-// $semilight-grey: #8d8d8d;
-$light-grey:   $ids-grey-2; // #ddd;
-$dark-grey:    darken($middle-grey, 15%);
-$nearly-white: #fefefe;
-
-/**
- * Red Colors (no IDS relation)
- */
-$middle-red: #c1002b;
-$light-red: lighten($middle-red, 40%);
-$dark-red: darken($middle-red, 40%);
-
-
-/**
- * Basic shadows
- */
-$dark-shadow: 1px 1px 1px rgba(0,0,0,0.3);
-$light-shadow: 1px 1px rgba(255,255,255,0.5);
-
-/**
- * KWIC colors
- */
-$kwic-border:       $middle-grey;
-$kwic-line-noneven: $light-grey;
-$kwic-line-even:    $nearly-white;
-$kwic-match-color:  $dark-grey;
-$kwic-match-shadow: $light-shadow;
-
-$kwic-highlight-1:  $middle-red;
-$kwic-highlight-2:  $dark-blue;   // #009ee0;
-$kwic-highlight-3:  $dark-orange; // #f29400;
-$kwic-highlight-4:  $light-green;
-
-$choose-bg:     $light-grey;
-$choose-border-color: $middle-grey;
-$choose-border: 2px solid $choose-border-color;
-$choose-color:  $dark-grey;
-$choose-blind-color:  $middle-grey;
-$choose-box-shadow: 2px 2px 2px  rgba(0,0,0,0.2);
-$standard-border-radius: 6px;
-$item-padding: 3pt 6pt;
-$button-width: 30px;
-$base-padding: 8px;
-$border-size: 2px;
-$result-border-size: 1px;
-$total-results: $light-green;
-
-$left-width: 176px;
-$border-size: 2px;
-$left-distance: $left-width + ($border-size * 2);
-
-/**
- * Path information - relative to css!
- */
-$img-path:  '../img';
-$font-path: '../font';
-
-/**
- * Margins
- */
-$standard-margin: 40px;
-$right-distance: $standard-margin;
-$right-view-distance: $standard-margin / 2;
-$logo-left-distance: 230px;
-
-/**
- * Mixin for blind elements
- * (e.g., spans in elements with an icon background)
- */
-@mixin blind {
-  position: absolute;
-  margin-left: -3000px;
-}
-
-
-/**
- * Chooseable items (default)
- */
-@mixin choose-item {
-  color: $choose-color;
-  background-color: $choose-bg;
-  border-color: $choose-border-color;
-  text-shadow: $light-shadow;
-}
-
-/**
- * Chooseable items (mouse over)
- */
-@mixin choose-hover {
-  color: $nearly-white;
-  text-shadow: none;
-  background-color: $dark-orange;
-  border-color: $darker-orange;
-}
-
-/**
- * Chooseable items (not available)
- */
-@mixin choose-inactive {
-  color: lighten($choose-color, 20%);
-  background-color: lighten($choose-bg, 20%);
-  border-color: transparent;
-  text-shadow: none;
-}
-
-/**
- * Chooseable items (active)
- */
-@mixin choose-active {
-  color: $dark-green;
-  text-shadow: none;
-  background-color: $light-green;
-  border-color: $dark-green;
-}
-
-/**
- * Chooseable items (action: remove something)
- */
-@mixin choose-remove {
-  color: $nearly-white;
-  text-shadow: none;
-  background-color: $middle-red;
-  border-color: $dark-red;
-}
-
-@mixin cell-info {
-  text-overflow: ellipsis;
-  white-space: nowrap;
-  max-width: 25em;
-  overflow: hidden;
-  padding: 1px 6px;
-  margin: 0px;
-}
-
-/**
- * Mixin for basic color transition
- */
-@mixin color-transition {
-  transition: color 0.3s ease 0s;
-}
-
-@mixin input-field {
-  outline: none;
-  font-size: 11pt;
-  border: $border-size solid $nearly-white;
-  padding: 2px;
-  margin: 0;
-}
-
-/**
- * Mixing for basic text padding
- */
-@mixin standard-text-padding {
-  padding-left: .4em;
-  padding-right: .4em;
-}
-
-
-/**
- * Mixing for correct box sizing (probably not necessary)
- * DEPRECATED
- */
-@mixin box-sizing-box() {
-  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-  -moz-box-sizing: border-box;    /* Firefox, other Gecko */
-  box-sizing: border-box;         /* Opera/IE 8+ */
-}
-
-/**
- * Noisy background
- */
-@mixin light-noise {
-  background-image:url('#{$img-path}/noise.png');
-}
-
-/**
- * Mixin for no-appearance rules
- */
-// https://css-tricks.com/almanac/properties/a/appearance/
-@mixin no-appearance {
-  -webkit-appearance:none;
-  -moz-appearance:none;
-  appearance:none;
-}
-
-/** 
-* Mixin for the appearance of inactive elements in the vcinfo panel
-*/
-@mixin vcinfo-inactive{
-    background-color: $grey-green;
-    color: $dark-green; // $semilight-grey;
-    // border-color:   $semilight-grey; 
-    text-shadow: none;
-}
-/**
- * Font Awesome symbol table
- */
-$fa-bars:         "\f0c9";
-$fa-extlink:      "\f08e";
-$fa-up:           "\f0d8";
-$fa-down:         "\f0d7";
-$fa-minimize:     "\f0d8";
-$fa-close:        "\f00d";
-$fa-download:     "\f019";
-$fa-info:         "\f05a";
-$fa-elipsis:      "\f141";
-$fa-previous:     "\f0d9";
-$fa-next:         "\f0da";
-$fa-search:       "\f002";
-$fa-rewrite:      "\f040";
-$fa-login:        "\f090";
-$fa-logout:       "\f08b";
-$fa-tutorial:     "\f19d";
-$fa-left-align:   "\f036";
-$fa-right-align:  "\f038";
-$fa-center-align: "\f037";
-$fa-question:     "\f128";
-$fa-checked:      "\f046";
-$fa-check:        "\f096";
-$fa-code:         "\f121";
-$fa-marked:       "\f005";
-// $fa-metadata:    "\f067";
-$fa-metadata:     "\f055";
-$fa-to-query:     "\f102";
-$fa-cut:          "\f0c4";
-$fa-plugin:       "\f1e6";
-$fa-referto:      "\f0c5";
-$fa-redo:         "\f01e";
+@import "base/colors";
+@import "base/icons";
+@import "base/mixins";
+@import "base/choose";
+@import "base/lengths";
+@import "base/paths";