diff --git a/package-lock.json b/package-lock.json
index 2a3cc32cf979ab46e1e114bb8c6b1ae943f2e4a5..f3441075deb843be404b45d9267b47d5ea6b8902 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2088,7 +2088,7 @@
     "cross-spawn": {
       "version": "6.0.5",
       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
-      "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=",
+      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
       "dev": true,
       "requires": {
         "nice-try": "^1.0.4",
@@ -5758,7 +5758,7 @@
     "nice-try": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
       "dev": true
     },
     "no-case": {
diff --git a/resources/less/metager/general/base.less b/resources/less/metager/general/base.less
new file mode 100644
index 0000000000000000000000000000000000000000..d2a3bed82d55c2909d1bea3c9be7cc4286b2dc51
--- /dev/null
+++ b/resources/less/metager/general/base.less
@@ -0,0 +1,435 @@
+/* Default Font */
+
+@modal-content-box-shadow-color: fade(@color-black, 30%);
+@body-background-color: @background-color;
+@body-background-color-mobile: @background-color-mobile;
+@a-hover-color: red;
+
+html, body, * {
+    font-family: @metager-font;
+}
+
+/* Main Containers */
+
+html,
+body,
+.content-wrapper {
+    width: 100%;
+}
+
+html {
+    min-height: 100%;
+    height: auto;
+    display: flex;
+    font-size: 14px;
+    font-size: 3.8mm;
+}
+
+body {
+    flex-grow: 1;
+    background-image: inherit;
+    background-color: @body-background-color;
+    background-attachment: fixed;
+    min-height: 100%;
+    height: auto;
+    display: flex;
+    flex-direction: column;
+    margin: 0;
+    font-size: 1.0em;
+    @media(max-width: @screen-mobile){
+        background-color: @body-background-color-mobile
+    }
+}
+
+.wrapper {
+    flex-grow: 1;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    margin-top: 50px;
+    padding: 0px 8px;
+    overflow: hidden;
+    main {
+        width: 100%;
+        max-width: 1000px;
+    }
+}
+
+.navbar,
+#navbar-static-pages {
+    box-shadow: 1px 1px 5px 1px rgba(0, 0, 0, 0.2);
+}
+
+/* Scrollbox Style */
+
+@scrollfade-color: white;
+.scrollbox {
+    position: relative;
+    width: 100%;
+    max-width: @results-width-max;
+    .scrollfade-right {
+        background: -webkit-gradient(linear, right top, left top, from(@scrollfade-color), color-stop(fade(@scrollfade-color, 80%)), to(fade(@scrollfade-color, 0%)));
+        background: linear-gradient(to left, @scrollfade-color, fade(@scrollfade-color, 80%), fade(@scrollfade-color, 0%));
+        right: 1px;
+    }
+    .search-option-frame {
+        position: relative;
+    }
+}
+
+/* General font sizing */
+
+@default-font-size: 15px;
+.first-last-child-margin-fix() {
+    &:first-child {
+        margin-top: 0px;
+    }
+    &:last-child {
+        margin-bottom: 0px;
+    }
+}
+
+h1 {
+    font-size: 2em;
+    .first-last-child-margin-fix;
+}
+
+h2 {
+    font-size: 1.5em;
+    .first-last-child-margin-fix;
+}
+
+h3 {
+    font-size: 1.3em;
+    .first-last-child-margin-fix;
+}
+
+p {
+    font-size: 1em;
+    .first-last-child-margin-fix;
+}
+
+body {
+    .first-last-child-margin-fix;
+}
+
+.page-title {
+    font-size: 2.5em;
+    text-align: center;
+}
+
+.page-subtitle {
+    font-size: 1em;
+    text-align: center;
+}
+
+.subheading {
+    font-size: 1.2em;
+    margin: 20px 0px;
+    white-space: center;
+}
+
+a {
+    font-size: 1em;
+    color: @link-color;
+    &:visited {
+        color: @link-color;
+    }
+    &:hover {
+        text-decoration: none;
+        color: @a-hover-color;
+    }
+}
+
+i.fa {
+    background-color: transparent;
+}
+
+/* Logo */
+
+.logo {
+    color: @metager-orange;
+    font-family: @metager-font;
+    font-style: italic;
+    font-weight: bold;
+    white-space: nowrap;
+}
+
+#startpage-logo {
+    .logo;
+    display: flex;
+    justify-content: center;
+    margin: 0px 0px 45px 0px;
+    white-space: nowrap;
+    text-align: center;
+    @media(max-width: @screen-mobile){
+        margin-bottom: 25px;
+    }
+    &>a {
+        .logo;
+        display: block;
+        width: fit-content;
+        text-decoration: none;
+        font-size: 2.7em;
+        @media(max-width: @screen-mobile) {
+            font-size: 2em;
+        }
+        >img {
+            width: 4.8em;
+        }
+    }
+}
+
+#subpage-logo {
+    padding: 16px 0 5px 0px;
+    .navbar-brand {
+        .noprint;
+        line-height: 100% !important;
+        padding: 0;
+        padding-left: 8px;
+        position: absolute;
+        z-index: 5;
+        left: 10px;
+        h1 {
+            .logo;
+            font-size: 1.6em;
+            margin: 0;
+            >img {
+                width: 4.8em;
+            }
+        }
+    }
+}
+
+/* Links that look like text */
+
+.mutelink {
+    &,
+    &:hover,
+    &:active,
+    &:focus,
+    &:visited {
+        color: inherit;
+    }
+}
+
+/* Summary Elements */
+
+summary {
+    cursor: pointer;
+    &::-webkit-details-marker {
+        display: none;
+    }
+    &::-moz-details-marker {
+        display: none;
+    }
+    &::-ms-details-marker {
+        display: none;
+    }
+    &::-o-details-marker {
+        display: none;
+    }
+    &::details-marker {
+        display: none;
+    }
+    &:focus {
+        outline: none;
+    }
+}
+
+/* Tooltips 
+ * 
+ * All elements with a "data-tooltip" attribute show a 
+ * tooltip below on hover
+ */
+
+*[data-tooltip] {
+    position: relative;
+    &:hover {
+        &:after {
+            opacity: 1;
+        }
+    }
+    &:after {
+        content: attr(data-tooltip);
+        position: absolute;
+        top: 100%;
+        left: 0;
+        z-index: 1;
+        color: black;
+        background-color: white;
+        border: 2px solid @metager-orange;
+        border-radius: 6px;
+        padding: 3px 8px;
+        width: 200px;
+        white-space: pre-wrap;
+        font-size: .9em;
+        font-weight: normal;
+        text-decoration: none;
+        text-align: center;
+        pointer-events: none;
+        opacity: 0;
+        transition: opacity 0.3s ease;
+        text-transform: initial; // Resets specific styles
+    }
+    &.hide-tooltip-on-resultpage:after {
+        /* Auf kleinen Bildschirmen wird der Tooltip nicht angezeigt */
+        @media (max-width: 700px) {
+            display: none;
+        }
+    }
+    &.delayed:after {
+        transition-delay: 0.5s;
+    }
+    &.delayed-soft:after {
+        transition-delay: 0.2s;
+    }
+    &.delayed-strong:after {
+        transition-delay: 1s;
+    }
+}
+
+/* For Containers that are supposed to split their content up into two columns */
+
+.two-col {
+    >* {
+        width: 50%;
+        margin: 0;
+        padding: 0;
+        float: left;
+        @media (max-width: @screen-mobile) {
+            width: 100%;
+        }
+    }
+}
+
+/* Links */
+
+// Internal, but design differs from other pages
+.inlink {
+    &:after {
+        display: inline-block;
+        font: normal normal normal 14px/1 'Font Awesome 5 Free';
+        font-size: inherit;
+        text-rendering: auto;
+        -webkit-font-smoothing: antialiased;
+        content: "\f35d";
+    }
+}
+
+// External
+.outlink {
+    &:after {
+        display: inline-block;
+        font: normal normal normal 14px/1 'Font Awesome 5 Free';
+        font-size: inherit;
+        text-rendering: auto;
+        -webkit-font-smoothing: antialiased;
+        content: "\f35d";
+    }
+}
+
+/* Little helpers */
+
+// Bold text
+.bold {
+    font-weight: bold;
+}
+
+// Do not print this
+.noprint {
+    @media print {
+        display: none !important;
+    }
+}
+
+// For print: Start new page after this
+.newpage {
+    page-break-after: always;
+}
+
+// For list elements without a dot
+li.nodot {
+    list-style-type: none;
+}
+
+// Disabled elements (only visual)
+.disabled,
+:disabled,
+.disabled *,
+:disabled * {
+    color: #aaa !important;
+    cursor: not-allowed !important;
+}
+
+// Convert excess text into "..."
+.overflow-ellipsis {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+// Used on labels which initiate visual change (e.g. open-sidebar-button)
+.navigation-element {
+    cursor: pointer;
+}
+
+/* Button */
+
+button {
+    border: none;
+    background-color: transparent;
+}
+
+/* Lists with dots */
+
+.dotlist {
+    list-style-type: disc;
+    text-align: left;
+    li {
+        margin-bottom: 5px !important;
+    }
+}
+
+/* Code */
+
+code {
+    white-space: pre-wrap;
+    overflow-wrap: break-word;
+    word-break: break-word;
+}
+
+/* Adresses */
+
+address {
+    white-space: pre;
+}
+
+/* Unknown Uses */
+
+label a {
+    color: inherit;
+    &:hover {
+        text-decoration: none;
+        color: inherit;
+    }
+}
+
+// For Elements where newlines should actually be displayed
+.wrap {
+    white-space: pre-wrap;
+}
+
+// When the content should be centerd horizontally
+.center-wrapper {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+}
+
+#impressum, #kontakt, #team, #about {
+    .card-heavy {
+        margin: 8px 0;
+    }
+}
diff --git a/resources/less/metager/general/cards.less b/resources/less/metager/general/cards.less
index 9821c419acda6b28611fea43dd70be65a2115e81..5a856c6961bb1caac061c0aa3842d77397a4d15b 100644
--- a/resources/less/metager/general/cards.less
+++ b/resources/less/metager/general/cards.less
@@ -1,7 +1,7 @@
 .card,
 .card-medium {
-    border: 1px solid #ccc;
-    background-color: white;
+    border: 1px solid @border-color;
+    background-color: @card-background-color;
     box-shadow: 0px 1px 1.5px 0px rgba(0, 0, 0, 0.12), 1px 0px 1px 0px rgba(0, 0, 0, 0.24);
     padding: 8px;
     margin: 4px;
diff --git a/resources/less/metager/general/forms.less b/resources/less/metager/general/forms.less
new file mode 100644
index 0000000000000000000000000000000000000000..64b6dc2719373463d750a564074695afd48aa164
--- /dev/null
+++ b/resources/less/metager/general/forms.less
@@ -0,0 +1,613 @@
+//
+// Forms (copied from Bootstrap)
+// --------------------------------------------------
+
+
+// Normalize non-controls
+//
+// Restyle and baseline non-control form elements.
+
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
+  // so we reset that to ensure it behaves more like a standard block element.
+  // See https://github.com/twbs/bootstrap/issues/12359.
+  min-width: 0;
+}
+
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: @line-height-computed;
+  font-size: (@font-size-base * 1.5);
+  line-height: inherit;
+  color: @legend-color;
+  border: 0;
+  border-bottom: 1px solid @legend-border-color;
+}
+
+label {
+  display: inline-block;
+  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
+  margin-bottom: 5px;
+  font-weight: bold;
+}
+
+
+// Normalize form controls
+//
+// While most of our form styles require extra classes, some basic normalization
+// is required to ensure optimum display with or without those classes to better
+// address browser inconsistencies.
+
+// Override content-box in Normalize (* isn't specific enough)
+input[type="search"] {
+  .box-sizing(border-box);
+}
+
+// Position radios and checkboxes better
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9; // IE8-9
+  line-height: normal;
+}
+
+input[type="file"] {
+  display: block;
+}
+
+// Make range inputs behave like textual form controls
+input[type="range"] {
+  display: block;
+  width: 100%;
+}
+
+// Make multiple select elements height not fixed
+select[multiple],
+select[size] {
+  height: auto;
+}
+
+// Focus for file, radio, and checkbox
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  .tab-focus();
+}
+
+// Adjust output element
+output {
+  display: block;
+  padding-top: (@padding-base-vertical + 1);
+  font-size: @font-size-base;
+  line-height: @line-height-base;
+  color: @input-color;
+}
+
+
+// Common form controls
+//
+// Shared size and type resets for form controls. Apply `.form-control` to any
+// of the following form controls:
+//
+// select
+// textarea
+// input[type="text"]
+// input[type="password"]
+// input[type="datetime"]
+// input[type="datetime-local"]
+// input[type="date"]
+// input[type="month"]
+// input[type="time"]
+// input[type="week"]
+// input[type="number"]
+// input[type="email"]
+// input[type="url"]
+// input[type="search"]
+// input[type="tel"]
+// input[type="color"]
+
+.form-control {
+  display: block;
+  width: 100%;
+  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
+  padding: @padding-base-vertical @padding-base-horizontal;
+  font-size: @font-size-base;
+  line-height: @line-height-base;
+  color: @input-color;
+  background-color: @input-bg;
+  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
+  border: 1px solid @input-border;
+  border-radius: @input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.
+  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
+  .transition(~"border-color ease-in-out .15s, box-shadow ease-in-out .15s");
+
+  // Customize the `:focus` state to imitate native WebKit styles.
+  .form-control-focus();
+
+  // Placeholder
+  .placeholder();
+
+  // Unstyle the caret on `<select>`s in IE10+.
+  &::-ms-expand {
+    border: 0;
+    background-color: transparent;
+  }
+
+  // Disabled and read-only inputs
+  //
+  // HTML5 says that controls under a fieldset > legend:first-child won't be
+  // disabled if the fieldset is disabled. Due to implementation difficulty, we
+  // don't honor that edge case; we style them as disabled anyway.
+  &[disabled],
+  &[readonly],
+  fieldset[disabled] & {
+    background-color: @input-bg-disabled;
+    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
+  }
+
+  &[disabled],
+  fieldset[disabled] & {
+    cursor: @cursor-disabled;
+  }
+
+  // Reset height for `textarea`s
+  textarea& {
+    height: auto;
+  }
+}
+
+
+// Search inputs in iOS
+//
+// This overrides the extra rounded corners on search inputs in iOS so that our
+// `.form-control` class can properly style them. Note that this cannot simply
+// be added to `.form-control` as it's not specific enough. For details, see
+// https://github.com/twbs/bootstrap/issues/11586.
+
+input[type="search"] {
+  -webkit-appearance: none;
+}
+
+
+// Special styles for iOS temporal inputs
+//
+// In Mobile Safari, setting `display: block` on temporal inputs causes the
+// text within the input to become vertically misaligned. As a workaround, we
+// set a pixel line-height that matches the given height of the input, but only
+// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
+//
+// Note that as of 9.3, iOS doesn't support `week`.
+
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+  input[type="date"],
+  input[type="time"],
+  input[type="datetime-local"],
+  input[type="month"] {
+    &.form-control {
+      line-height: @input-height-base;
+    }
+
+    &.input-sm,
+    .input-group-sm & {
+      line-height: @input-height-small;
+    }
+
+    &.input-lg,
+    .input-group-lg & {
+      line-height: @input-height-large;
+    }
+  }
+}
+
+
+// Form groups
+//
+// Designed to help with the organization and spacing of vertical forms. For
+// horizontal forms, use the predefined grid classes.
+
+.form-group {
+  margin-bottom: @form-group-margin-bottom;
+}
+
+
+// Checkboxes and radios
+//
+// Indent the labels to position radios/checkboxes as hanging controls.
+
+.radio,
+.checkbox {
+  position: relative;
+  display: block;
+  margin-top: 10px;
+  margin-bottom: 10px;
+
+  label {
+    min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text
+    padding-left: 20px;
+    margin-bottom: 0;
+    font-weight: normal;
+    cursor: pointer;
+  }
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+  position: absolute;
+  margin-left: -20px;
+  margin-top: 4px \9;
+}
+
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
+}
+
+// Radios and checkboxes on same line
+.radio-inline,
+.checkbox-inline {
+  position: relative;
+  display: inline-block;
+  padding-left: 20px;
+  margin-bottom: 0;
+  vertical-align: middle;
+  font-weight: normal;
+  cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+  margin-top: 0;
+  margin-left: 10px; // space out consecutive inline controls
+}
+
+// Apply same disabled cursor tweak as for inputs
+// Some special care is needed because <label>s don't inherit their parent's `cursor`.
+//
+// Note: Neither radios nor checkboxes can be readonly.
+input[type="radio"],
+input[type="checkbox"] {
+  &[disabled],
+  &.disabled,
+  fieldset[disabled] & {
+    cursor: @cursor-disabled;
+  }
+}
+// These classes are used directly on <label>s
+.radio-inline,
+.checkbox-inline {
+  &.disabled,
+  fieldset[disabled] & {
+    cursor: @cursor-disabled;
+  }
+}
+// These classes are used on elements with <label> descendants
+.radio,
+.checkbox {
+  &.disabled,
+  fieldset[disabled] & {
+    label {
+      cursor: @cursor-disabled;
+    }
+  }
+}
+
+
+// Static form control text
+//
+// Apply class to a `p` element to make any string of text align with labels in
+// a horizontal form layout.
+
+.form-control-static {
+  // Size it appropriately next to real form controls
+  padding-top: (@padding-base-vertical + 1);
+  padding-bottom: (@padding-base-vertical + 1);
+  // Remove default margin from `p`
+  margin-bottom: 0;
+  min-height: (@line-height-computed + @font-size-base);
+
+  &.input-lg,
+  &.input-sm {
+    padding-left: 0;
+    padding-right: 0;
+  }
+}
+
+
+// Form control sizing
+//
+// Build on `.form-control` with modifier classes to decrease or increase the
+// height and font-size of form controls.
+//
+// The `.form-group-* form-control` variations are sadly duplicated to avoid the
+// issue documented in https://github.com/twbs/bootstrap/issues/15074.
+
+.input-sm {
+  .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
+}
+.form-group-sm {
+  .form-control {
+    height: @input-height-small;
+    padding: @padding-small-vertical @padding-small-horizontal;
+    font-size: @font-size-small;
+    line-height: @line-height-small;
+    border-radius: @input-border-radius-small;
+  }
+  select.form-control {
+    height: @input-height-small;
+    line-height: @input-height-small;
+  }
+  textarea.form-control,
+  select[multiple].form-control {
+    height: auto;
+  }
+  .form-control-static {
+    height: @input-height-small;
+    min-height: (@line-height-computed + @font-size-small);
+    padding: (@padding-small-vertical + 1) @padding-small-horizontal;
+    font-size: @font-size-small;
+    line-height: @line-height-small;
+  }
+}
+
+.input-lg {
+  .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
+}
+.form-group-lg {
+  .form-control {
+    height: @input-height-large;
+    padding: @padding-large-vertical @padding-large-horizontal;
+    font-size: @font-size-large;
+    line-height: @line-height-large;
+    border-radius: @input-border-radius-large;
+  }
+  select.form-control {
+    height: @input-height-large;
+    line-height: @input-height-large;
+  }
+  textarea.form-control,
+  select[multiple].form-control {
+    height: auto;
+  }
+  .form-control-static {
+    height: @input-height-large;
+    min-height: (@line-height-computed + @font-size-large);
+    padding: (@padding-large-vertical + 1) @padding-large-horizontal;
+    font-size: @font-size-large;
+    line-height: @line-height-large;
+  }
+}
+
+
+// Form control feedback states
+//
+// Apply contextual and semantic states to individual form controls.
+
+.has-feedback {
+  // Enable absolute positioning
+  position: relative;
+
+  // Ensure icons don't overlap text
+  .form-control {
+    padding-right: (@input-height-base * 1.25);
+  }
+}
+// Feedback icon (requires .glyphicon classes)
+.form-control-feedback {
+  position: absolute;
+  top: 0;
+  right: 0;
+  z-index: 2; // Ensure icon is above input groups
+  display: block;
+  width: @input-height-base;
+  height: @input-height-base;
+  line-height: @input-height-base;
+  text-align: center;
+  pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+  width: @input-height-large;
+  height: @input-height-large;
+  line-height: @input-height-large;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+  width: @input-height-small;
+  height: @input-height-small;
+  line-height: @input-height-small;
+}
+
+// Feedback states
+.has-success {
+  .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);
+}
+.has-warning {
+  .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);
+}
+.has-error {
+  .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);
+}
+
+// Reposition feedback icon if input has visible label above
+.has-feedback label {
+
+  & ~ .form-control-feedback {
+    top: (@line-height-computed + 5); // Height of the `label` and its margin
+  }
+  &.sr-only ~ .form-control-feedback {
+    top: 0;
+  }
+}
+
+
+// Help text
+//
+// Apply to any element you wish to create light text for placement immediately
+// below a form control. Use for general help, formatting, or instructional text.
+
+.help-block {
+  display: block; // account for any element using help-block
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: lighten(@text-color, 25%); // lighten the text some for contrast
+}
+
+
+// Inline forms
+//
+// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
+// forms begin stacked on extra small (mobile) devices and then go inline when
+// viewports reach <768px.
+//
+// Requires wrapping inputs and labels with `.form-group` for proper display of
+// default HTML form controls and our custom form controls (e.g., input groups).
+//
+// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
+
+.form-inline {
+
+  // Kick in the inline
+  @media (min-width: @screen-sm-min) {
+    // Inline-block all the things for "inline"
+    .form-group {
+      display: inline-block;
+      margin-bottom: 0;
+      vertical-align: middle;
+    }
+
+    // In navbar-form, allow folks to *not* use `.form-group`
+    .form-control {
+      display: inline-block;
+      width: auto; // Prevent labels from stacking above inputs in `.form-group`
+      vertical-align: middle;
+    }
+
+    // Make static controls behave like regular ones
+    .form-control-static {
+      display: inline-block;
+    }
+
+    .input-group {
+      display: inline-table;
+      vertical-align: middle;
+
+      .input-group-addon,
+      .input-group-btn,
+      .form-control {
+        width: auto;
+      }
+    }
+
+    // Input groups need that 100% width though
+    .input-group > .form-control {
+      width: 100%;
+    }
+
+    .control-label {
+      margin-bottom: 0;
+      vertical-align: middle;
+    }
+
+    // Remove default margin on radios/checkboxes that were used for stacking, and
+    // then undo the floating of radios and checkboxes to match.
+    .radio,
+    .checkbox {
+      display: inline-block;
+      margin-top: 0;
+      margin-bottom: 0;
+      vertical-align: middle;
+
+      label {
+        padding-left: 0;
+      }
+    }
+    .radio input[type="radio"],
+    .checkbox input[type="checkbox"] {
+      position: relative;
+      margin-left: 0;
+    }
+
+    // Re-override the feedback icon.
+    .has-feedback .form-control-feedback {
+      top: 0;
+    }
+  }
+}
+
+
+// Horizontal forms
+//
+// Horizontal forms are built on grid classes and allow you to create forms with
+// labels on the left and inputs on the right.
+
+.form-horizontal {
+
+  // Consistent vertical alignment of radios and checkboxes
+  //
+  // Labels also get some reset styles, but that is scoped to a media query below.
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline {
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-top: (@padding-base-vertical + 1); // Default padding plus a border
+  }
+  // Account for padding we're adding to ensure the alignment and of help text
+  // and other content below items
+  .radio,
+  .checkbox {
+    min-height: (@line-height-computed + (@padding-base-vertical + 1));
+  }
+
+  // Make form groups behave like rows
+  .form-group {
+    .make-row();
+  }
+
+  // Reset spacing and right align labels, but scope to media queries so that
+  // labels on narrow viewports stack the same as a default form example.
+  @media (min-width: @screen-sm-min) {
+    .control-label {
+      text-align: right;
+      margin-bottom: 0;
+      padding-top: (@padding-base-vertical + 1); // Default padding plus a border
+    }
+  }
+
+  // Validation states
+  //
+  // Reposition the icon because it's now within a grid column and columns have
+  // `position: relative;` on them. Also accounts for the grid gutter padding.
+  .has-feedback .form-control-feedback {
+    right: floor((@grid-gutter-width / 2));
+  }
+
+  // Form group sizes
+  //
+  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
+  // inputs and labels within a `.form-group`.
+  .form-group-lg {
+    @media (min-width: @screen-sm-min) {
+      .control-label {
+        padding-top: (@padding-large-vertical + 1);
+        font-size: @font-size-large;
+      }
+    }
+  }
+  .form-group-sm {
+    @media (min-width: @screen-sm-min) {
+      .control-label {
+        padding-top: (@padding-small-vertical + 1);
+        font-size: @font-size-small;
+      }
+    }
+  }
+}
diff --git a/resources/less/metager/general/general.less b/resources/less/metager/general/general.less
index 2330809124dd29357c75668bdd443af5f4d6b753..0c6aabad4dbe76433345c706671ee278ad13a063 100644
--- a/resources/less/metager/general/general.less
+++ b/resources/less/metager/general/general.less
@@ -1,435 +1,3 @@
-/* Default Font */
-
-@modal-content-box-shadow-color: fade(@color-black, 30%);
-@body-background-color: @background-color;
-@body-background-color-mobile: @background-color-mobile;
-@a-hover-color: red;
-
-html, body, * {
-    font-family: @metager-font;
-}
-
-/* Main Containers */
-
-html,
-body,
-.content-wrapper {
-    width: 100%;
-}
-
-html {
-    min-height: 100%;
-    height: auto;
-    display: flex;
-    font-size: 14px;
-    font-size: 3.8mm;
-}
-
-body {
-    flex-grow: 1;
-    background-image: inherit;
-    background-color: @body-background-color;
-    background-attachment: fixed;
-    min-height: 100%;
-    height: auto;
-    display: flex;
-    flex-direction: column;
-    margin: 0;
-    font-size: 1.0em;
-    @media(max-width: @screen-mobile){
-        background-color: @body-background-color-mobile
-    }
-}
-
-.wrapper {
-    flex-grow: 1;
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
-    margin-top: 50px;
-    padding: 0px 8px;
-    overflow: hidden;
-    main {
-        width: 100%;
-        max-width: 1000px;
-    }
-}
-
-.navbar,
-#navbar-static-pages {
-    box-shadow: 1px 1px 5px 1px rgba(0, 0, 0, 0.2);
-}
-
-/* Scrollbox Style */
-
-@scrollfade-color: white;
-.scrollbox {
-    position: relative;
-    width: 100%;
-    max-width: @results-width-max;
-    .scrollfade-right {
-        background: -webkit-gradient(linear, right top, left top, from(@scrollfade-color), color-stop(fade(@scrollfade-color, 80%)), to(fade(@scrollfade-color, 0%)));
-        background: linear-gradient(to left, @scrollfade-color, fade(@scrollfade-color, 80%), fade(@scrollfade-color, 0%));
-        right: 1px;
-    }
-    .search-option-frame {
-        position: relative;
-    }
-}
-
-/* General font sizing */
-
-@default-font-size: 15px;
-.first-last-child-margin-fix() {
-    &:first-child {
-        margin-top: 0px;
-    }
-    &:last-child {
-        margin-bottom: 0px;
-    }
-}
-
-h1 {
-    font-size: 2em;
-    .first-last-child-margin-fix;
-}
-
-h2 {
-    font-size: 1.5em;
-    .first-last-child-margin-fix;
-}
-
-h3 {
-    font-size: 1.3em;
-    .first-last-child-margin-fix;
-}
-
-p {
-    font-size: 1em;
-    .first-last-child-margin-fix;
-}
-
-body {
-    .first-last-child-margin-fix;
-}
-
-.page-title {
-    font-size: 2.5em;
-    text-align: center;
-}
-
-.page-subtitle {
-    font-size: 1em;
-    text-align: center;
-}
-
-.subheading {
-    font-size: 1.2em;
-    margin: 20px 0px;
-    white-space: center;
-}
-
-a {
-    font-size: 1em;
-    color: @link-color;
-    &:visited {
-        color: @link-color;
-    }
-    &:hover {
-        text-decoration: none;
-        color: @a-hover-color;
-    }
-}
-
-i.fa {
-    background-color: transparent;
-}
-
-/* Logo */
-
-.logo {
-    color: @metager-orange;
-    font-family: @metager-font;
-    font-style: italic;
-    font-weight: bold;
-    white-space: nowrap;
-}
-
-#startpage-logo {
-    .logo;
-    display: flex;
-    justify-content: center;
-    margin: 0px 0px 45px 0px;
-    white-space: nowrap;
-    text-align: center;
-    @media(max-width: @screen-mobile){
-        margin-bottom: 25px;
-    }
-    &>a {
-        .logo;
-        display: block;
-        width: fit-content;
-        text-decoration: none;
-        font-size: 2.7em;
-        @media(max-width: @screen-mobile) {
-            font-size: 2em;
-        }
-        >img {
-            width: 4.8em;
-        }
-    }
-}
-
-#subpage-logo {
-    padding: 16px 0 5px 0px;
-    .navbar-brand {
-        .noprint;
-        line-height: 100% !important;
-        padding: 0;
-        padding-left: 8px;
-        position: absolute;
-        z-index: 5;
-        left: 10px;
-        h1 {
-            .logo;
-            font-size: 1.6em;
-            margin: 0;
-            >img {
-                width: 4.8em;
-            }
-        }
-    }
-}
-
-/* Links that look like text */
-
-.mutelink {
-    &,
-    &:hover,
-    &:active,
-    &:focus,
-    &:visited {
-        color: inherit;
-    }
-}
-
-/* Summary Elements */
-
-summary {
-    cursor: pointer;
-    &::-webkit-details-marker {
-        display: none;
-    }
-    &::-moz-details-marker {
-        display: none;
-    }
-    &::-ms-details-marker {
-        display: none;
-    }
-    &::-o-details-marker {
-        display: none;
-    }
-    &::details-marker {
-        display: none;
-    }
-    &:focus {
-        outline: none;
-    }
-}
-
-/* Tooltips 
- * 
- * All elements with a "data-tooltip" attribute show a 
- * tooltip below on hover
- */
-
-*[data-tooltip] {
-    position: relative;
-    &:hover {
-        &:after {
-            opacity: 1;
-        }
-    }
-    &:after {
-        content: attr(data-tooltip);
-        position: absolute;
-        top: 100%;
-        left: 0;
-        z-index: 1;
-        color: black;
-        background-color: white;
-        border: 2px solid @metager-orange;
-        border-radius: 6px;
-        padding: 3px 8px;
-        width: 200px;
-        white-space: pre-wrap;
-        font-size: .9em;
-        font-weight: normal;
-        text-decoration: none;
-        text-align: center;
-        pointer-events: none;
-        opacity: 0;
-        transition: opacity 0.3s ease;
-        text-transform: initial; // Resets specific styles
-    }
-    &.hide-tooltip-on-resultpage:after {
-        /* Auf kleinen Bildschirmen wird der Tooltip nicht angezeigt */
-        @media (max-width: 700px) {
-            display: none;
-        }
-    }
-    &.delayed:after {
-        transition-delay: 0.5s;
-    }
-    &.delayed-soft:after {
-        transition-delay: 0.2s;
-    }
-    &.delayed-strong:after {
-        transition-delay: 1s;
-    }
-}
-
-/* For Containers that are supposed to split their content up into two columns */
-
-.two-col {
-    >* {
-        width: 50%;
-        margin: 0;
-        padding: 0;
-        float: left;
-        @media (max-width: @screen-mobile) {
-            width: 100%;
-        }
-    }
-}
-
-/* Links */
-
-// Internal, but design differs from other pages
-.inlink {
-    &:after {
-        display: inline-block;
-        font: normal normal normal 14px/1 'Font Awesome 5 Free';
-        font-size: inherit;
-        text-rendering: auto;
-        -webkit-font-smoothing: antialiased;
-        content: "\f35d";
-    }
-}
-
-// External
-.outlink {
-    &:after {
-        display: inline-block;
-        font: normal normal normal 14px/1 'Font Awesome 5 Free';
-        font-size: inherit;
-        text-rendering: auto;
-        -webkit-font-smoothing: antialiased;
-        content: "\f35d";
-    }
-}
-
-/* Little helpers */
-
-// Bold text
-.bold {
-    font-weight: bold;
-}
-
-// Do not print this
-.noprint {
-    @media print {
-        display: none !important;
-    }
-}
-
-// For print: Start new page after this
-.newpage {
-    page-break-after: always;
-}
-
-// For list elements without a dot
-li.nodot {
-    list-style-type: none;
-}
-
-// Disabled elements (only visual)
-.disabled,
-:disabled,
-.disabled *,
-:disabled * {
-    color: #aaa !important;
-    cursor: not-allowed !important;
-}
-
-// Convert excess text into "..."
-.overflow-ellipsis {
-    overflow: hidden;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-}
-
-// Used on labels which initiate visual change (e.g. open-sidebar-button)
-.navigation-element {
-    cursor: pointer;
-}
-
-/* Button */
-
-button {
-    border: none;
-    background-color: transparent;
-}
-
-/* Lists with dots */
-
-.dotlist {
-    list-style-type: disc;
-    text-align: left;
-    li {
-        margin-bottom: 5px !important;
-    }
-}
-
-/* Code */
-
-code {
-    white-space: pre-wrap;
-    overflow-wrap: break-word;
-    word-break: break-word;
-}
-
-/* Adresses */
-
-address {
-    white-space: pre;
-}
-
-/* Unknown Uses */
-
-label a {
-    color: inherit;
-    &:hover {
-        text-decoration: none;
-        color: inherit;
-    }
-}
-
-// For Elements where newlines should actually be displayed
-.wrap {
-    white-space: pre-wrap;
-}
-
-// When the content should be centerd horizontally
-.center-wrapper {
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-}
-
-#impressum, #kontakt, #team, #about {
-    .card-heavy {
-        margin: 8px 0;
-    }
-}
\ No newline at end of file
+@import "./base.less";
+@import "./cards.less";
+@import "./specific.less";
diff --git a/resources/less/metager/general/specific.less b/resources/less/metager/general/specific.less
index 1a00e3594a48b7fd2fc23264953a56f57f223180..028c845406144e4477c8459e2c156c52b69a9e5e 100644
--- a/resources/less/metager/general/specific.less
+++ b/resources/less/metager/general/specific.less
@@ -4,7 +4,7 @@
 .form-group {
     font-family: sans-serif;
     font-size: 1em;
-    color: @color-black;
+    color: @text-color;
     background-color: transparent;
     text-align: center;
 }
diff --git a/resources/less/metager/metager-dark.less b/resources/less/metager/metager-dark.less
new file mode 100644
index 0000000000000000000000000000000000000000..931ad79b4daf31dca73068add6c6528a7482c1f7
--- /dev/null
+++ b/resources/less/metager/metager-dark.less
@@ -0,0 +1,16 @@
+@import "../bootstrap/bootstrap.less";
+
+// Variables
+@import "./variables-dark.less";
+// General
+@import "./general/general.less";
+// Pages
+@import "./pages/all.less";
+// Parts
+@import "./parts/aufruf-winter.less";
+@import "./parts/footer.less";
+@import "./parts/modals.less";
+@import "./parts/searchbar.less";
+@import "./parts/settings.less";
+@import "./parts/sidebar.less";
+@import "./parts/bitpay.less";
diff --git a/resources/less/metager/metager.less b/resources/less/metager/metager.less
index edbe70c98e5312f06282cb485062b1febc6d2c22..64bb752a15f4b8634b01d1e21b2de5cd3ede4fe5 100644
--- a/resources/less/metager/metager.less
+++ b/resources/less/metager/metager.less
@@ -1,19 +1,11 @@
+@import "../bootstrap/bootstrap.less";
+
 // Variables
 @import "./variables.less";
 // General
-@import "./general/cards.less";
 @import "./general/general.less";
-@import "./general/specific.less";
 // Pages
-@import "./pages/contact.less";
-@import "./pages/donation.less";
-@import "./pages/help_faq.less";
-@import "./pages/language.less";
-@import "./pages/privacy.less";
-@import "./pages/resultpage.less";
-@import "./pages/start-page.less";
-@import "./pages/widget.less";
-@import "./pages/settings.less";
+@import "./pages/all.less";
 // Parts
 @import "./parts/aufruf-winter.less";
 @import "./parts/footer.less";
@@ -21,4 +13,4 @@
 @import "./parts/searchbar.less";
 @import "./parts/settings.less";
 @import "./parts/sidebar.less";
-@import "./parts/bitpay.less";
\ No newline at end of file
+@import "./parts/bitpay.less";
diff --git a/resources/less/metager/pages/all.less b/resources/less/metager/pages/all.less
new file mode 100644
index 0000000000000000000000000000000000000000..575bb053280ee3c7c952f1ef5b16e99068c108e2
--- /dev/null
+++ b/resources/less/metager/pages/all.less
@@ -0,0 +1,10 @@
+
+@import "./contact.less";
+@import "./donation.less";
+@import "./help_faq.less";
+@import "./language.less";
+@import "./privacy.less";
+@import "./resultpage.less";
+@import "./start-page.less";
+@import "./widget.less";
+@import "./settings.less";
diff --git a/resources/less/metager/pages/help_faq.less b/resources/less/metager/pages/help_faq.less
index 4e4f0d96382e16569ad5995a789bb18d7c10189c..61941d8b930d04fde1707940e32dc24c15a769a1 100644
--- a/resources/less/metager/pages/help_faq.less
+++ b/resources/less/metager/pages/help_faq.less
@@ -14,7 +14,7 @@
         }
         .search-example {
             border: 1px solid #aaa;
-            background-color: #eee;
+            background-color: @background-color;
             border-radius: 5px;
             padding: 10px;
         }
@@ -24,7 +24,7 @@
             img {
                 margin: 10px 0;
                 padding: 8px;
-                border: 1px solid #ccc;
+                border: 1px solid @border-color;
                 border-radius: 3px;
             }
         }
diff --git a/resources/less/metager/pages/privacy.less b/resources/less/metager/pages/privacy.less
index 4836cea6cd2e70df45b7658d271fc13c5ebb99b4..c73638c0b5e9d7c34ae1fdab80f17007f28ed559 100644
--- a/resources/less/metager/pages/privacy.less
+++ b/resources/less/metager/pages/privacy.less
@@ -13,8 +13,8 @@
             .card-heavy;
         }
         .kontext {
-            border-bottom: 1px solid #ccc;
-            border-top: 1px solid #ccc;
+            border-bottom: 1px solid @border-color;
+            border-top: 1px solid @border-color;
             padding: 8px 0;
             .datum-list {
                 margin-top: 8px;
diff --git a/resources/less/metager/pages/resultpage/quicktips.less b/resources/less/metager/pages/resultpage/quicktips.less
index e8d5b918eb83ecb24ebd68ad8028a3f5a9c24072..f7f3eb879083fa2a4d5f19dcd3a29e7936e60c2d 100644
--- a/resources/less/metager/pages/resultpage/quicktips.less
+++ b/resources/less/metager/pages/resultpage/quicktips.less
@@ -26,7 +26,7 @@
         margin: 10px 0px;
         padding: 10px 10px 10px 10px;
         border: 1px solid #ccc;
-        background-color: white;
+        background-color: @quicktip-background-color;
         details:not([open=""]) {
             .quicktip-summary p {
                 .overflow-ellipsis;
diff --git a/resources/less/metager/pages/resultpage/result-page.less b/resources/less/metager/pages/resultpage/result-page.less
index d11b397726df5f183090219d5ebf52be6645fa98..7e70f86be684ab115cc272a7bd7e1b16ac515ffd 100644
--- a/resources/less/metager/pages/resultpage/result-page.less
+++ b/resources/less/metager/pages/resultpage/result-page.less
@@ -1,5 +1,26 @@
 /* Variables */
 
+// Background color
+@resultpage-background-color: @background-color;
+// Margin to the left of the results
+@results-margin-left: 16px;
+// Min and max widths of the 2 resultpage columns
+@results-width-min: 500px;
+@results-width-max: 800px;
+@additions-width-min: 500px;
+@additions-width-max: 500px;
+// Breakpoints for the 2 resultpage columns
+@resultpage-breakpoint-max: (@results-width-max + @additions-width-max + @padding-small-default * 2 + @padding-small-default * 4 + 6);
+@resultpage-breakpoint-min: (@results-width-min + @additions-width-min + @padding-small-default * 4);
+@product-shop-color: green;
+// The point upon which a .screen-large logo is displayed
+@logo-size-breakpoint: (@results-width-min + @padding-small-default * 2);
+// The point upon which the sidebar opener switches place
+@sidebar-opener-breakpoint: (@results-width-max + @padding-small-default * 2 + 60px);
+// Quicktip background color
+@quicktip-background-color: @resultpage-background-color;
+// Color of the Spruch author
+@spruch-author-color: @color-strong-grey;
 /* Styles */
 
 #header-logo {
@@ -245,7 +266,7 @@ a {
         border-radius: 10px;
         padding: 5px;
         margin-left: 10px;
-        background-color: white;
+        background-color: @resultpage-background-color;
         box-shadow: 0px 1px 1.5px 0px rgba(0, 0, 0, 0.12), 1px 0px 1px 0px rgba(0, 0, 0, 0.24);
         &:first-child {
             margin-left: 0px;
@@ -333,7 +354,7 @@ a {
     #research-bar-container {
         grid-area: searchbar;
         padding-top: @padding-small-default;
-        background-color: white;
+        background-color: @resultpage-background-color;
         box-shadow: 0px 1px 3px 2px white, 1px 0px 1px 2px white;
         position: sticky;
     }
@@ -417,8 +438,8 @@ a {
     background-color: @resultpage-background-color;
     max-width: @results-width-max;
     #research-bar {
-        background-color: white;
-        border: 1px solid #ccc;
+        background-color: @resultpage-background-color;
+        border: 1px solid @border-color;
         border-bottom: 1px solid @metager-orange;
         box-shadow: 0px 1px 1.5px 0px rgba(0, 0, 0, 0.12), 1px 0px 1px 0px rgba(0, 0, 0, 0.24);
         display: flex;
@@ -426,7 +447,7 @@ a {
         padding: 4px;
         .resultpage-searchbar {
             .search-input-submit .search-input input {
-                border-bottom: 1px solid #ccc;
+                border-bottom: 1px solid @border-color;
             }
             @media (max-width: @sidebar-opener-breakpoint) {
                 .search-focus-selector {
@@ -457,10 +478,10 @@ a {
         display: flex;
         width: 100%;
         max-width: @results-width-max;
-        background-color: white;
+        background-color: @resultpage-background-color;
         overflow-x: auto;
         padding: 8px;
-        border-bottom: 1px solid #ccc;
+        border-bottom: 1px solid @border-color;
         @media (max-width: @screen-mobile) {
             .card;
             margin: 0;
@@ -468,11 +489,11 @@ a {
         &>div {
             padding-right: 16px;
             &>a {
-                color: black;
+                color: @text-color;
             }
             &.active>a {
-                border-bottom: 1px solid black;
-                color: black;
+                border-bottom: 1px solid @text-color;
+                color: @text-color;
             }
             &:last-child {
                 padding-right: 20px
@@ -493,7 +514,7 @@ a {
 
 #options {
     grid-area: options;
-    background-color: white;
+    background-color: @resultpage-background-color;
     max-width: @results-width-max;
     padding: 0 8px;
     @media(max-width: @screen-mobile){
@@ -592,7 +613,7 @@ a {
     #settings {
         text-align: center;
         a {
-            color: #333;
+            color: @text-color;
             &:hover {
                 color: red;
                 span.badge {
@@ -703,4 +724,4 @@ footer.resultPageFooter {
 .settings-checkbox .settings-icon {
     margin-left: 5px;
     font-size: 1em;
-}
+}
\ No newline at end of file
diff --git a/resources/less/metager/pages/resultpage/result.less b/resources/less/metager/pages/resultpage/result.less
index eb42ae189ace4967a48dd030462389303458de84..f151b702cae22dbe4c98a9a27faae2d9e7fe27ff 100644
--- a/resources/less/metager/pages/resultpage/result.less
+++ b/resources/less/metager/pages/resultpage/result.less
@@ -1,3 +1,9 @@
+@result-font-large: 18px;
+@result-font-medium: 16px;
+@result-font-url: 14px;
+@result-font-small: 12px;
+@result-description-color: @text-color;
+@result-image-border-color: @color-almost-white;
 .result {
 
     // Remove the margin from the first result because it already has margin from the grid ruleset
@@ -38,7 +44,7 @@
                     &:hover,
                     &:focus,
                     &:visited {
-                        color: black;
+                        color: @text-color;
                         text-decoration: none;
                     }
                 }
@@ -177,7 +183,7 @@
             &:hover,
             &:focus,
             &:visited {
-                color: black;
+                color: @text-color;
                 font-size: .7em;
                 text-decoration: none;
             }
@@ -193,7 +199,7 @@
             &:hover,
             &:focus,
             &:visited {
-                color: black;
+                color: @text-color;
                 font-size: .7em;
                 text-decoration: none;
             }
@@ -253,7 +259,7 @@
     &>.result-options {
         max-width: 100%;
         &>.options {
-            border-top: 1px solid #ccc;
+            border-top: 1px solid @border-color;
             width: 100%;
             text-align: right;
             overflow: hidden;
diff --git a/resources/less/metager/parts/sidebar.less b/resources/less/metager/parts/sidebar.less
index faa068ec92cb12ea1c34135fe616393ecc548621..d417af9b8492275bc8a3607a0fbe56d04ca36ea6 100644
--- a/resources/less/metager/parts/sidebar.less
+++ b/resources/less/metager/parts/sidebar.less
@@ -1,5 +1,5 @@
 .sidebar {
-    border-left: 1px solid #ccc;
+    border-left: 1px solid @border-color;
     box-shadow: 0px 1px 1.5px 1px #c0c0c0;
     position: fixed;
     display: block;
@@ -11,7 +11,8 @@
     overflow: hidden;
     overflow-y: auto;
     z-index: 10;
-    background-color: white;
+    background-color: @background-color;
+    color: @text-color;
     transition: 0.5s;
     border-left: none;
     .sidebar-logo {
@@ -35,7 +36,7 @@
         &>li {
             width: 100%;
             &:hover {
-                background-color: @color-almost-white;
+                background-color: @sidebar-list-hover-color;
             }
             &>label,
             &>a {
@@ -54,7 +55,7 @@
                 font-weight: normal;
                 text-decoration: none;
                 text-indent: 12px;
-                color: black;
+                color: @text-color;
                 line-height: 20px;
                 display: inline-block;
                 width: 100%;
@@ -100,7 +101,7 @@
         text-indent: 12px;
         display: inline-block;
         width: 100%;
-        color: black;
+        color: @text-color;
         &:hover, &:focus {
             color: red;
         }
@@ -196,7 +197,7 @@
     line-height: 23px;
     border-radius: 5px;
     color: grey;
-    background-color: white;
+    background-color: @background-color;
     &:after {
         content: "≡";
     }
@@ -221,4 +222,4 @@
             content: "×";
         }
     }
-}
\ No newline at end of file
+}
diff --git a/resources/less/metager/variables-dark.less b/resources/less/metager/variables-dark.less
new file mode 100644
index 0000000000000000000000000000000000000000..72a7ba33f57dd558731bba57f7753480ede196b5
--- /dev/null
+++ b/resources/less/metager/variables-dark.less
@@ -0,0 +1,16 @@
+
+@import "./variables.less";
+
+// Default Background Color
+@background-color: @color-almost-black;
+@background-color-mobile: @color-almost-black;
+// General text color.
+@text-color: @color-white;
+// Default textual link color.
+@link-color: #FF8000;
+// Sidebar styles
+@sidebar-list-hover-color: @color-strong-grey;
+// Card styles
+@card-background-color: @color-strong-grey;
+// Default Borde Color 
+@border-color: #727272;
diff --git a/resources/less/metager/variables.less b/resources/less/metager/variables.less
index 2dc72d81cbf45c9c1b0acd986a092bdd592306d2..1541bf4acc6669dc8a4b0e598a86abcb4862ea36 100644
--- a/resources/less/metager/variables.less
+++ b/resources/less/metager/variables.less
@@ -11,6 +11,7 @@
 // Default Background Color
 @background-color: white;
 @background-color-mobile: #FAFAFA;
+@sidebar-list-hover-color: @color-almost-white;
 // Default Font
 @metager-font:
 "Liberation Sans",
@@ -28,6 +29,10 @@ sans-serif;
 @screen-mobile: 760px;
 @screen-small: 1000px;
 @screen-medium: 1200px;
+// Card styles
+@card-background-color: @background-color;
+// Default Border Color
+@border-color: #ccc;
 
 @result-font-large: 18px;
 @result-font-medium: 16px;
@@ -56,4 +61,4 @@ sans-serif;
 // Quicktip background color
 @quicktip-background-color: @color-white;
 // Color of the Spruch author
-@spruch-author-color: @color-strong-grey;
\ No newline at end of file
+@spruch-author-color: @color-strong-grey;
diff --git a/resources/views/layouts/resultPage.blade.php b/resources/views/layouts/resultPage.blade.php
index 4becd115b695cdf6d8a26ae5a28a3e04fcef91d2..697c6ecdec8683a5fd2eaac6de7d67e7409f9741 100644
--- a/resources/views/layouts/resultPage.blade.php
+++ b/resources/views/layouts/resultPage.blade.php
@@ -25,8 +25,8 @@
 		<link href="/fonts/liberationsans/stylesheet.css" rel="stylesheet">
 		<link type="text/css" rel="stylesheet" href="{{ mix('css/fontawesome.css') }}" />
 		<link type="text/css" rel="stylesheet" href="{{ mix('css/fontawesome-solid.css') }}" />
-		<link type="text/css" rel="stylesheet" href="{{ mix('css/bootstrap.css') }}" />
-		<link type="text/css" rel="stylesheet" href="{{ mix('css/themes/metager.css') }}" />
+		<link type="text/css" rel="stylesheet alternate" href="{{ mix('css/themes/metager-dark.css') }}" title="MetaGer Dark"/>
+		<link type="text/css" rel="stylesheet" href="{{ mix('css/themes/metager.css') }}" title="MetaGer"/>
 		<meta name="referrer" content="origin">
 		<meta name="age-meta-label" content="age=18"/>
 		@include('parts.utility')
diff --git a/resources/views/layouts/staticPages.blade.php b/resources/views/layouts/staticPages.blade.php
index 1f92b3cae9c40aca190a8f309924609dea455cb2..445b92e726627562d8fa4526f021d1e21d9edfb8 100644
--- a/resources/views/layouts/staticPages.blade.php
+++ b/resources/views/layouts/staticPages.blade.php
@@ -22,8 +22,8 @@
 		<link rel="apple-touch-icon" sizes="152x152" href="/img/apple/touch-icon-152.png">
 		<link rel="apple-touch-icon" sizes="180x180" href="/img/apple/touch-icon-180.png">
 		<link rel="search" type="application/opensearchdescription+xml" title="{{ trans('staticPages.opensearch') }}" href="{{  LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), action('StartpageController@loadPlugin')) }}">
-		<link type="text/css" rel="stylesheet" href="{{ mix('css/bootstrap.css') }}" />
-		<link type="text/css" rel="stylesheet" href="{{ mix('css/themes/metager.css') }}" />
+		<link type="text/css" rel="stylesheet alternate" href="{{ mix('css/themes/metager-dark.css') }}" title="MetaGer Dark"/>
+		<link type="text/css" rel="stylesheet" href="{{ mix('css/themes/metager.css') }}" title="MetaGer"/>
 		<link type="text/css" rel="stylesheet" href="{{ mix('css/utility.css') }}" />
 		<link href="/fonts/liberationsans/stylesheet.css" rel="stylesheet">
 		<link type="text/css" rel="stylesheet" href="{{ mix('css/fontawesome.css') }}" />
diff --git a/resources/views/widget/widget.blade.php b/resources/views/widget/widget.blade.php
index 64fbb43fa6982753c0a3d0e669ad9fb2425fc1f8..059d80cb09ca6d33127009df1447d2d8d20dc6b0 100644
--- a/resources/views/widget/widget.blade.php
+++ b/resources/views/widget/widget.blade.php
@@ -6,7 +6,7 @@
 	<h1 class="page-title">{{ trans('widget.head') }}</h1>
 	<div class="card-medium">
 		<p>{{ trans('widget.body.1') }}</p>
-		<p id="widgetLinks" class="btn-group"><a class="btn btn-default mutelink" href="websearch/">{{ trans('widget.body.2') }}</a><a class="btn btn-default mutelink" href="sitesearch/">{{ trans('widget.body.3') }}</a></p>
+		<p id="widgetLinks" class="btn-group"><a class="btn btn-default" href="websearch/">{{ trans('widget.body.2') }}</a><a class="btn btn-default" href="sitesearch/">{{ trans('widget.body.3') }}</a></p>
 		<p>{{ trans('widget.body.4') }}</p>
 	</div>
 @endsection
diff --git a/webpack.mix.js b/webpack.mix.js
index 882de714d88b6a8ccde46693c544762dd324ada1..91565c2e243bffdfc366fe10fe028ee96cc9c072 100644
--- a/webpack.mix.js
+++ b/webpack.mix.js
@@ -22,6 +22,9 @@ mix
   .less("resources/less/metager/metager.less", "public/css/themes/metager.css", {
     strictMath: true
   })
+  .less("resources/less/metager/metager-dark.less", "public/css/themes/metager-dark.css", {
+    strictMath: true
+  })
   .less("resources/less/metager/pages/resultpage/quicktips.less", "public/css/quicktips.css", {
     strictMath: true
   })
@@ -80,4 +83,4 @@ mix
   // source maps
   .sourceMaps(false, "inline-source-map")
   // versioning
-  .version();
\ No newline at end of file
+  .version();