@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
   */
  /**
   * Default entry view
   */
}
ul.menu.visible {
  opacity: 1;
}
ul.menu,
ul.menu > span.non-item:not(:empty) {
  box-sizing: border-box;
  text-shadow: none;
  font-weight: normal;
  z-index: 120;
}
ul.menu > li,
ul.menu > span.non-item: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.non-item: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.non-item.active {
  color: #636f07;
  background-color: #9bad0b;
  border-color: #636f07;
  text-shadow: none;
}
ul.menu > li:hover,
ul.menu span.non-item:hover {
  color: #fefefe;
  background-color: #f6a800;
  border-color: #ff8000;
  text-shadow: none;
}
ul.menu span.non-item {
  border-radius: 6px;
  border-width: 2px !important;
}
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;
}
ul.menu span.entry:not(:empty) {
  position: absolute;
  min-width: 5px;
  font-size: 80%;
  left: 0;
  bottom: 0;
  display: block;
  margin-bottom: -2.1em;
  padding: 2px 6px;
}
ul.menu span.pref:not(:empty) + span.entry:not(:empty) {
  bottom: -27px;
  left: 50px;
  display: grid;
}

/**
 * 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: 100vh;
}

body {
  position: relative;
  min-height: 100vh;
  font-size: 12pt;
  margin: 0;
  padding: 0;
}

a:visited {
  color: #e55d00;
}
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;
}

/**
 * Logo: KorAP
 */
h1 {
  position: absolute;
  margin: 0;
  margin-left: 10pt;
  left: 0;
  top: 0;
  width: 7.8em;
  height: 2.4em;
  z-index: 105;
  background-size: 78% !important;
  background-image: url("../img/korap-logo.svg");
}

aside.active ~ header h1 {
  position: fixed;
}

#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.svg");
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 15%;
}

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 {
  font-size: 0;
}
.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: 100pt;
  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;
  margin-top: 7pt;
}
#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;
  display: flex;
  align-items: center;
  height: 100pt;
}
footer nav {
  margin-left: 30px;
  padding: 3pt 6pt;
  text-align: left;
  flex-grow: 2;
}
footer nav a {
  white-space: nowrap;
}
footer div.logos {
  font-size: 0;
  flex-grow: 1;
}
footer a {
  font-size: 10pt;
}
footer a:link {
  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 {
  font-size: bold;
  content: " | ";
  color: #f6a800;
}

/**
 * Logo table of the front page
 */
#logos {
  margin-right: 40px;
}

/**
 * Logo: Institute for German Language
 */
#ids-logo {
  display: inline-block;
  width: 21.0333333333em;
  height: 6.6666666667em;
  background-image: url("../img/ids-institute-for-the-german-language-white.svg");
}

aside.active ~ footer {
  padding-left: 230px;
  transition: all 0.3s ease-in-out;
}

/**
 * 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: 0px;
    width: 130px;
    height: 40px;
    background-size: 100%;
    background-position: 50% 0;
    z-index: 110;
    position: absolute !important;
  }

  #searchbar {
    padding-right: 30px;
    margin-top: 0;
  }
  #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;
  }

  #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;
  }

  footer {
    padding-left: 0 !important;
  }
}
@media print {
  body, html, select, g > text {
    color: black;
  }

  header, aside {
    display: none;
  }

  main.page {
    margin: 1em;
  }

  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.5.css.map */