diff --git a/public/css/kalamar-0.41.3.css b/public/css/kalamar-0.41.3.css
new file mode 100644
index 0000000..5e08f25
--- /dev/null
+++ b/public/css/kalamar-0.41.3.css
@@ -0,0 +1,8854 @@
+@charset "UTF-8";
+/**
+ * Aggregate separated Sass files for Kalamar
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Load web fonts for Kalamar
+ */
+@font-face {
+  font-family: "FontAwesome";
+  src: url("../font/fontawesome-webfont.eot?v=4.3.0");
+  src: url("../font/fontawesome-webfont.eot?#iefix&v=4.3.0") format("embedded-opentype"), url("../font/fontawesome-webfont.woff2?v=4.3.0") format("woff2"), url("../font/fontawesome-webfont.woff?v=4.3.0") format("woff"), url("../font/fontawesome-webfont.ttf?v=4.3.0") format("truetype"), url("../font/fontawesome-webfont.svg?v=4.3.0#fontawesomeregular") format("svg");
+  font-weight: normal;
+  font-style: normal;
+}
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * This defines flexible table cells
+ * for views (including media queries).
+ */
+dl.flex {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-start;
+  align-items: stretch;
+  width: auto;
+  padding-bottom: 0;
+}
+dl.flex > div {
+  display: flex;
+  flex-direction: row;
+  text-align: center;
+  width: 100%;
+  border-width: 1px;
+  border-style: solid;
+  align-items: stretch;
+}
+dl.flex > div > * {
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  max-width: 25em;
+  overflow: hidden;
+  padding: 1px 6px;
+  margin: 0px;
+}
+dl.flex > div > dt {
+  text-align: left;
+  width: 12.5em;
+  padding: 3pt 6pt;
+  margin: 0;
+}
+dl.flex > div > dd {
+  text-align: left;
+  padding: 3pt 6pt;
+  margin: 0;
+  width: 100%;
+  max-width: none;
+  max-height: 6em;
+  margin-left: 2px;
+  white-space: normal;
+  overflow-y: auto;
+  overflow-x: hidden;
+  text-overflow: ellipsis;
+}
+
+@media (min-width: 640px) {
+  dl.flex > div {
+    width: 50%;
+  }
+}
+@media (min-width: 800px) {
+  dl.flex > div {
+    width: 33.3333333333%;
+  }
+}
+@media (min-width: 1200px) {
+  dl.flex > div {
+    width: 25%;
+  }
+}
+@media (min-width: 1680px) {
+  dl.flex > div {
+    width: 20%;
+  }
+}
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Definitions of fragments for vc and query
+ * builder.
+ */
+.vc.fragment,
+p.query.fragment {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  position: relative;
+  padding: 4pt 6pt !important;
+  border-width: 2px;
+  border-style: solid;
+  border-radius: 6px;
+  margin-left: 180px;
+  margin-top: 0.5em;
+  margin-bottom: 0.5em;
+  margin-right: 20px;
+}
+.vc.fragment:hover,
+p.query.fragment:hover {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+  cursor: pointer;
+}
+.vc.fragment > span:first-of-type,
+p.query.fragment > span:first-of-type {
+  font-weight: bold;
+  padding-right: 4pt;
+}
+.vc.fragment > span:nth-of-type(2),
+p.query.fragment > span:nth-of-type(2) {
+  padding-right: 1.2em;
+}
+.vc.fragment::after,
+p.query.fragment::after {
+  font-family: "FontAwesome";
+  content: "";
+  position: absolute;
+  right: 4pt;
+  top: 2px;
+}
+
+/**
+ * Load indicator.
+ */
+div.loading {
+  background-color: transparent !important;
+  height: 16px !important;
+  width: 16px !important;
+  margin: 0 auto !important;
+}
+
+.loading {
+  background-position: center;
+  background-repeat: no-repeat;
+  background-image: url("data:image/gif;base64,R0lGODlhEAAQAIABAP///wAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBAABACwAAAAAEAAQAAACKYQPobt44QyM01VW0cVNPq48Hzh2UngyGvet6OpmKWmBb5TI+LlTOlAAACH5BAkEAAEALAAAAAAQABAAAAIohA+hu3gMnXyBqnkNw1XDnHThZ32bd6LUg0SOOIJsCaPmtOJvrctHAQAh+QQJBAABACwAAAAAEAAQAAACKYQPobt44QyM01VW0cVNPq48nxZKGLkxqGiungmyCXh9nRUleSZrO10AACH5BAkEAAEALAAAAAAQABAAAAIohA8RyKwN04pSWdumufp0niHghnkPyaWmqZLsKL3QWXUrJdpo66RKAQAh+QQJBAABACwAAAAAEAAQAAACJoQPEcisDdOKUlnbrp4IH989n1iBJUhK47itxkbGsEvRtXq/8B4UACH5BAkEAAEALAAAAAAQABAAAAIphA8RyKwN04pSWdvuNPto1HEX6G1YOYrain5im0pQ/GSnTIFr7eyhUQAAIfkECQQAAQAsAAAAABAAEAAAAiqMf6ALwWoelJFS5CbESTdeNUu3jWP4IWe2qS0TsmC8cuZFsrAkWrgtKQAAIfkECQQAAQAsAAAAABAAEAAAAiiMf6AL6LwMnDFQVG9SkrveWN6XjR82Mmi4cdMTvWsjnyIV4rIOgUwBACH5BAkEAAEALAAAAAAQABAAAAImjH+gC8HrXpNTxoeuzkltrkFg6BnMiJxpaYpWV76jDFKujV14LBUAIfkEAR4AAQAsAAAAABAAEAAAAiSEDxHIrA3TilJZ266eaN/8HJixdd4nailXgafrwSUVUqltQgUAOw==");
+}
+
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Definition of form elements for Kalamar.
+ */
+.form-table {
+  display: block;
+  padding: 0;
+  font-size: 80%;
+}
+.form-table > fieldset {
+  margin-top: 0;
+}
+.form-table fieldset {
+  border-width: 0;
+  padding: 0;
+  margin-top: 1em;
+}
+.form-table fieldset > div {
+  white-space: nowrap;
+}
+.form-table legend {
+  background-color: transparent;
+  margin-left: 0;
+  font-weight: bold;
+  border-radius: 6px;
+}
+.form-table label[for] {
+  display: block;
+  text-align: left;
+}
+.form-table label[for],
+.form-table input[type=submit],
+.form-table a.form-button {
+  margin-top: 2em;
+}
+.form-table fieldset.form-line legend {
+  font-size: 100%;
+  display: inline-block;
+}
+.form-table fieldset.form-line legend::after {
+  content: ":";
+  color: #e3e8a3;
+}
+.form-table fieldset.form-line input, .form-table fieldset.form-line label[for] {
+  display: inline-block;
+  margin: 0;
+}
+.form-table fieldset.form-line input {
+  vertical-align: bottom;
+}
+.form-table fieldset.form-line label[for] {
+  margin-right: 2em;
+}
+.form-table input,
+.form-table textarea,
+.form-table button,
+.form-table a.form-button {
+  border-radius: 6px;
+}
+.form-table input,
+.form-table textarea {
+  border-color: #d9dadb;
+  background-color: #fefefe;
+  border-style: solid;
+}
+.form-table input,
+.form-table textarea,
+.form-table select,
+.form-table a.form-button {
+  border-style: solid;
+  display: inline-block;
+  width: 20%;
+  min-width: 20em;
+  padding: 8px;
+}
+.form-table input[type=radio] {
+  display: inline;
+  text-align: right;
+  background-color: red;
+  width: auto;
+  min-width: auto;
+}
+.form-table input[readonly=readonly],
+.form-table textarea[readonly] {
+  background-color: #f4eebb;
+}
+.form-table .field-with-error {
+  border-color: #c1002b;
+}
+.form-table input[type=submit],
+.form-table button,
+.form-table a.form-button {
+  display: inline-block;
+  cursor: pointer;
+  border-width: thin;
+  text-align: center;
+  background-color: #8a9a0a;
+  border-color: #636f07;
+  color: #636f07;
+}
+.form-table a.form-button:hover {
+  color: inherit !important;
+}
+.form-table label.field-required::after {
+  color: #009ee0;
+  content: "*";
+}
+
+.button-abort {
+  background-color: #ffd080 !important;
+  color: #e55d00 !important;
+  border-color: #e55d00 !important;
+}
+
+button {
+  cursor: pointer;
+}
+button + button {
+  right: 0;
+}
+button[type=submit] {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  font-weight: normal;
+  padding: 0;
+  height: 100%;
+  top: 0;
+  width: 30px;
+  border: 2px solid #fefefe;
+  /*
+   * This is just for styling the last button,
+   * in case there are more than one buttons.
+   */
+}
+button[type=submit] > span:nth-of-type(1) {
+  position: absolute;
+  margin-left: -3000px;
+}
+button[type=submit]::after {
+  font-family: "FontAwesome";
+}
+button[type=submit]:hover, button[type=submit]:focus {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+button[type=submit]::-moz-focus-inner {
+  border: none;
+}
+button[type=submit]:active {
+  color: #636f07;
+  background-color: #9bad0b;
+  border-color: #636f07;
+  text-shadow: none;
+}
+button[type=submit]:last-of-type {
+  border-right-width: 2px;
+  border-right-style: solid;
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+
+/**
+ * Checkbox styling
+ * http://stackoverflow.com/questions/4148499/how-to-style-checkbox-using-css
+ */
+.checkbox {
+  display: none;
+}
+.checkbox + label {
+  cursor: pointer;
+}
+.checkbox + label span {
+  display: inline-block;
+  border-radius: 4px;
+  width: 1em;
+  height: 1em;
+  line-height: 1em;
+  vertical-align: middle;
+  padding: 0;
+  margin-right: 0.2em;
+}
+.checkbox + label span::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  content: "";
+}
+.checkbox:checked + label span::after {
+  content: "";
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+.result-view {
+  background-color: #fefefe;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Definitions for menu design.
+ */
+ul.menu {
+  position: absolute;
+  padding: 0;
+  margin: 0;
+  text-indent: 0;
+  opacity: 0;
+  list-style-type: none;
+  list-style-position: outside;
+  /**
+   * Ruler
+   */
+  /**
+   * List items
+   */
+  /**
+   * Default prefix view
+   */
+}
+ul.menu.visible {
+  opacity: 1;
+}
+ul.menu,
+ul.menu > span.pref:not(:empty) {
+  box-sizing: border-box;
+  text-shadow: none;
+  font-weight: normal;
+  z-index: 120;
+}
+ul.menu > li,
+ul.menu > span.pref:not(.active) {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+}
+ul.menu > li,
+ul.menu > span.pref:not(:empty) {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+  cursor: pointer;
+  padding: 3pt 6pt;
+  white-space: normal;
+  border-width: 2px;
+  border-bottom-width: 0px;
+  border-top-width: 0px;
+  border-style: solid;
+}
+ul.menu span.desc {
+  display: block;
+  font-size: 75%;
+}
+ul.menu div.lengthField {
+  border-color: transparent;
+  border-width: 2px;
+  padding: 3pt 6pt;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+ul.menu div.lengthField span {
+  display: block !important;
+  line-height: 0;
+  color: transparent;
+}
+ul.menu > div.ruler {
+  position: absolute;
+  right: 0px;
+  margin-right: -14px;
+  background-color: transparent;
+  width: 14px;
+  height: 100%;
+  opacity: 0;
+  cursor: pointer;
+  transition: opacity 0.5s ease 1s;
+}
+ul.menu > div.ruler > span {
+  color: #636f07;
+  background-color: #9bad0b;
+  border-color: #636f07;
+  text-shadow: none;
+  position: absolute;
+  display: block;
+  right: 0;
+  width: 10px;
+  z-index: 115;
+  border-radius: 4px;
+  border-width: 2px;
+  border-style: solid;
+}
+ul.menu > div.ruler.active > span {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+ul.menu > div.ruler > div {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+  position: absolute;
+  right: 0;
+  width: 10px;
+  height: 100%;
+  border-radius: 4px;
+  border-width: 2px;
+  border-style: solid;
+}
+ul.menu:active > div.ruler, ul.menu:hover > div.ruler,
+ul.menu > div.ruler.active {
+  transition: opacity 0.1s ease;
+  opacity: 1;
+}
+ul.menu > li,
+ul.menu div.lengthField {
+  padding-right: 1.6em;
+}
+ul.menu > li:first-of-type {
+  border-top-width: 2px;
+  border-top-left-radius: 6px;
+  border-top-right-radius: 6px;
+}
+ul.menu > li:last-of-type {
+  border-bottom-width: 2px;
+  border-bottom-left-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+ul.menu > li mark {
+  text-decoration: underline;
+  background-color: transparent;
+  color: inherit;
+  font-weight: bold;
+}
+ul.menu > li.active,
+ul.menu > span.pref.active {
+  color: #636f07;
+  background-color: #9bad0b;
+  border-color: #636f07;
+  text-shadow: none;
+}
+ul.menu > li:hover,
+ul.menu > span.pref:hover {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+ul.menu > 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: 6px;
+  border-width: 2px;
+}
+
+/**
+ * Rolling menu
+ */
+ul.menu.roll > li:first-of-type:not(.no-more):before {
+  position: absolute;
+  font-family: "FontAwesome";
+  content: "";
+  right: 0.5em;
+  top: 0.4em;
+}
+ul.menu.roll > li:last-of-type:not(.no-more):before {
+  position: absolute;
+  font-family: "FontAwesome";
+  content: "";
+  right: 0.5em;
+  bottom: 0.4em;
+}
+ul.menu.roll:not(.visible) {
+  height: 0;
+}
+
+/**
+ * Sorting menu
+ */
+ul.menu.sort {
+  position: relative;
+  display: inline-block;
+}
+ul.menu.sort > li::before {
+  content: "";
+}
+ul.menu.sort > li.active:hover {
+  color: #fefefe;
+  background-color: #c1002b;
+  border-color: black;
+  text-shadow: none;
+}
+
+/**
+ * select menu
+ */
+span.menu.select > span {
+  z-index: 105;
+}
+span.menu.select > ul.menu.roll {
+  display: none;
+  z-index: -100;
+}
+span.menu.select > ul.menu.roll.visible {
+  display: block;
+  z-index: 110;
+}
+
+.banner {
+  position: fixed;
+  width: 10em;
+  height: 10em;
+  overflow: hidden;
+  margin: 0;
+  padding: 0;
+  right: 0px;
+  margin-right: -2.4em;
+  top: 0;
+}
+.banner::after {
+  content: attr(data-note);
+  display: block;
+  overflow: hidden;
+  width: 12em;
+  font-size: 10pt;
+  font-weight: bold;
+  word-spacing: 2px;
+  text-decoration: none;
+  position: relative;
+  left: 2em;
+  top: -1.6em;
+  line-height: 2em;
+  text-align: center;
+  -moz-transform-origin: 0 0;
+  -moz-transform: rotate(45deg);
+  -webkit-transform-origin: 0 0;
+  -webkit-transform: rotate(45deg);
+  -ms-transform-origin: 0 0;
+  -ms-transform: rotate(45deg);
+  transform-origin: 0 0;
+  transform: rotate(45deg);
+  background-color: #f4eebb;
+  color: #f6a800;
+  border: 1px solid #f6a800;
+}
+
+/**
+ * Basic global CSS rules for Kalamar
+ */
+* {
+  -webkit-box-sizing: border-box;
+  /* Safari/Chrome, other WebKit */
+  -moz-box-sizing: border-box;
+  /* Firefox, other Gecko */
+  box-sizing: border-box;
+  /* Opera/IE 8+ */
+}
+
+body,
+html,
+select,
+g > text {
+  font-family: verdana, tahoma, arial, Helvetica, sans-serif;
+  color: #616263;
+  margin: 0;
+}
+
+g > text {
+  fill: #616263;
+}
+
+html {
+  height: 100%;
+}
+
+body {
+  position: relative;
+  min-height: 100%;
+  font-size: 12pt;
+  margin: 0;
+  padding: 0;
+}
+
+a:link {
+  text-decoration: none;
+  color: #f6a800;
+}
+a:link:hover {
+  color: #e55d00;
+  transition: color 0.3s ease 0s;
+}
+a[href^="http://"]::after, a[href^="https://"]::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  content: " ";
+  font-size: 75%;
+}
+
+a[onclick$="return PArok(this,false)"] {
+  unicode-bidi: bidi-override;
+  direction: rtl;
+  text-align: left;
+}
+a[onclick$="return PArok(this,false)"] > span:nth-child(1n+2) {
+  display: none;
+}
+a[onclick$="return PArok(this,false)"] > span:nth-child(1)::after {
+  content: "@";
+}
+
+.clear {
+  clear: both;
+}
+
+iframe {
+  border-width: 0;
+}
+
+blockquote {
+  border-radius: 6px;
+  padding: 2pt 5pt 2pt 20pt;
+  margin: 0;
+  border-left: 5px solid #009ee0;
+  background-color: #bce4f7;
+  color: #009ee0;
+  mix-blend-mode: soft-light;
+}
+blockquote.bug, blockquote.missing, blockquote.warning {
+  border-left-color: black;
+  background-color: #c1002b;
+  color: #fefefe;
+  mix-blend-mode: multiply;
+}
+
+dl {
+  margin: 0;
+  padding-bottom: 0.5em;
+}
+dl dt {
+  font-weight: bold;
+}
+dl dt abbr {
+  border-width: 0;
+}
+dl dt abbr[data-type=token]::after {
+  color: #009ee0;
+}
+dl dt abbr[data-type=span]::after {
+  color: #c1002b;
+}
+dl dt abbr::after {
+  content: " (" attr(title) ")";
+  vertical-align: bottom;
+  font-style: italic;
+  font-weight: normal;
+  font-size: 80%;
+}
+
+/*
+ * Based on github.com style (c) Vasily Polovnyov <vast@whiteants.net>
+ */
+.hljs {
+  display: block;
+  padding: 0.5em;
+}
+
+.hljs-comment,
+.hljs-template_comment,
+.diff .hljs-header,
+.hljs-javadoc {
+  color: #998;
+  font-style: italic;
+}
+
+.hljs-keyword,
+.css .rule .hljs-keyword,
+.hljs-winutils,
+.javascript .hljs-title,
+.nginx .hljs-title,
+.hljs-subst,
+.hljs-request,
+.hljs-status {
+  color: #333;
+  font-weight: bold;
+}
+
+.hljs-number,
+.hljs-hexcolor,
+.ruby .hljs-constant {
+  color: #099;
+}
+
+.hljs-string,
+.hljs-tag .hljs-value,
+.hljs-phpdoc,
+.tex .hljs-formula {
+  color: #d14;
+}
+
+.hljs-title,
+.hljs-id,
+.coffeescript .hljs-params,
+.scss .hljs-preprocessor {
+  color: #900;
+  font-weight: bold;
+}
+
+.javascript .hljs-title,
+.lisp .hljs-title,
+.clojure .hljs-title,
+.hljs-subst {
+  font-weight: normal;
+}
+
+.hljs-class .hljs-title,
+.haskell .hljs-type,
+.vhdl .hljs-literal,
+.tex .hljs-command {
+  color: #458;
+  font-weight: bold;
+}
+
+.hljs-tag,
+.hljs-tag .hljs-title,
+.hljs-rules .hljs-property,
+.django .hljs-tag .hljs-keyword {
+  color: #000080;
+  font-weight: normal;
+}
+
+.hljs-attribute,
+.hljs-variable,
+.lisp .hljs-body {
+  color: #008080;
+}
+
+.hljs-regexp {
+  color: #009926;
+}
+
+.hljs-symbol,
+.ruby .hljs-symbol .hljs-string,
+.lisp .hljs-keyword,
+.tex .hljs-special,
+.hljs-prompt {
+  color: #990073;
+}
+
+.hljs-built_in,
+.lisp .hljs-title,
+.clojure .hljs-built_in {
+  color: #0086b3;
+}
+
+.hljs-preprocessor,
+.hljs-pragma,
+.hljs-pi,
+.hljs-doctype,
+.hljs-shebang,
+.hljs-cdata {
+  color: #999;
+  font-weight: bold;
+}
+
+.hljs-deletion {
+  background: #fdd;
+}
+
+.hljs-addition {
+  background: #dfd;
+}
+
+.diff .hljs-change {
+  background: #0086b3;
+}
+
+.hljs-chunk {
+  color: #aaa;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Styles for the KWIC view.
+ */
+#search {
+  position: relative;
+  margin-bottom: 30px;
+  overflow: visible;
+}
+#search div.matchinfo {
+  display: none;
+}
+#search > ol {
+  overflow-x: hidden;
+  overflow-y: visible;
+  width: auto;
+  text-indent: 0;
+  list-style-type: none;
+  margin: 0;
+  padding: 0;
+  border: 1px solid #87888a;
+  font-size: 10pt;
+}
+#search > ol > li {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: stretch;
+  align-content: stretch;
+  border-style: solid;
+  border-color: #f6a800;
+  border-width: 0;
+}
+#search > ol > li .button-group.button-view {
+  display: none;
+}
+#search > ol > li:nth-of-type(even) div.match-main div.match-wrap {
+  background-color: #fefefe;
+}
+#search > ol > li p.ref {
+  display: none;
+}
+#search > ol > li div.meta,
+#search > ol > li div.match-main {
+  position: relative;
+  cursor: pointer;
+}
+#search > ol > li div.match-main {
+  display: block;
+  flex: 7 0;
+  z-index: 4;
+  overflow: hidden;
+}
+#search > ol > li div.match-main > div.match-wrap {
+  width: 99999%;
+  margin-left: -49999.5%;
+  background-color: #d9dadb;
+  overflow-x: hidden;
+  overflow-y: visible;
+  white-space: normal;
+}
+#search > ol > li 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: #949597;
+  color: #fefefe;
+  font-size: 75%;
+  padding: 0 5pt;
+  border-color: #616263;
+  border-style: solid;
+  border-width: 2px 1px 0 0;
+}
+#search > ol > li div.meta:before {
+  content: " ";
+  display: inline-block;
+  height: 100%;
+  vertical-align: middle;
+}
+#search > ol > li div.meta:empty {
+  border-width: 0 1px 0 0;
+}
+#search > ol > li div.meta.flip {
+  background-color: #b3b4b5;
+}
+#search > ol > li:first-of-type div.meta {
+  border-top-width: 0;
+}
+#search > ol > li:last-of-type div.meta {
+  border-bottom-width: 0;
+}
+
+/**
+ * Snippet rules
+ */
+div.snippet {
+  text-overflow: ellipsis;
+  text-indent: 0;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  font-size: 0;
+  white-space: nowrap !important;
+}
+div.snippet > span, div.snippet mark {
+  padding: 5pt 0 6pt 0;
+  font-size: 10pt;
+}
+div.snippet > mark,
+div.snippet > span.match {
+  font-weight: bold;
+  color: #333;
+  text-shadow: none;
+  padding-left: 4pt;
+  padding-right: 2pt;
+}
+div.snippet > span.match > span.cutted::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  content: "";
+  color: #9bad0b;
+  padding-left: 4pt;
+  padding-right: 4pt;
+}
+div.snippet.startMore:before, div.snippet.endMore:after {
+  content: "…";
+  padding-left: 2pt;
+  padding-right: 2pt;
+}
+div.snippet div.flag {
+  position: absolute;
+  height: 100%;
+  top: 0;
+  left: 0;
+  width: 11px;
+  background-color: #f6a800;
+  border-right: 1px solid #e55d00;
+}
+
+/**
+ * Active rules
+ */
+body.no-js #search > ol > li:active,
+#search > ol > li.active,
+#search > ol > li:target {
+  position: relative;
+  display: block;
+  background-color: #f6a800;
+  text-align: left;
+  border-width: 2px;
+  white-space: normal;
+  height: auto;
+  width: auto;
+  overflow: hidden;
+}
+body.no-js #search > ol > li:active div.matchinfo,
+#search > ol > li.active div.matchinfo,
+#search > ol > li:target div.matchinfo {
+  display: block;
+}
+body.no-js #search > ol > li:active + li.active,
+#search > ol > li.active + li.active,
+#search > ol > li:target + li.active {
+  border-top: 2px solid #d9dadb;
+  padding-top: 6px;
+}
+body.no-js #search > ol > li:active + li.active .button-group.button-view,
+#search > ol > li.active + li.active .button-group.button-view,
+#search > ol > li:target + li.active .button-group.button-view {
+  padding-top: 6px;
+}
+body.no-js #search > ol > li:active .snippet,
+#search > ol > li.active .snippet,
+#search > ol > li:target .snippet {
+  white-space: normal !important;
+  padding: 2pt 0 5pt 5pt;
+  background-color: #f4eebb;
+  margin-top: 0;
+  margin-right: 20px;
+  margin-bottom: 0;
+  margin-left: 0;
+}
+body.no-js #search > ol > li:active .snippet span,
+#search > ol > li.active .snippet span,
+#search > ol > li:target .snippet span {
+  display: inline !important;
+}
+body.no-js #search > ol > li:active .snippet > *,
+#search > ol > li.active .snippet > *,
+#search > ol > li:target .snippet > * {
+  background-color: transparent;
+}
+body.no-js #search > ol > li:active .snippet div.flag,
+#search > ol > li.active .snippet div.flag,
+#search > ol > li:target .snippet div.flag {
+  display: none;
+}
+body.no-js #search > ol > li:active .snippet > span,
+#search > ol > li.active .snippet > span,
+#search > ol > li:target .snippet > span {
+  line-height: 1.4em;
+  width: auto;
+}
+body.no-js #search > ol > li:active .snippet > span.context-left,
+#search > ol > li.active .snippet > span.context-left,
+#search > ol > li:target .snippet > span.context-left {
+  margin-left: 0;
+  display: inline;
+  overflow: visible;
+  text-align: left;
+  width: auto;
+}
+body.no-js #search > ol > li:active .button-group.button-view,
+#search > ol > li.active .button-group.button-view,
+#search > ol > li:target .button-group.button-view {
+  display: block;
+}
+body.no-js #search > ol > li:active div.match-main,
+#search > ol > li.active div.match-main,
+#search > ol > li:target div.match-main {
+  display: block;
+  width: 100%;
+}
+body.no-js #search > ol > li:active div.match-main div.match-wrap,
+#search > ol > li.active div.match-main div.match-wrap,
+#search > ol > li:target div.match-main div.match-wrap {
+  cursor: default;
+  min-height: 20pt;
+  background-color: #f6a800;
+  width: 100%;
+  margin-left: 0;
+  overflow-x: visible;
+  white-space: normal;
+}
+body.no-js #search > ol > li:active div.meta,
+#search > ol > li.active div.meta,
+#search > ol > li:target div.meta {
+  display: none;
+}
+body.no-js #search > ol > li:active p.ref,
+#search > ol > li.active p.ref,
+#search > ol > li:target p.ref {
+  display: block;
+  color: #fefefe;
+  padding: 3pt 10pt 3pt 3pt;
+  padding-right: 20px;
+  margin: 0pt;
+  width: 100%;
+  bottom: 0;
+  z-index: 30;
+}
+body.no-js #search > ol > li:active p.ref > span.sigle,
+#search > ol > li.active p.ref > span.sigle,
+#search > ol > li:target p.ref > span.sigle {
+  font-size: 75%;
+  vertical-align: top;
+  color: #f4eebb;
+  float: right;
+}
+
+/**
+ * Alignment rules
+ */
+#search ol span.context-left {
+  display: inline-block;
+  width: 50.01%;
+  text-align: right;
+}
+#search ol.align-right {
+  text-align: right;
+}
+#search ol.align-right div.match-main span.context-right {
+  display: inline-block;
+  width: 49.915%;
+  text-align: left;
+}
+#search ol.align-center div.match-main {
+  width: 100% !important;
+}
+#search ol.align-center div.match-main > .match-wrap {
+  position: relative;
+  margin-left: 0;
+}
+#search ol.align-center li:not(.active) div.snippet {
+  white-space: normal;
+  text-align: center;
+  width: 100000pt;
+  margin-left: -50000pt;
+}
+#search ol.align-center li:not(.active) div.snippet span.context-left {
+  display: inline-block;
+  text-align: right;
+  width: 40000pt;
+  margin-left: 70vw;
+}
+#search ol.align-center li:not(.active) div.snippet span.context-right {
+  display: inline-block;
+  text-align: left;
+  width: 40000pt;
+}
+
+/**
+ * Fix empty contexts
+ */
+#search ol span.context-left:empty::after, #search ol span.context-right:empty::after {
+  content: " ";
+  display: inline-block;
+}
+
+/**
+ * Highlight rules
+ */
+mark {
+  background-color: inherit;
+  color: inherit;
+}
+
+mark > mark,
+em,
+.level-0 {
+  border-bottom-width: 2px;
+  border-bottom-style: solid;
+  padding-bottom: 0px !important;
+  font-style: normal;
+}
+
+mark > mark > mark,
+em > em,
+.level-1 {
+  padding-bottom: 3px !important;
+}
+
+mark > mark > mark > mark,
+em > em > em,
+.level-2 {
+  padding-bottom: 6px !important;
+}
+
+#search > ol > li:not(.active) mark > mark > mark > mark, #search > ol > li:not(.active) em > em > em {
+  line-height: 180%;
+}
+#search > ol > li.active mark > mark > mark > mark, #search > ol > li.active em > em > em {
+  line-height: 250%;
+}
+
+.class-1 {
+  border-color: #c1002b;
+}
+
+.class-2 {
+  border-color: #009ee0;
+}
+
+.class-3 {
+  border-color: #f6a800;
+}
+
+.class-4 {
+  border-color: #9bad0b;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Rules for logos.
+ */
+.logo::after {
+  content: "" !important;
+}
+.logo > * {
+  background-repeat: no-repeat;
+  background-size: 90%;
+  background-position: 50% 50%;
+}
+.logo > * > span {
+  position: absolute;
+  margin-left: -3000px;
+}
+
+/**
+ * Background image for the front page
+ */
+#kalamar-bg {
+  position: fixed;
+  height: 110%;
+  width: 175%;
+  top: 0;
+  z-index: -5000;
+  opacity: 0.1;
+  background-image: url("../img/korap-bg-kalamar.svg");
+  background-size: 50%;
+  background-repeat: no-repeat;
+  background-position: 50% 50%;
+}
+
+/**
+ * Logo table of the front page
+ */
+#logos {
+  position: relative;
+  text-align: right;
+  font-size: 85%;
+  right: 0;
+  width: 100%;
+  margin-left: 20px;
+  padding-left: 60%;
+}
+#logos > div {
+  border-top: 26px solid #f6a800;
+  padding-right: 2em;
+}
+#logos p {
+  text-align: left;
+  display: inline-block;
+}
+
+/**
+ * Logo: Institute for German Language
+ */
+#ids-logo {
+  display: block;
+  width: 21.0333333333em;
+  height: 6.6666666667em;
+  background-image: url("../img/ids-leibniz-institute-for-the-german-language.svg");
+}
+
+/**
+ * Logo: KorAP
+ */
+h1 {
+  position: absolute;
+  margin: 0;
+  margin-left: 15px;
+  left: 0;
+  top: 0;
+  width: 7.8em;
+  height: 2.4em;
+  z-index: 105;
+  background-size: 72%;
+  background-image: url("../img/korap-logo-kalamar.svg");
+}
+
+#overview {
+  text-align: center;
+  width: 100%;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Table view
+ *
+ * The table view is complicated, as the
+ * first column has to be static.
+ */
+div.matchtable > div {
+  z-index: 20;
+  margin-left: 179px;
+  margin-right: 20px;
+  padding: 0;
+  overflow-x: auto;
+  overflow-y: visible;
+  width: auto;
+}
+div.matchtable table {
+  display: table;
+  border-collapse: separate;
+  border-spacing: 0px;
+}
+div.matchtable th {
+  color: #fefefe;
+}
+div.matchtable td,
+div.matchtable tbody th,
+div.matchtable thead th:not(:nth-child(1)):not(:nth-child(2)):not(.cutted) {
+  cursor: pointer;
+}
+div.matchtable td:empty {
+  cursor: default;
+}
+div.matchtable td:empty::after {
+  content: " ";
+  white-space: pre;
+}
+div.matchtable td.matchkeyvalues {
+  padding: 0;
+}
+div.matchtable td.matchkeyvalues > div {
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  max-width: 25em;
+  overflow: hidden;
+  padding: 1px 6px;
+  margin: 0px;
+}
+div.matchtable td.matchkeyvalues > div > span {
+  color: #e55d00;
+  text-align: right;
+  padding-right: 0.5em;
+}
+div.matchtable td.matchkeyvalues > div > span::after {
+  content: ":";
+}
+div.matchtable tr {
+  outline: none;
+  /**
+   * The first two columns.
+   */
+}
+div.matchtable tr td.chosen,
+div.matchtable tr th.chosen,
+div.matchtable tr div.chosen {
+  background-color: #9bad0b !important;
+  color: #fefefe;
+}
+div.matchtable tr > th:nth-of-type(1),
+div.matchtable tr > th:nth-of-type(2) {
+  border-top: 2px solid #ff8000;
+  width: 88px;
+  position: absolute;
+  z-index: 80;
+  vertical-align: middle;
+  left: 0px;
+}
+div.matchtable tr > th:nth-of-type(2) {
+  left: 90px;
+}
+div.matchtable tr > * {
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  max-width: 25em;
+  overflow: hidden;
+  padding: 1px 6px;
+  margin: 0px;
+  border: 1px solid #f6a800;
+}
+div.matchtable tr > td {
+  background-color: #ffd080;
+  white-space: nowrap;
+  vertical-align: top;
+  text-align: center;
+}
+div.matchtable tr > td.mark {
+  background-color: #f4eebb;
+}
+div.matchtable tr:nth-child(even) > td {
+  background-color: #f4eebb;
+}
+div.matchtable tr:nth-child(even) > td.mark {
+  background-color: #ffd080;
+}
+div.matchtable thead th {
+  background-color: #ff8000;
+  border-top-width: 0px !important;
+  text-align: center;
+}
+div.matchtable thead th:nth-of-type(1), div.matchtable thead th:nth-of-type(2) {
+  text-align: left;
+}
+div.matchtable thead th.mark {
+  background-color: #e55d00;
+}
+div.matchtable thead th.cutted {
+  background-color: #f4eebb;
+}
+div.matchtable thead th.cutted::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  content: "";
+  color: #9bad0b;
+  padding-left: 4pt;
+  padding-right: 4pt;
+}
+div.matchtable tbody > tr:nth-of-type(1) > th {
+  border-top-color: transparent;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * SVG tree
+ */
+path.edge {
+  stroke: #ff8000;
+  stroke-width: 2px;
+  fill: none;
+}
+
+g.arc.infocus > path.edge {
+  stroke: #636f07;
+}
+
+marker#arr {
+  overflow: visible;
+}
+marker#arr path {
+  stroke: #e55d00;
+  fill: #e55d00;
+  fill-opacity: 1;
+  stroke-width: 2;
+}
+
+path.anchor {
+  stroke: #e55d00;
+  stroke-width: 3;
+  stroke-linecap: round;
+  z-index: 20;
+}
+
+g.root rect.empty {
+  stroke: #ff8000;
+  fill: #ff8000;
+  stroke-width: 2px;
+}
+
+g.middle rect,
+g.label rect {
+  stroke: #ff8000;
+  stroke-width: 2px;
+  fill: #ffd080;
+}
+
+g.label.infocus rect {
+  stroke: #636f07;
+  fill: #dce883;
+}
+
+g.middle.mark rect {
+  fill: #ff8000;
+}
+g.middle.mark > text {
+  fill: #f4eebb;
+}
+g.middle.mark > text > tspan {
+  stroke: #f4eebb;
+}
+
+g.leaf.mark text > tspan {
+  font-weight: bold;
+}
+
+g.leaf > rect {
+  display: none;
+}
+
+g > text > tspan {
+  text-anchor: middle;
+  font-size: 9pt;
+}
+
+g.leaf > text > tspan,
+text.leaf > tspan {
+  font-size: 10pt;
+  overflow: visible;
+}
+
+/**
+ * Matchtree view
+ */
+div.matchtree {
+  overflow-x: hidden;
+  overflow-y: visible;
+  padding: 0;
+  margin-top: 1pt;
+}
+div.matchtree h6 {
+  display: inline;
+  font-size: inherit;
+  color: #fefefe;
+  margin: 0;
+  padding: 0 !important;
+  float: left;
+}
+div.matchtree h6 > span {
+  border-top: 2px solid #ff8000;
+  width: 88px;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  max-width: 25em;
+  overflow: hidden;
+  padding: 1px 6px;
+  margin: 0px;
+  display: inline-block !important;
+  margin: 0;
+}
+div.matchtree h6 > span:nth-of-type(2) {
+  margin-left: 2px;
+}
+div.matchtree > div {
+  position: unset;
+  z-index: 4;
+  overflow-x: auto;
+  margin: 2px;
+  margin-left: 180px;
+  margin-right: 20px;
+  background-color: #f4eebb;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+div.metatable > dl {
+  margin-right: 20px;
+  margin-top: 2px;
+}
+div.metatable > dl > div {
+  border-color: #f6a800;
+}
+div.metatable > dl > div > * {
+  padding: 0.2em;
+}
+div.metatable > dl > div > dt {
+  background: #ff8000;
+  color: #fefefe;
+  width: 12.5em;
+}
+div.metatable > dl > div > dd {
+  background-color: #f4eebb;
+  cursor: pointer;
+}
+div.metatable > dl > div > dd.metakeyvalues {
+  padding: 0;
+}
+div.metatable > dl > div > dd.metakeyvalues > div {
+  padding: 0.2em;
+}
+div.metatable > dl > div > dd.metakeyvalues > div::before {
+  content: "• ";
+  color: #f6a800;
+}
+div.metatable > dl > div > dd.chosen,
+div.metatable > dl > div > dd > div.chosen {
+  background-color: #9bad0b !important;
+  color: #fefefe;
+}
+div.metatable > dl > div > dd[data-type="type:store"], div.metatable > dl > div > dd[data-type="type:attachement"] {
+  background-color: #ffd080;
+  cursor: default;
+}
+div.metatable > dl > div > dd[data-type="type:store"] a, div.metatable > dl > div > dd[data-type="type:attachement"] a {
+  color: inherit;
+}
+div.metatable > dl.cbm-disabled > div > dd {
+  cursor: default !important;
+}
+
+/**
+ * General matchinfo styles.
+ */
+div.matchinfo {
+  position: relative;
+  width: 100%;
+  padding-top: 2px;
+  height: auto;
+  font-size: 10pt;
+  text-align: left;
+}
+div.matchinfo:empty {
+  display: none !important;
+}
+div.matchinfo .view + .view {
+  margin-top: 8px !important;
+}
+
+div.metatable,
+div.matchtable,
+div.matchtree {
+  position: relative;
+  background-color: #f6a800;
+}
+
+div.button-group.button-panel.button-matchinfo {
+  display: inline-block;
+  margin-right: 0.5em;
+}
+div.button-group.button-panel.button-matchinfo > span {
+  position: relative;
+  box-shadow: none;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * 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>
+ */
+#pagination {
+  /*
+   * Always in fixed position.
+   * This may need to be overwritten in case multiple
+   * paginations have to be activated.
+   */
+  position: fixed;
+  font-size: 0;
+  right: 10px;
+  bottom: 20px;
+  z-index: 35;
+  padding: 0;
+  height: auto;
+  line-height: 0;
+}
+#pagination > a {
+  margin: 0;
+  font-size: 10pt;
+  padding: 0;
+}
+#pagination > a > span {
+  padding-left: 0.4em;
+  padding-right: 0.4em;
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+  display: inline-block;
+  line-height: 2em;
+  text-align: center;
+  border-top-width: 2px;
+  border-bottom-width: 2px;
+  border-top-style: solid;
+  border-bottom-style: solid;
+}
+#pagination > a:not(:link):not([rel=self]) span {
+  color: #87888a;
+}
+#pagination > a.ellipsis > span > span {
+  position: absolute;
+  margin-left: -3000px;
+}
+#pagination > a.ellipsis > span::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  content: "";
+  line-height: 1em;
+}
+#pagination > a[rel=self] > span {
+  color: #636f07;
+  background-color: #9bad0b;
+  border-color: #636f07;
+  text-shadow: none;
+  border-left-width: 2px;
+  border-right-width: 2px;
+  border-left-style: solid;
+  border-right-style: solid;
+}
+#pagination > a[rel=prev] > span {
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+  border-left-width: 2px;
+  border-left-style: solid;
+}
+#pagination > a[rel=prev] > span > span {
+  position: absolute;
+  margin-left: -3000px;
+}
+#pagination > a[rel=prev] > span::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  content: "";
+  line-height: 1em;
+}
+#pagination > a[rel=next] > span {
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+  border-right-width: 2px;
+  border-right-style: solid;
+}
+#pagination > a[rel=next] > span > span {
+  position: absolute;
+  margin-left: -3000px;
+}
+#pagination > a[rel=next] > span::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  content: "";
+  line-height: 1em;
+}
+#pagination > a:link:hover, #pagination > a:link:focus {
+  outline: none;
+}
+#pagination > a:link:hover span, #pagination > a:link:focus span {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+pre.query {
+  overflow-x: hidden;
+  padding: 0.5em;
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  position: relative;
+  border-width: 2px;
+  border-style: solid;
+  border-radius: 6px;
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+}
+pre.query:not(.unsupported) {
+  cursor: pointer;
+}
+pre.query:not(.unsupported):hover {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+pre.query:not(.unsupported):active {
+  color: #636f07;
+  background-color: #9bad0b;
+  border-color: #636f07;
+  text-shadow: none;
+}
+pre.query.unsupported span {
+  vertical-align: super;
+  color: #009ee0;
+  font-size: 90%;
+  font-weight: bold;
+  cursor: help;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Rules applicable for the result panel
+ */
+#resultinfo {
+  clear: both;
+  text-align: right;
+  line-height: 1.5em;
+  min-height: 1.5em;
+  margin-top: 0.4em;
+  font-size: 10pt;
+  /*
+   * 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 p.found {
+  display: inline;
+  padding: 0;
+  margin: 0;
+  text-align: right;
+}
+#resultinfo.found {
+  position: relative;
+  margin-bottom: 0px;
+}
+#resultinfo.found .button-group > span {
+  margin-bottom: 0;
+  border-bottom-width: 0;
+  box-shadow: none;
+}
+#resultinfo.found .button-group > span:first-child {
+  border-bottom-left-radius: 0;
+}
+#resultinfo.found .button-group > span:last-child {
+  border-bottom-right-radius: 0;
+}
+
+div.result.panel .view {
+  border: 1px solid #87888a;
+  background-color: #f6a800;
+}
+
+.result.button-group.button-panel {
+  display: inline-block;
+  width: auto;
+  vertical-align: bottom;
+  line-height: 1.5em;
+}
+.result.button-group.button-panel > span {
+  line-height: 1.5em;
+  border-width: 1px 0;
+}
+.result.button-group.button-panel > span:first-child {
+  border-left-width: 1px;
+}
+.result.button-group.button-panel > span:last-child {
+  border-right-width: 1px;
+}
+
+#total-results {
+  color: #9bad0b;
+  font-weight: bold;
+}
+
+.no-results {
+  margin: 0 auto;
+  text-align: center;
+}
+.no-results code {
+  font-weight: bold;
+}
+
+.button-icon.align.left::after {
+  content: "";
+}
+.button-icon.align.right::after {
+  content: "";
+}
+.button-icon.align.center::after {
+  content: "";
+}
+.button-icon.show-kq::after {
+  content: "";
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Rules for the embedded documentation.
+ */
+#tutorial {
+  position: fixed;
+  z-index: 9999;
+  top: 5%;
+  bottom: 5%;
+  left: 2%;
+  right: 2%;
+  padding-right: 20px;
+  background-color: #fefefe;
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+  border-width: 4px;
+  border-color: #616263;
+  border-style: solid;
+  border-radius: 6px;
+}
+#tutorial .button-group.button-view {
+  background-color: #87888a;
+  display: block;
+  height: 100%;
+}
+#tutorial iframe {
+  border-width: 0;
+  width: 100%;
+  min-height: 100.1%;
+  background-image: url("../img/korap-bg-kalamar.svg");
+  background-repeat: no-repeat;
+  background-position: center center;
+  background-size: 20%;
+}
+
+p.bibentry {
+  font-size: 80%;
+  margin-left: 3em;
+  margin-bottom: 3em;
+  text-indent: -1.5em;
+}
+p.bibentry cite {
+  font-weight: bold;
+}
+
+body.embedded {
+  background-color: #fefefe;
+}
+body.embedded aside {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  padding-top: 0;
+  background-color: #87888a;
+}
+body.embedded aside > div {
+  position: relative;
+  top: 50%;
+  -webkit-transform: translateY(-50%);
+  -ms-transform: translateY(-50%);
+  transform: translateY(-50%);
+}
+
+main.tutorial a.embedded-link::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  content: " ";
+  font-size: 75%;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Styles for the KoralQuery view.
+ */
+#koralquery {
+  white-space: pre;
+}
+#koralquery > div {
+  background-color: #fefefe;
+  overflow-x: auto;
+  font-size: 85%;
+  margin-top: 2pt;
+  margin-right: 20px;
+  margin-bottom: 2pt;
+  margin-left: 2pt;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+.alertify,
+.alertify-show,
+.alertify-log {
+  -webkit-transition: all 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
+  -moz-transition: all 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
+  -ms-transition: all 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
+  -o-transition: all 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
+  transition: all 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
+  /* easeOutBack */
+}
+
+.alertify-hide {
+  -webkit-transition: all 250ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  -moz-transition: all 250ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  -ms-transition: all 250ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  -o-transition: all 250ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  transition: all 250ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  /* easeInBack */
+}
+
+.alertify-log-hide {
+  -webkit-transition: all 500ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  -moz-transition: all 500ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  -ms-transition: all 500ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  -o-transition: all 500ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  transition: all 500ms cubic-bezier(0.6, -0.28, 0.735, 0.045);
+  /* easeInBack */
+}
+
+.alertify-cover {
+  position: fixed;
+  z-index: 99999;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background-color: white;
+  filter: opacity(0);
+  opacity: 0;
+}
+
+.alertify-cover-hidden {
+  display: none;
+}
+
+.alertify {
+  position: fixed;
+  z-index: 99999;
+  top: 50px;
+  left: 50%;
+  width: 550px;
+  margin-left: -275px;
+  opacity: 1;
+}
+
+.alertify-hidden {
+  -webkit-transform: translate(0, -150px);
+  -moz-transform: translate(0, -150px);
+  -ms-transform: translate(0, -150px);
+  -o-transform: translate(0, -150px);
+  transform: translate(0, -150px);
+  opacity: 0;
+  display: none;
+}
+
+/* overwrite display: none; for everything except IE6-8 */
+:root * > .alertify-hidden {
+  display: block;
+  visibility: hidden;
+}
+
+.alertify-logs {
+  position: fixed;
+  z-index: 5000;
+  bottom: 10px;
+  right: 10px;
+  width: 300px;
+}
+
+.alertify-logs-hidden {
+  display: none;
+}
+
+.alertify-log {
+  display: block;
+  margin-top: 10px;
+  position: relative;
+  right: -300px;
+  opacity: 0;
+}
+
+.alertify-log-show {
+  right: 0;
+  opacity: 1;
+}
+
+.alertify-log-hide {
+  -webkit-transform: translate(300px, 0);
+  -moz-transform: translate(300px, 0);
+  -ms-transform: translate(300px, 0);
+  -o-transform: translate(300px, 0);
+  transform: translate(300px, 0);
+  opacity: 0;
+}
+
+.alertify-dialog {
+  padding: 25px;
+}
+
+.alertify-resetFocus {
+  border: 0;
+  clip: rect(0 0 0 0);
+  height: 1px;
+  margin: -1px;
+  overflow: hidden;
+  padding: 0;
+  position: absolute;
+  width: 1px;
+}
+
+.alertify-inner {
+  text-align: center;
+}
+
+.alertify-text {
+  margin-bottom: 15px;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  font-size: 100%;
+}
+
+.alertify-button,
+.alertify-button:hover,
+.alertify-button:active,
+.alertify-button:visited {
+  background: none;
+  text-decoration: none;
+  border: none;
+  /* line-height and font-size for input button */
+  line-height: 1.5;
+  font-size: 100%;
+  display: inline-block;
+  cursor: pointer;
+  margin-left: 5px;
+}
+
+@media only screen and (max-width: 680px) {
+  .alertify,
+.alertify-logs {
+    width: 90%;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
+  }
+
+  .alertify {
+    left: 5%;
+    margin: 0;
+  }
+}
+/**
+ * Default Look and Feel
+ */
+.alertify,
+.alertify-log {
+  font-family: sans-serif;
+}
+
+.alertify {
+  background: #FFF;
+  border: 10px solid #333;
+  /* browsers that don't support rgba */
+  border: 10px solid rgba(0, 0, 0, 0.7);
+  border-radius: 8px;
+  box-shadow: 0 3px 3px rgba(0, 0, 0, 0.3);
+  -webkit-background-clip: padding;
+  /* Safari 4? Chrome 6? */
+  -moz-background-clip: padding;
+  /* Firefox 3.6 */
+  background-clip: padding-box;
+  /* Firefox 4, Safari 5, Opera 10, IE 9 */
+}
+
+.alertify-text {
+  border: 1px solid #CCC;
+  padding: 10px;
+  border-radius: 4px;
+}
+
+.alertify-button {
+  border-radius: 4px;
+  color: #FFF;
+  font-weight: bold;
+  padding: 6px 15px;
+  text-decoration: none;
+  text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);
+  box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5);
+  background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0));
+  background-image: -moz-linear-gradient(top, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0));
+  background-image: -ms-linear-gradient(top, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0));
+  background-image: -o-linear-gradient(top, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0));
+  background-image: linear-gradient(top, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0));
+}
+
+.alertify-button:hover,
+.alertify-button:focus {
+  outline: none;
+  background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));
+  background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));
+  background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));
+  background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));
+  background-image: linear-gradient(top, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0));
+}
+
+.alertify-button:focus {
+  box-shadow: 0 0 15px #2B72D5;
+}
+
+.alertify-button:active {
+  position: relative;
+  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+
+.alertify-button-cancel,
+.alertify-button-cancel:hover,
+.alertify-button-cancel:focus {
+  background-color: #FE1A00;
+  border: 1px solid #D83526;
+}
+
+.alertify-button-ok,
+.alertify-button-ok:hover,
+.alertify-button-ok:focus {
+  background-color: #5CB811;
+  border: 1px solid #3B7808;
+}
+
+.alertify-log {
+  background: #1F1F1F;
+  background: black;
+  padding: 15px;
+  border-radius: 4px;
+  color: #FFF;
+}
+
+/*
+.alertify-log-error {
+  background: #FE1A00;
+  //  background: rgba(254,26,0,.9);
+    background: rgb(254,26,0);
+}
+*/
+.alertify-log-success {
+  background: #5CB811;
+  background: #5cb811;
+}
+
+/**
+ * Alertify styles.
+ */
+article.alertify-log-warn {
+  background-color: #f6a800;
+}
+article.alertify-log-warn code.src {
+  color: #e55d00;
+}
+
+article.alertify-log code.src {
+  display: block;
+  color: black;
+  font-size: 70%;
+}
+
+.alertify-log-error {
+  background-color: #fe1a00;
+}
+
+#notifications {
+  display: none;
+}
+
+div.notify {
+  position: relative;
+  margin: 0.5em auto;
+  display: block;
+  padding: 0.5em;
+  border-radius: 6px;
+  max-width: 30em;
+  background-color: #fe1a00;
+  color: #fefefe;
+}
+div.notify.notify-success {
+  background-color: #636f07;
+}
+div.notify.notify-warn {
+  background-color: #f29400;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Styles for the intro page
+ */
+div.intro a:visited {
+  color: #e55d00;
+}
+div.intro div.announcement {
+  background-color: #f4eebb;
+  padding: 8px;
+  border: 5px dashed #f6a800;
+  border-radius: 1em;
+  width: 90%;
+  margin: auto;
+}
+
+aside.active ~ main div.intro {
+  margin-left: 198px;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/*
+ * Define the base layout of horizontal button groups
+ */
+.button-group > span {
+  cursor: pointer;
+}
+.button-group.button-panel > span,
+.button-group.button-panel a, .button-group.operators > span,
+.button-group.operators a {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+  font-size: 9pt;
+  font-weight: normal;
+  line-height: 1.5em;
+  padding: 0 4px;
+  display: inline-block;
+  border-style: solid;
+  border-width: 2px 0;
+}
+.button-group.button-panel > span:hover,
+.button-group.button-panel a:hover, .button-group.operators > span:hover,
+.button-group.operators a:hover {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+.button-group.button-panel > span:first-child,
+.button-group.button-panel a:first-child, .button-group.operators > span:first-child,
+.button-group.operators a:first-child {
+  border-left-width: 2px;
+  border-top-left-radius: 6px;
+  border-bottom-left-radius: 6px;
+}
+.button-group.button-panel > span:last-child,
+.button-group.button-panel a:last-child, .button-group.operators > span:last-child,
+.button-group.operators a:last-child {
+  border-right-width: 2px;
+  border-top-right-radius: 6px;
+  border-bottom-right-radius: 6px;
+}
+.button-group.button-panel > span > span.check,
+.button-group.button-panel a > span.check {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  width: 1em;
+  display: inline-block;
+  text-align: left;
+}
+.button-group.button-panel > span > span.check:not(.checked)::after,
+.button-group.button-panel a > span.check:not(.checked)::after {
+  content: "";
+}
+.button-group.button-panel > span > span.check.checked::after,
+.button-group.button-panel a > span.check.checked::after {
+  content: "";
+}
+.button-group.button-panel > span > span.check > span,
+.button-group.button-panel a > span.check > span {
+  position: absolute;
+  margin-left: -3000px;
+}
+.button-group.button-view {
+  position: absolute;
+  display: block;
+  right: 0;
+  top: 0;
+  z-index: 20;
+  margin: 0;
+  padding: 0;
+  width: 20px;
+  font-size: 10pt;
+  color: #fefefe;
+}
+.button-group.button-view > span:first-child {
+  margin-top: 2px;
+}
+.button-group.button-view > span {
+  display: block !important;
+  border-width: 0;
+  text-decoration: none;
+  text-align: center;
+  font-style: normal;
+}
+.button-group.button-view > span.download::after {
+  content: "";
+}
+.button-group.button-view > span.close::after {
+  content: "";
+}
+.button-group.button-view > span.minimize::after {
+  content: "";
+}
+.button-group.button-view > span.plugin::after {
+  content: "";
+}
+
+ul.menu.button-group-list {
+  border-top-right-radius: 8px;
+  position: fixed;
+  font-size: 10pt;
+  left: 0;
+  text-align: left;
+  margin: -2px;
+  margin-top: 0;
+}
+ul.menu.button-group-list > li:first-of-type {
+  border-top-right-radius: 5px;
+}
+
+.button-icon {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  line-height: 1.3;
+}
+.button-icon > span {
+  position: absolute;
+  margin-left: -3000px;
+}
+.button-icon[data-icon]::after {
+  content: attr(data-icon);
+}
+
+.button-panel .button-icon {
+  line-height: 0.7;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Base styles for all panels and views
+ */
+div.panel {
+  position: relative;
+  width: 100%;
+  display: block;
+}
+
+div.view {
+  position: relative;
+  padding-top: 2px;
+  display: block;
+  width: 100%;
+}
+
+div.view:not(.show) {
+  display: none;
+}
+
+.introjs-overlay {
+  position: absolute;
+  box-sizing: content-box;
+  z-index: 999999;
+  background-color: #000;
+  opacity: 0;
+  background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.4) 0, rgba(0, 0, 0, 0.9) 100%);
+  background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgba(0, 0, 0, 0.4)), color-stop(100%, rgba(0, 0, 0, 0.9)));
+  background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.4) 0, rgba(0, 0, 0, 0.9) 100%);
+  background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.4) 0, rgba(0, 0, 0, 0.9) 100%);
+  background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.4) 0, rgba(0, 0, 0, 0.9) 100%);
+  background: radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.4) 0, rgba(0, 0, 0, 0.9) 100%);
+  filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#66000000',endColorstr='#e6000000',GradientType=1)";
+  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
+  filter: alpha(opacity=50);
+  -webkit-transition: all 0.3s ease-out;
+  -moz-transition: all 0.3s ease-out;
+  -ms-transition: all 0.3s ease-out;
+  -o-transition: all 0.3s ease-out;
+  transition: all 0.3s ease-out;
+}
+
+.introjs-fixParent {
+  z-index: auto !important;
+  opacity: 1 !important;
+  -webkit-transform: none !important;
+  -moz-transform: none !important;
+  -ms-transform: none !important;
+  -o-transform: none !important;
+  transform: none !important;
+}
+
+.introjs-showElement,
+tr.introjs-showElement > td,
+tr.introjs-showElement > th {
+  z-index: 9999999 !important;
+}
+
+.introjs-disableInteraction {
+  z-index: 99999999 !important;
+  position: absolute;
+  background-color: white;
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+
+.introjs-relativePosition,
+tr.introjs-showElement > td,
+tr.introjs-showElement > th {
+  position: relative;
+}
+
+.introjs-helperLayer {
+  box-sizing: content-box;
+  position: absolute;
+  z-index: 9999998;
+  background-color: #FFF;
+  background-color: rgba(255, 255, 255, 0.9);
+  border: 1px solid #777;
+  border: 1px solid rgba(0, 0, 0, 0.5);
+  border-radius: 4px;
+  box-shadow: 0 2px 15px rgba(0, 0, 0, 0.4);
+  -webkit-transition: all 0.3s ease-out;
+  -moz-transition: all 0.3s ease-out;
+  -ms-transition: all 0.3s ease-out;
+  -o-transition: all 0.3s ease-out;
+  transition: all 0.3s ease-out;
+}
+
+.introjs-tooltipReferenceLayer {
+  box-sizing: content-box;
+  position: absolute;
+  visibility: hidden;
+  z-index: 100000000;
+  background-color: transparent;
+  -webkit-transition: all 0.3s ease-out;
+  -moz-transition: all 0.3s ease-out;
+  -ms-transition: all 0.3s ease-out;
+  -o-transition: all 0.3s ease-out;
+  transition: all 0.3s ease-out;
+}
+
+.introjs-helperLayer *,
+.introjs-helperLayer *:before,
+.introjs-helperLayer *:after {
+  -webkit-box-sizing: content-box;
+  -moz-box-sizing: content-box;
+  -ms-box-sizing: content-box;
+  -o-box-sizing: content-box;
+  box-sizing: content-box;
+}
+
+.introjs-helperNumberLayer {
+  box-sizing: content-box;
+  position: absolute;
+  visibility: visible;
+  top: -16px;
+  left: -16px;
+  z-index: 9999999999 !important;
+  padding: 2px;
+  font-family: Arial, verdana, tahoma;
+  font-size: 13px;
+  font-weight: bold;
+  color: white;
+  text-align: center;
+  text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.3);
+  background: #ff3019;
+  /* Old browsers */
+  background: -webkit-linear-gradient(top, #ff3019 0%, #cf0404 100%);
+  /* Chrome10+,Safari5.1+ */
+  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ff3019), color-stop(100%, #cf0404));
+  /* Chrome,Safari4+ */
+  background: -moz-linear-gradient(top, #ff3019 0%, #cf0404 100%);
+  /* FF3.6+ */
+  background: -ms-linear-gradient(top, #ff3019 0%, #cf0404 100%);
+  /* IE10+ */
+  background: -o-linear-gradient(top, #ff3019 0%, #cf0404 100%);
+  /* Opera 11.10+ */
+  background: linear-gradient(to bottom, #ff3019 0%, #cf0404 100%);
+  /* W3C */
+  width: 20px;
+  height: 20px;
+  line-height: 20px;
+  border: 3px solid white;
+  border-radius: 50%;
+  filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3019', endColorstr='#cf0404', GradientType=0)";
+  /* IE6-9 */
+  filter: "progid:DXImageTransform.Microsoft.Shadow(direction=135, strength=2, color=ff0000)";
+  /* IE10 text shadows */
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.4);
+}
+
+.introjs-arrow {
+  border: 5px solid transparent;
+  content: "";
+  position: absolute;
+}
+
+.introjs-arrow.top {
+  top: -10px;
+  border-bottom-color: white;
+}
+
+.introjs-arrow.top-right {
+  top: -10px;
+  right: 10px;
+  border-bottom-color: white;
+}
+
+.introjs-arrow.top-middle {
+  top: -10px;
+  left: 50%;
+  margin-left: -5px;
+  border-bottom-color: white;
+}
+
+.introjs-arrow.right {
+  right: -10px;
+  top: 10px;
+  border-left-color: white;
+}
+
+.introjs-arrow.right-bottom {
+  bottom: 10px;
+  right: -10px;
+  border-left-color: white;
+}
+
+.introjs-arrow.bottom {
+  bottom: -10px;
+  border-top-color: white;
+}
+
+.introjs-arrow.bottom-right {
+  bottom: -10px;
+  right: 10px;
+  border-top-color: white;
+}
+
+.introjs-arrow.bottom-middle {
+  bottom: -10px;
+  left: 50%;
+  margin-left: -5px;
+  border-top-color: white;
+}
+
+.introjs-arrow.left {
+  left: -10px;
+  top: 10px;
+  border-right-color: white;
+}
+
+.introjs-arrow.left-bottom {
+  left: -10px;
+  bottom: 10px;
+  border-right-color: white;
+}
+
+.introjs-tooltip {
+  box-sizing: content-box;
+  position: absolute;
+  visibility: visible;
+  padding: 10px;
+  background-color: white;
+  min-width: 200px;
+  max-width: 300px;
+  border-radius: 3px;
+  box-shadow: 0 1px 10px rgba(0, 0, 0, 0.4);
+  -webkit-transition: opacity 0.1s ease-out;
+  -moz-transition: opacity 0.1s ease-out;
+  -ms-transition: opacity 0.1s ease-out;
+  -o-transition: opacity 0.1s ease-out;
+  transition: opacity 0.1s ease-out;
+}
+
+.introjs-tooltipbuttons {
+  text-align: right;
+  white-space: nowrap;
+}
+
+/*
+ Buttons style by http://nicolasgallagher.com/lab/css3-github-buttons/
+ Changed by Afshin Mehrabani
+*/
+.introjs-button {
+  box-sizing: content-box;
+  position: relative;
+  overflow: visible;
+  display: inline-block;
+  padding: 0.3em 0.8em;
+  border: 1px solid #d4d4d4;
+  margin: 0;
+  text-decoration: none;
+  text-shadow: 1px 1px 0 #fff;
+  font: 11px/normal sans-serif;
+  color: #333;
+  white-space: nowrap;
+  cursor: pointer;
+  outline: none;
+  background-color: #ececec;
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f4f4f4), to(#ececec));
+  background-image: -moz-linear-gradient(#f4f4f4, #ececec);
+  background-image: -o-linear-gradient(#f4f4f4, #ececec);
+  background-image: linear-gradient(#f4f4f4, #ececec);
+  -webkit-background-clip: padding;
+  -moz-background-clip: padding;
+  -o-background-clip: padding-box;
+  /*background-clip: padding-box;*/
+  /* commented out due to Opera 11.10 bug */
+  -webkit-border-radius: 0.2em;
+  -moz-border-radius: 0.2em;
+  border-radius: 0.2em;
+  /* IE hacks */
+  zoom: 1;
+  *display: inline;
+  margin-top: 10px;
+}
+
+.introjs-button:hover {
+  border-color: #bcbcbc;
+  text-decoration: none;
+  box-shadow: 0px 1px 1px #e3e3e3;
+}
+
+.introjs-button:focus,
+.introjs-button:active {
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ececec), to(#f4f4f4));
+  background-image: -moz-linear-gradient(#ececec, #f4f4f4);
+  background-image: -o-linear-gradient(#ececec, #f4f4f4);
+  background-image: linear-gradient(#ececec, #f4f4f4);
+}
+
+/* overrides extra padding on button elements in Firefox */
+.introjs-button::-moz-focus-inner {
+  padding: 0;
+  border: 0;
+}
+
+.introjs-skipbutton {
+  box-sizing: content-box;
+  margin-right: 5px;
+  color: #7a7a7a;
+}
+
+.introjs-prevbutton {
+  -webkit-border-radius: 0.2em 0 0 0.2em;
+  -moz-border-radius: 0.2em 0 0 0.2em;
+  border-radius: 0.2em 0 0 0.2em;
+  border-right: none;
+}
+
+.introjs-prevbutton.introjs-fullbutton {
+  border: 1px solid #d4d4d4;
+  -webkit-border-radius: 0.2em;
+  -moz-border-radius: 0.2em;
+  border-radius: 0.2em;
+}
+
+.introjs-nextbutton {
+  -webkit-border-radius: 0 0.2em 0.2em 0;
+  -moz-border-radius: 0 0.2em 0.2em 0;
+  border-radius: 0 0.2em 0.2em 0;
+}
+
+.introjs-nextbutton.introjs-fullbutton {
+  -webkit-border-radius: 0.2em;
+  -moz-border-radius: 0.2em;
+  border-radius: 0.2em;
+}
+
+.introjs-disabled, .introjs-disabled:hover, .introjs-disabled:focus {
+  color: #9a9a9a;
+  border-color: #d4d4d4;
+  box-shadow: none;
+  cursor: default;
+  background-color: #f4f4f4;
+  background-image: none;
+  text-decoration: none;
+}
+
+.introjs-hidden {
+  display: none;
+}
+
+.introjs-bullets {
+  text-align: center;
+}
+
+.introjs-bullets ul {
+  box-sizing: content-box;
+  clear: both;
+  margin: 15px auto 0;
+  padding: 0;
+  display: inline-block;
+}
+
+.introjs-bullets ul li {
+  box-sizing: content-box;
+  list-style: none;
+  float: left;
+  margin: 0 2px;
+}
+
+.introjs-bullets ul li a {
+  box-sizing: content-box;
+  display: block;
+  width: 6px;
+  height: 6px;
+  background: #ccc;
+  border-radius: 10px;
+  -moz-border-radius: 10px;
+  -webkit-border-radius: 10px;
+  text-decoration: none;
+  cursor: pointer;
+}
+
+.introjs-bullets ul li a:hover {
+  background: #999;
+}
+
+.introjs-bullets ul li a.active {
+  background: #999;
+}
+
+.introjs-progress {
+  box-sizing: content-box;
+  overflow: hidden;
+  height: 10px;
+  margin: 10px 0 5px 0;
+  border-radius: 4px;
+  background-color: #ecf0f1;
+}
+
+.introjs-progressbar {
+  box-sizing: content-box;
+  float: left;
+  width: 0%;
+  height: 100%;
+  font-size: 10px;
+  line-height: 10px;
+  text-align: center;
+  background-color: #08c;
+}
+
+.introjsFloatingElement {
+  position: absolute;
+  height: 0;
+  width: 0;
+  left: 50%;
+  top: 50%;
+}
+
+.introjs-fixedTooltip {
+  position: fixed;
+}
+
+.introjs-hint {
+  box-sizing: content-box;
+  position: absolute;
+  background: transparent;
+  width: 20px;
+  height: 15px;
+  cursor: pointer;
+}
+
+.introjs-hint:focus {
+  border: 0;
+  outline: 0;
+}
+
+.introjs-hidehint {
+  display: none;
+}
+
+.introjs-fixedhint {
+  position: fixed;
+}
+
+.introjs-hint:hover > .introjs-hint-pulse {
+  border: 5px solid rgba(60, 60, 60, 0.57);
+}
+
+.introjs-hint-pulse {
+  box-sizing: content-box;
+  width: 10px;
+  height: 10px;
+  border: 5px solid rgba(60, 60, 60, 0.27);
+  -webkit-border-radius: 30px;
+  -moz-border-radius: 30px;
+  border-radius: 30px;
+  background-color: rgba(136, 136, 136, 0.24);
+  z-index: 10;
+  position: absolute;
+  -webkit-transition: all 0.2s ease-out;
+  -moz-transition: all 0.2s ease-out;
+  -ms-transition: all 0.2s ease-out;
+  -o-transition: all 0.2s ease-out;
+  transition: all 0.2s ease-out;
+}
+
+.introjs-hint-no-anim .introjs-hint-dot {
+  -webkit-animation: none;
+  -moz-animation: none;
+  animation: none;
+}
+
+.introjs-hint-dot {
+  box-sizing: content-box;
+  border: 10px solid rgba(146, 146, 146, 0.36);
+  background: transparent;
+  -webkit-border-radius: 60px;
+  -moz-border-radius: 60px;
+  border-radius: 60px;
+  height: 50px;
+  width: 50px;
+  -webkit-animation: introjspulse 3s ease-out;
+  -moz-animation: introjspulse 3s ease-out;
+  animation: introjspulse 3s ease-out;
+  -webkit-animation-iteration-count: infinite;
+  -moz-animation-iteration-count: infinite;
+  animation-iteration-count: infinite;
+  position: absolute;
+  top: -25px;
+  left: -25px;
+  z-index: 1;
+  opacity: 0;
+}
+
+@-webkit-keyframes introjspulse {
+  0% {
+    -webkit-transform: scale(0);
+    opacity: 0;
+  }
+  25% {
+    -webkit-transform: scale(0);
+    opacity: 0.1;
+  }
+  50% {
+    -webkit-transform: scale(0.1);
+    opacity: 0.3;
+  }
+  75% {
+    -webkit-transform: scale(0.5);
+    opacity: 0.5;
+  }
+  100% {
+    -webkit-transform: scale(1);
+    opacity: 0;
+  }
+}
+@-moz-keyframes introjspulse {
+  0% {
+    -moz-transform: scale(0);
+    opacity: 0;
+  }
+  25% {
+    -moz-transform: scale(0);
+    opacity: 0.1;
+  }
+  50% {
+    -moz-transform: scale(0.1);
+    opacity: 0.3;
+  }
+  75% {
+    -moz-transform: scale(0.5);
+    opacity: 0.5;
+  }
+  100% {
+    -moz-transform: scale(1);
+    opacity: 0;
+  }
+}
+@keyframes introjspulse {
+  0% {
+    transform: scale(0);
+    opacity: 0;
+  }
+  25% {
+    transform: scale(0);
+    opacity: 0.1;
+  }
+  50% {
+    transform: scale(0.1);
+    opacity: 0.3;
+  }
+  75% {
+    transform: scale(0.5);
+    opacity: 0.5;
+  }
+  100% {
+    transform: scale(1);
+    opacity: 0;
+  }
+}
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Styles overriding introJS styles
+ */
+.introjs-helperLayer {
+  background-color: transparent;
+}
+
+.introjs-tooltip.gTstartSearch {
+  max-width: 500px;
+}
+
+.tgreeting {
+  font-weight: bold;
+  color: #e55d00;
+}
+
+.pfirstStep {
+  width: 500px;
+}
+
+.introjs-donebutton {
+  float: right;
+  margin-left: 5px;
+}
+
+.introjs-skipbutton {
+  color: #333;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Styles for OAuth management form.
+ */
+ul.client-list {
+  padding-left: 1.5em;
+}
+ul.client-list li.client {
+  list-style-type: none;
+}
+ul.client-list li.client span.client-name::before {
+  margin-left: -1.5em;
+}
+ul.client-list li.client span.client-desc {
+  font-size: 70%;
+  display: block;
+}
+
+span.client-name {
+  font-weight: bold;
+}
+span.client-name::before {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  display: inline-block;
+  width: 1.5em;
+  content: "";
+  color: #009ee0;
+  font-size: 100%;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+section#news {
+  background-color: #e3e8a3;
+  mix-blend-mode: soft-light;
+  padding: 1em;
+  padding-right: 2em;
+  border-radius: 6px;
+  border-left: 5px solid #636f07;
+}
+section#news dt {
+  float: left;
+  clear: left;
+  width: 15ex;
+  text-align: right;
+  font-weight: bold;
+}
+section#news dd.maintenance > h4::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  color: #c1002b;
+  content: " ";
+}
+section#news dd {
+  margin: 0 1ex 0 16ex;
+  padding: 0 0 0.5em 1em;
+}
+section#news dd > p {
+  max-width: 80ex;
+  margin-block-start: 0ex;
+}
+section#news dd > h4 {
+  margin-block-start: 0ex;
+  margin-block-end: 0.33ex;
+}
+
+@media all and (max-width: 42.5em) {
+  section#news dt {
+    text-align: left;
+    float: none;
+    width: auto;
+    padding-bottom: 0.2em;
+  }
+  section#news dd {
+    margin-left: 1em;
+  }
+}
+/**
+ * Base rules for all plugin related styles,
+ * like widgets.
+ */
+div.view.widget {
+  padding-right: 20px;
+}
+div.view.widget > iframe {
+  margin: 0;
+  box-sizing: border-box;
+  padding: 0;
+  width: 100%;
+  overflow-x: auto;
+}
+
+div.panel.result > div > div.widget > iframe {
+  background-color: #fefefe;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+main {
+  padding-bottom: 20pt;
+  margin-left: 40px;
+  margin-right: 20px;
+}
+main.embedded {
+  margin-left: 14px;
+  margin-right: 14px;
+}
+main p {
+  text-align: justify;
+  hyphens: auto;
+}
+main h2#page-top {
+  margin-top: 0;
+  padding-top: 1em;
+}
+main.page {
+  margin-left: 245px;
+}
+main.page p code,
+main.page li code,
+main.page dd code,
+main.page dt code {
+  background-color: #d9dadb;
+  color: #87888a;
+  padding: 0 0.5em;
+  border-radius: 6px;
+}
+main p.hint {
+  margin: 0 auto;
+  text-align: center;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Rules for the Kalamar hint helper.
+ */
+ul.menu.hint {
+  display: inline-block;
+  white-space: normal;
+  text-align: left;
+  max-width: 23em !important;
+  top: 0;
+}
+ul.menu.hint > li:first-of-type {
+  border-top-width: 1px;
+  border-top-left-radius: 0;
+  border-top-right-radius: 0;
+}
+
+div.alert.hint {
+  position: absolute;
+  background-color: #fe1a00;
+  color: #fefefe;
+  padding: 3pt 6pt;
+  margin-top: 8px;
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+  width: auto;
+  min-width: 10em;
+  max-width: 23em !important;
+  transition: opacity 0.2s ease 0s;
+  border-radius: 6px;
+  border-top-left-radius: 0;
+}
+div.alert.hint::before {
+  position: absolute;
+  content: "";
+  display: block;
+  top: -12px;
+  left: 0;
+  width: 0;
+  white-space: normal;
+  border-width: 0 8px 12px 0;
+  border-style: solid;
+  border-color: #fe1a00 transparent;
+}
+
+.hint.mirror {
+  position: absolute;
+  display: block;
+  left: 0;
+  top: 0;
+  z-index: 90;
+  white-space: pre-wrap;
+  height: 0;
+}
+.hint.mirror > span {
+  opacity: 0;
+  white-space: pre-wrap;
+  overflow: hidden;
+}
+.hint.mirror > div {
+  position: absolute;
+  display: block;
+  cursor: pointer;
+  transition: left 0.2s ease 0s;
+  top: 0;
+  left: 0;
+  text-align: left;
+  padding: 0;
+  border-top: 5px solid #f6a800;
+  height: 10px;
+  width: 1.2em;
+}
+.hint.mirror > div:hover:not(.active) {
+  border-top: 10px solid #f6a800;
+}
+.hint.mirror > div.active {
+  border-top-width: 0;
+  height: 0;
+  width: 23em;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Search field
+ */
+#q-field {
+  display: block;
+  margin-bottom: 3px;
+  width: 100%;
+  margin: 0;
+}
+#q-field::-webkit-search-cancel-button {
+  display: none;
+}
+#q-field.loading {
+  background-color: #f4eebb;
+  background-image: none;
+}
+
+#searchbar {
+  position: relative;
+  width: 100%;
+  padding: 0;
+  padding-right: 70px;
+}
+#searchbar button[type=submit] {
+  position: absolute;
+  padding: 0;
+  right: 40px;
+}
+#searchbar button[type=submit]:not(.loading)::after {
+  content: "";
+}
+
+.query.panel {
+  padding-right: 70px;
+}
+
+.query.button-group.button-panel {
+  display: block;
+  width: auto;
+  text-align: right;
+  vertical-align: top;
+  line-height: 1.3em;
+}
+.query.button-group.button-panel > span {
+  box-shadow: none;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Virtual Collection Builder
+ */
+.vc {
+  margin-top: 4pt;
+  /**
+   * All document rules
+   */
+  /**
+   * All operators
+   */
+}
+.vc .builder {
+  position: initial;
+}
+.vc .docGroup {
+  position: relative;
+  display: inline-block;
+  margin-left: 4em;
+  padding: 4pt 2pt 4pt 0pt;
+  border-radius: 12px;
+  border-style: solid;
+  border-width: 0 0.4em;
+  /**
+   * All operators on groups
+   */
+}
+.vc .docGroup .docGroup {
+  display: block;
+}
+.vc .docGroup[data-operation] > .doc:first-child::before,
+.vc .docGroup[data-operation] > .docGroup:first-child::before {
+  content: none;
+}
+.vc .docGroup[data-operation] > .doc::before,
+.vc .docGroup[data-operation] > .docGroup::before {
+  position: absolute;
+  display: inline-block;
+  text-align: right;
+  width: 4em;
+  margin-left: -4.5em;
+  line-height: 1.5em;
+  border-top: 2px solid transparent;
+}
+.vc .docGroup[data-operation] > .docGroup::before {
+  margin-left: -4.9em;
+}
+.vc .docGroup[data-operation=or] > .doc::before,
+.vc .docGroup[data-operation=or] > .docGroup::before {
+  content: "or";
+}
+.vc .docGroup[data-operation=and] > .doc::before,
+.vc .docGroup[data-operation=and] > .docGroup::before {
+  content: "and";
+}
+.vc .docGroup > .operators {
+  position: absolute;
+  display: block;
+  vertical-align: middle;
+  top: 10px;
+  left: 3px;
+  margin-left: 100%;
+  padding: 0;
+}
+.vc .docGroup > .operators > span:first-child {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+}
+.vc .doc {
+  line-height: 170%;
+  padding-left: 4em;
+}
+.vc .doc > span + span,
+.vc .doc > span + div + span,
+.vc .doc > span + ul + span {
+  margin-left: 5pt;
+}
+.vc .doc > span.key, .vc .doc > span.value {
+  font-weight: bold;
+}
+.vc .doc > span.value[data-type=regex] {
+  font-style: italic;
+}
+.vc .doc > span.value[data-type=regex]::after, .vc .doc > span.value[data-type=regex]::before {
+  content: "/";
+}
+.vc .doc > span.key {
+  position: relative;
+}
+.vc .doc > span.key > ul {
+  margin: 0;
+  margin-left: 3.3em;
+}
+.vc .doc > span.key.fixed {
+  color: #9bad0b;
+}
+.vc .doc.unspecified > span,
+.vc .doc span.unspecified {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  padding: 0 4px;
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+  border-style: solid;
+  border-width: 2px;
+  border-radius: 6px;
+}
+.vc .doc > .operators {
+  display: inline-block;
+  margin-left: 10px;
+}
+.vc .rewritten .rewrite {
+  display: inline-block;
+  margin-left: 4pt;
+  color: #f6a800;
+}
+.vc .rewritten .rewrite::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  font-style: normal;
+  font-weight: normal;
+  content: "";
+  text-decoration: underline;
+}
+.vc .rewritten .rewrite > span {
+  display: none;
+}
+.vc .operators {
+  opacity: 0;
+  white-space: nowrap;
+  padding: 0;
+  font-size: 0;
+  line-height: 0;
+  text-align: center;
+}
+.vc > .docGroup {
+  margin-left: 0;
+}
+.vc .menu {
+  display: inline-block;
+}
+.vc .menu li[data-type=ref]::before,
+.vc span.key.ref::before {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  content: "";
+  padding-right: 4pt;
+  font-style: normal;
+  font-weight: normal;
+}
+.vc div.value {
+  position: absolute;
+  display: inline-block;
+  min-width: max-content;
+  z-index: 8000;
+  padding: 4pt;
+  margin-top: -6pt;
+  border-radius: 6px;
+  border-width: 2px;
+  border-style: solid;
+}
+.vc div.value input {
+  border-width: 0;
+  outline-width: 0;
+}
+.vc div.value > div {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  display: inline-block;
+  padding: 0 4pt;
+  margin-left: 4pt;
+  font-size: 80%;
+  font-style: italic;
+  border-width: 2px;
+  border-style: solid;
+  border-radius: 6px;
+}
+.vc div.value.regex > input {
+  font-style: italic;
+}
+.vc div.value.regex > div {
+  color: #636f07;
+  background-color: #9bad0b;
+  border-color: #636f07;
+  text-shadow: none;
+}
+
+/* Rules for vcs excluding fragments,
+ * i.e. includingy dynamic changes.
+ */
+.vc:not(.fragment) {
+  /**
+   * Rules for all docGroups
+   */
+}
+.vc:not(.fragment) .docGroup,
+.vc:not(.fragment) .doc {
+  color: #616263;
+}
+.vc:not(.fragment) .docGroup:hover {
+  background-color: rgba(255, 255, 255, 0.3);
+}
+.vc:not(.fragment) .doc > span:not(.fixed) {
+  cursor: pointer;
+}
+.vc:not(.fragment) .doc > span:not(.fixed):hover {
+  color: #f6a800;
+}
+.vc:not(.fragment) .doc.unspecified > span:hover,
+.vc:not(.fragment) span.unspecified:hover {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+.vc:not(.fragment) .doc:hover > .operators, .vc:not(.fragment) .docGroup:hover > .operators {
+  opacity: 1;
+}
+.vc:not(.fragment) .docGroup[data-operation] > .doc::before,
+.vc:not(.fragment) .docGroup[data-operation] > .docGroup::before {
+  color: #f6a800;
+}
+.vc:not(.fragment) .docGroup[data-operation=or] {
+  border-color: #f6a800;
+}
+.vc:not(.fragment) div.value {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+}
+.vc:not(.fragment) div.value > div {
+  cursor: pointer;
+}
+.vc:not(.fragment) div.value > div:hover {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+
+/**
+ * The z-index cascade for groups.
+ */
+.docGroup > .operators {
+  z-index: 30;
+}
+.docGroup .docGroup > .operators {
+  z-index: 31;
+}
+.docGroup .docGroup .docGroup > .operators {
+  z-index: 32;
+}
+.docGroup .docGroup .docGroup .docGroup > .operators {
+  z-index: 33;
+}
+.docGroup .docGroup .docGroup .docGroup .docGroup > .operators {
+  z-index: 34;
+}
+.docGroup .docGroup .docGroup .docGroup .docGroup .docGroup > .operators {
+  z-index: 35;
+}
+.docGroup .docGroup .docGroup .docGroup .docGroup .docGroup .docGroup > .operators {
+  z-index: 36;
+}
+
+.vc.fragment > div > div.docGroup {
+  margin-left: 0;
+}
+.vc.fragment .doc {
+  margin-right: 2em;
+}
+
+#collection {
+  line-height: 1em;
+  border-radius: 6px;
+}
+
+#vc-choose > span.rewritten::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  color: #f6a800;
+  padding: 0;
+  padding-left: 4px;
+  content: "";
+  text-decoration: underline;
+  font-style: normal;
+  font-weight: normal;
+}
+
+div#vc-view {
+  position: relative;
+}
+div#vc-view > div.vc {
+  display: none;
+  margin: 1.3em 0 0.5em 0;
+  border: 2px solid #636f07;
+  background-color: #fefefe;
+}
+div#vc-view > div.vc.active {
+  display: block;
+}
+div#vc-view > div.vc > div:first-child {
+  padding: 1.3em;
+}
+
+div.panel.vcinfo {
+  padding: 3pt 0pt 3pt 3pt;
+  background-color: #636f07;
+}
+div.panel.vcinfo div.button-group > span {
+  box-shadow: none;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Corpus statistic  
+ * Graying corpus statistic 
+ */
+div.stattable {
+  display: flex;
+  flex-direction: row;
+  margin-right: 20px;
+}
+
+div.stattable > dl {
+  margin-bottom: 4px;
+}
+div.stattable > dl > div {
+  border-color: #636f07;
+}
+div.stattable > dl > div > dt {
+  background-color: #8a9a0a;
+  width: 15em;
+  margin: 0;
+}
+div.stattable > dl > div > dt::after {
+  content: ":";
+}
+div.stattable > dl > div > dd {
+  background-color: #dce883;
+  color: #616263;
+}
+div.stattable.stdisabled dt,
+div.stattable.stdisabled dd {
+  background-color: #b9c46a;
+  color: #636f07;
+  text-shadow: none;
+}
+
+/* Corpus statistic reload button */
+div.reloadStatB > span.refresh {
+  margin-left: 2pt;
+}
+
+span.refresh::after {
+  vertical-align: sub;
+  content: "";
+}
+
+@media (min-width: 1680px) {
+  div.stattable dl.flex > div {
+    width: inherit;
+  }
+}
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Rules for the datepicker widget
+ * (used in the Virtual Collection creator)
+ * in Kalamar.
+ */
+div.datepicker {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  position: absolute;
+  display: inline-block;
+  z-index: 90;
+  font-size: 80%;
+  padding: 4pt;
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
+  border-width: 2px;
+  border-style: solid;
+  border-radius: 6px;
+}
+div.datepicker > div {
+  font-size: 120%;
+  width: 45%;
+}
+div.datepicker > div.month {
+  float: right;
+}
+div.datepicker > div > span {
+  display: inline-block;
+  overflow: hidden;
+  white-space: nowrap;
+}
+div.datepicker > div > span:first-child, div.datepicker > div > span:last-child {
+  width: 15%;
+}
+div.datepicker > div > span:first-child::before, div.datepicker > div > span:last-child::before {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  display: inline-block;
+  text-align: center;
+  cursor: pointer;
+  min-width: 14px;
+}
+div.datepicker > div > span:first-child::before {
+  content: "";
+}
+div.datepicker > div > span:last-child::before {
+  content: "";
+}
+div.datepicker > div > span:nth-child(2) {
+  display: inline-block;
+  cursor: pointer;
+  width: 70%;
+  text-align: center;
+  text-overflow: ellipsis;
+  border-radius: 6px;
+  border-style: solid;
+  border-width: 2px;
+  border-color: transparent;
+}
+div.datepicker > div > span:nth-child(2):hover {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+div.datepicker > div > span:nth-child(2).selected {
+  color: #636f07;
+  background-color: #9bad0b;
+  border-color: #636f07;
+  text-shadow: none;
+}
+div.datepicker table {
+  border-collapse: separate;
+  border-spacing: 1px;
+}
+div.datepicker input {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  padding-left: 0.4em;
+  padding-right: 0.4em;
+  background-color: #fefefe;
+  width: 100%;
+  border-style: solid;
+  border-width: 1px;
+}
+div.datepicker td {
+  padding-left: 0.4em;
+  padding-right: 0.4em;
+  text-align: center;
+  border-style: solid;
+  border-width: 1px;
+}
+div.datepicker td:not(.out) {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  cursor: pointer;
+  background-color: #fefefe;
+}
+div.datepicker td:not(.out).today {
+  background-color: #bce4f7;
+  color: #009ee0;
+  text-shadow: none;
+}
+div.datepicker td:not(.out).selected {
+  color: #636f07;
+  background-color: #9bad0b;
+  border-color: #636f07;
+  text-shadow: none;
+}
+div.datepicker td:not(.out):hover {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+}
+div.datepicker td.out {
+  border-color: transparent;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * 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: #9bad0b;
+  cursor: pointer;
+  margin: 0;
+  outline: none;
+  border: none;
+  display: inline-block;
+  color: white;
+  border-width: 0;
+  border-radius: 0;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+}
+#ql-field:checked {
+  outline: none;
+}
+#ql-field > option {
+  padding: 0pt 2pt;
+  outline: none;
+}
+#ql-field:-moz-focusring {
+  color: transparent;
+  text-shadow: 0 0 0 white;
+}
+
+/**
+ * The pipe input field
+ */
+input.pipe {
+  display: none;
+}
+
+header {
+  -webkit-box-sizing: border-box;
+  /* Safari/Chrome, other WebKit */
+  -moz-box-sizing: border-box;
+  /* Firefox, other Gecko */
+  box-sizing: border-box;
+  /* Opera/IE 8+ */
+  position: relative;
+  background-color: #9bad0b;
+  padding: 8px 0 0 8px;
+  font-size: 10pt;
+  color: #fefefe;
+}
+header span.select {
+  display: inline-block;
+  cursor: pointer;
+  line-height: 1.8em;
+  border-width: 0;
+  border-bottom-width: 3px;
+  border-style: solid;
+  border-color: transparent;
+}
+header span.select > span {
+  font-weight: bold;
+}
+header span.select:hover {
+  color: #636f07;
+  border-color: #636f07;
+}
+header span.select::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  pointer-events: none;
+  text-align: center;
+  content: "";
+  padding-left: 4pt;
+  padding-right: 4pt;
+}
+header span.select.active {
+  border-color: #f6a800;
+}
+header span.select.active::after {
+  content: "";
+}
+header form {
+  position: relative;
+  display: block;
+  padding-left: 230px;
+  min-height: 2.7em;
+  margin: 0px;
+}
+header input {
+  outline: none;
+  font-size: 11pt;
+  border: 2px solid #fefefe;
+  padding: 2px;
+  margin: 0;
+}
+header .button {
+  color: #fefefe;
+  line-height: 2em;
+  margin-right: 40px;
+}
+header .button.right {
+  float: right;
+  display: inline-block;
+}
+header .button.top {
+  position: absolute;
+  display: block;
+  top: 0;
+  right: 0;
+  margin-right: 0;
+  width: 20px;
+  background-color: #636f07;
+  text-align: center;
+  height: 100%;
+  z-index: 20;
+}
+header .button.top > a:hover {
+  color: #fefefe;
+}
+header .button > a {
+  color: #fefefe;
+  cursor: pointer;
+  position: relative;
+  font-size: 120%;
+}
+header .button > a > span {
+  position: absolute;
+  margin-left: -3000px;
+}
+header .button > a::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+}
+header .button > a.tutorial::after {
+  content: "";
+}
+header .button > a.question::after {
+  content: "";
+}
+header .button > a.login::after {
+  content: "";
+}
+header .button > a.logout::after {
+  content: "";
+}
+
+.query.button-group > span {
+  border-top-width: 0;
+  border-color: white;
+}
+.query.button-group > span:first-child {
+  border-top-left-radius: 0;
+}
+.query.button-group > span:last-child {
+  border-top-right-radius: 0;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Rules for the footer section of Kalamar
+ */
+footer {
+  background-color: #616263;
+  position: absolute;
+  bottom: 0;
+  padding-bottom: 2px;
+  font-size: 70%;
+  width: 100%;
+  text-align: right;
+}
+footer a:link {
+  margin: 0 0.5em;
+  color: #d9dadb;
+}
+footer a:visited {
+  color: #d9dadb;
+}
+footer a:hover {
+  color: #fefefe;
+}
+footer a[href^="http://"]::after, footer a[href^="https://"]::after {
+  content: none;
+}
+footer span.separator:after {
+  content: "-";
+  color: #d9dadb;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+aside {
+  background-color: #636f07;
+  color: #fefefe;
+  width: 230px;
+  position: fixed;
+  display: block;
+  transition: all 0.3s ease-in-out;
+  outline: none;
+  font-size: 10pt;
+  z-index: 100;
+  top: 0;
+  left: 0;
+  height: 100%;
+  padding-top: 65px;
+  /**
+   * Navigation menu
+   */
+}
+aside > div {
+  overflow-y: auto;
+  overflow-x: visible;
+  max-height: 100%;
+}
+aside > * {
+  opacity: 1;
+}
+aside::after {
+  font-family: "FontAwesome";
+  white-space: nowrap;
+  position: absolute;
+  display: block;
+  opacity: 0;
+  cursor: pointer;
+  right: 0;
+  bottom: 0;
+  content: "";
+  font-size: 16pt;
+  width: 16pt;
+  height: 17pt;
+  padding: 6pt;
+  background-color: #636f07;
+  border-top-right-radius: 6px;
+  margin-right: -20px;
+}
+aside h2,
+aside legend {
+  line-height: 2em;
+  text-align: center;
+  padding: 0;
+  margin: 0;
+  font-size: 100%;
+  font-weight: bold;
+}
+aside ul.nav {
+  list-style-type: none;
+  margin: 0;
+  font-size: 10pt;
+  text-indent: 0;
+  padding: 0;
+}
+aside ul.nav li {
+  padding: 0;
+}
+aside ul.nav li > a {
+  padding: 3pt 6pt;
+}
+aside ul.nav li > a:visited {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+}
+aside ul.nav li.folded.active ul {
+  display: block;
+}
+aside ul.nav li.folded ul {
+  display: none;
+}
+aside ul.nav li.active > a:link {
+  color: #636f07;
+  background-color: #9bad0b;
+  border-color: #636f07;
+  text-shadow: none;
+}
+aside ul.nav li > a:link {
+  color: #616263;
+  background-color: #d9dadb;
+  border-color: #87888a;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.5);
+  display: block;
+  border-right-width: 2px;
+  border-right-style: solid;
+}
+aside ul.nav li > a:link:hover {
+  color: #fefefe;
+  background-color: #f6a800;
+  border-color: #ff8000;
+  text-shadow: none;
+  transition: none;
+}
+aside ul.nav li h3 {
+  padding: 0;
+  margin: 0;
+  font-weight: bold;
+  font-size: 100%;
+}
+aside ul.nav li > a {
+  padding-left: 6pt;
+}
+aside ul.nav li li > a {
+  padding-left: 18pt;
+}
+aside ul.nav li li li > a {
+  padding-left: 36pt;
+}
+aside nav > ul > li > a {
+  font-weight: bold;
+}
+aside fieldset {
+  position: relative;
+  border-width: 0;
+}
+aside fieldset legend {
+  display: none;
+}
+aside fieldset input[type=text],
+aside fieldset input[type=password] {
+  outline: none;
+  font-size: 11pt;
+  border: 2px solid #fefefe;
+  padding: 2px;
+  margin: 0;
+  width: 100%;
+}
+aside fieldset > form > div {
+  position: relative;
+  width: 100%;
+  margin-top: 4px;
+  padding-right: 30px;
+}
+aside fieldset > p {
+  color: #9bad0b;
+}
+aside fieldset > p.announcement {
+  color: #fefefe;
+}
+aside fieldset > p.announcement > time {
+  display: block;
+  font-size: 70%;
+}
+aside fieldset hr {
+  border: none;
+  border-top: 2px solid #d9dadb;
+}
+aside fieldset ul {
+  display: block;
+  font-size: 80%;
+  text-align: right;
+  padding: 0;
+  margin-top: 0;
+}
+aside fieldset ul > li {
+  display: inline;
+}
+aside fieldset ul > li:first-child::after {
+  content: " | ";
+}
+aside fieldset button {
+  position: absolute;
+  top: 0;
+  right: 0;
+}
+aside fieldset button::after {
+  content: "";
+}
+aside.off, aside:not(:focus):not(.active) {
+  margin-left: -210px;
+}
+aside.off::after, aside:not(:focus):not(.active)::after {
+  opacity: 1;
+}
+aside.off > *, aside:not(:focus):not(.active) > * {
+  opacity: 0;
+  transition-property: opacity;
+  transition-duration: 0.3s;
+}
+aside.off::after {
+  display: none;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Optimization for no-js behaviour
+ */
+body.no-js #notifications {
+  display: block !important;
+}
+body.no-js aside {
+  position: relative;
+  display: block;
+  transition: none;
+  margin-left: 0 !important;
+  padding-top: 0;
+  width: 100%;
+  top: 0;
+}
+body.no-js aside > * {
+  opacity: 1 !important;
+  transition: none;
+}
+body.no-js aside form.login > input,
+body.no-js aside form.login > div {
+  width: auto;
+  margin-top: 0;
+}
+body.no-js aside form.login > input:first-of-type,
+body.no-js aside form.login > div:first-of-type {
+  float: left;
+  margin-right: 1em;
+}
+body.no-js aside form.login button {
+  height: 100%;
+}
+body.no-js aside p, body.no-js aside::after {
+  display: none;
+}
+body.no-js main div.intro {
+  margin-left: 8px !important;
+}
+
+#activate {
+  text-align: right;
+  background-color: #f6a800;
+  margin-top: 0;
+  padding: 8px;
+  padding-right: 40px;
+  color: #fefefe;
+  font-size: 80%;
+}
+
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Font Awesome symbol table.
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Mixin for blind elements
+ * (e.g., spans in elements with an icon background)
+ */
+/**
+ * Mixin for basic color transition
+ */
+/**
+ * Mixing for basic text padding
+ */
+/**
+ * Mixing for icon fonts
+ */
+/**
+ * Mixing for correct box sizing (probably not necessary)
+ * DEPRECATED
+ */
+/**
+ * Some colors and shadow definitions
+ * for Kalamar,
+ */
+/**
+ * Official IDS colors
+ */
+/**
+ * Orange Colors
+ */
+/**
+ * Green Colors
+ */
+/**
+ * Blue Colors
+ */
+/**
+ * Grey Colors
+ */
+/**
+ * Red Colors (no IDS relation)
+ */
+/**
+ * Basic shadows
+ */
+/**
+ * KWIC colors
+ */
+/**
+ * Some color definitions and mixins for
+ * buttons and menus.
+ */
+/**
+ * Chooseable items (default)
+ */
+/**
+ * Chooseable items (mouse over)
+ */
+/**
+ * Chooseable items (not available)
+ */
+/**
+ * Chooseable items (active)
+ */
+/**
+ * Chooseable items (action: remove something)
+ */
+/*
+ * Defined lengths and sizes for the
+ * Kalamar layout.
+ */
+/**
+ * Margins
+ */
+/**
+ * Path information - relative to css!
+ */
+/**
+ * Media rules for different screen sizes.
+ * This will override some basic rules.
+ */
+@media all and (max-width: 42.5em) {
+  body,
+#search > ol,
+#search div.snippet > span,
+header,
+header input,
+div#resultinfo,
+#pagination > a {
+    font-size: 9pt;
+  }
+
+  header {
+    padding-right: 8px;
+  }
+
+  header form {
+    padding-left: 0;
+    padding-top: 33px;
+  }
+
+  .vc {
+    font-size: 9pt;
+  }
+  .vc .builder .doc {
+    padding-left: 3em;
+  }
+  .vc .builder * .docGroup {
+    margin-left: 3em;
+  }
+  .vc .builder > .doc {
+    padding-left: 0.5em;
+  }
+  .vc .builder > .docGroup {
+    margin-left: 0.5em;
+  }
+
+  h1 {
+    margin-left: 10px;
+    width: 130px;
+    height: 40px;
+    background-size: 100%;
+    background-position: 50% 0;
+    z-index: 110;
+  }
+
+  #searchbar {
+    padding-right: 30px;
+  }
+  #searchbar input {
+    font-size: 9pt;
+  }
+  #searchbar button[type=submit] {
+    right: 0;
+  }
+
+  .level-1 {
+    padding-bottom: 2px;
+  }
+
+  .level-2 {
+    padding-bottom: 4px;
+  }
+
+  main {
+    margin-left: 4px;
+    margin-right: 4px;
+  }
+
+  header .button {
+    margin-right: 4px;
+  }
+  header .button.top {
+    height: auto;
+  }
+
+  #search ol > li:target > div > div.snippet, #search ol > li.active > div > div.snippet {
+    margin: 2px 2em 2px 4px;
+  }
+  #search ol > li div.meta {
+    display: none;
+  }
+
+  div.matchinfo {
+    font-size: 9pt;
+  }
+
+  div.matchtable tr > * {
+    padding: 1pt 3pt;
+  }
+
+  div.matchtree h6 {
+    display: block;
+    float: none;
+  }
+  div.matchtree > div {
+    margin-left: 2px;
+  }
+
+  #kalamar-bg {
+    overflow: hidden;
+  }
+
+  #logos {
+    margin-left: 0;
+    margin-right: 0;
+  }
+  #logos > div {
+    border-top-width: 14px;
+    padding-right: 0;
+  }
+  #logos > div .logo > * {
+    background-size: 60%;
+    background-position: 0 0;
+  }
+
+  div.intro {
+    width: 100%;
+  }
+
+  body.embedded aside > div {
+    top: 0;
+    transform: translateY(0);
+  }
+
+  aside:not(:focus):not(.active) {
+    margin-left: -230px;
+  }
+  aside:not(:focus):not(.active)::after {
+    font-size: 12pt;
+    height: 11pt;
+    text-align: right;
+    padding-right: 3pt;
+    padding-top: 2pt;
+  }
+  aside ul {
+    font-size: 9pt;
+    line-height: 1em;
+  }
+  aside.active ~ main div.intro, aside.active ~ main.page {
+    margin-left: 4px !important;
+  }
+  aside.active {
+    position: relative;
+    display: block;
+    padding-top: 0;
+    width: 100%;
+    top: 0;
+    border-width: 0;
+  }
+  aside.active fieldset input {
+    font-size: 9pt;
+  }
+  aside.active::after {
+    display: none;
+  }
+  aside.active p, aside.active hr {
+    display: none;
+  }
+
+  #tutorial {
+    border-radius: 0;
+    border-width: 0;
+    right: 0;
+    left: 0;
+    bottom: 0;
+    top: 0;
+    padding: 0;
+  }
+  #tutorial iframe {
+    border-radius: 0;
+  }
+  #tutorial > ul.action.right {
+    height: 1.5em;
+    right: 20px;
+    border-bottom-left-radius: 5px;
+    border-bottom-right-radius: 5px;
+  }
+
+  main.page {
+    margin-right: 20px;
+  }
+}
+@media print {
+  body, html, select, g > text {
+    color: black;
+  }
+
+  header, aside {
+    display: none;
+  }
+
+  main.page {
+    margin: 1em;
+  }
+
+  #kalamar-bg {
+    display: none;
+  }
+
+  a.embedded-link {
+    color: black;
+    text-decoration: underline;
+  }
+
+  pre.query.tutorial {
+    background-color: white;
+    color: black;
+    margin-left: 1em;
+    margin-right: 1em;
+  }
+
+  blockquote.warning {
+    background-color: grey;
+    color: white;
+    border-left-color: black;
+    border-left-width: 1em;
+  }
+}
+
+/*# sourceMappingURL=kalamar-0.41.3.css.map */
\ No newline at end of file
