Added hook for path rewriting
diff --git a/lib/Kalamar.pm b/lib/Kalamar.pm
index e3f0d31..b4b15e0 100644
--- a/lib/Kalamar.pm
+++ b/lib/Kalamar.pm
@@ -19,6 +19,14 @@
     b($self->home . '/kalamar.secret')->slurp->split("\n")
   ]);
 
+  $self->hook(before_dispatch => sub {
+      my $c = shift;
+      my $host = $c->req->headers->header('X-Forwarded-Host');
+      if ($host && $host eq 'korap.ids-mannheim.de') {
+	$c->req->url->base->path('/kalamar/');
+      };
+  }) if $self->mode eq 'production';
+
   # Add additional plugin path
   push(@{$self->plugins->namespaces}, __PACKAGE__ . '::Plugin');
 
diff --git a/public/kwic-4.0.css b/public/kwic-4.0.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/public/kwic-4.0.css
diff --git a/public/style.css b/public/style.css
new file mode 100644
index 0000000..4a7743d
--- /dev/null
+++ b/public/style.css
@@ -0,0 +1,330 @@
+@charset "utf-8";
+
+body, html {
+  color: #666;
+  font-family: verdana, tahoma, arial;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.4);
+  margin: 0;
+}
+
+a {
+  color: inherit;
+}
+
+#top {
+  background-color: #7ba400;
+  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
+  -moz-box-sizing: border-box;    /* Firefox, other Gecko */
+  box-sizing: border-box;         /* Opera/IE 8+ */
+  padding: 0pt;
+  padding-top: 5px;
+  position: relative;
+  height: 70px;
+  padding-left: 30px;
+}
+
+#q-field {
+  -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
+  -moz-box-sizing: border-box;    /* Firefox, other Gecko */
+  box-sizing: border-box;         /* Opera/IE 8+ */
+}
+
+#button-right {
+  position: absolute;
+  right: 15px;
+  top: 15px;
+}
+
+input, button {
+  border: 2px solid white;
+  padding: 3px;
+  font-size: 11pt;
+}
+
+form {
+  margin-left: 235px;
+  margin-top:0px
+}
+
+form input[type=search] {
+  width: 50%;
+}
+
+a {
+  text-decoration: none;
+}
+
+p.found {
+  font-size: 10pt;
+  padding: 0;
+  margin: 0;
+}
+
+p.found {
+  text-align: right;
+}
+
+#pagination {
+  position: fixed;
+  right: 20px;
+  bottom: 10px;
+  z-index: 800;
+}
+
+#pagination span {
+  display: inline-block;
+  background-color: #ddd;
+  margin: 2pt;
+  height: 1.5em;
+  padding-left: .5em;
+  padding-right: .5em;
+  line-height: 1.5em;
+  text-align: center;
+  border-width: 2px;
+  border-style: solid;
+  border-color: #999;
+  box-shadow: 3px 3px 3px rgba(0,0,0,0.3);
+}
+
+#pagination a {
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.9);
+}
+
+#pagination a[rel=self] span {
+  border-color: #ffa500;
+  background-color: #f4eebb;
+  color: #ff8000;
+}
+
+#pagination a[href] {
+  color: #7ba400;
+}
+
+#pagination a[href] span:hover {
+  background-color: #7ba400;
+  border-color: #496000;
+  color: #496000;
+  text-shadow: none;
+}
+
+#total-results {
+  color: #c1002b;
+}
+
+code.query {
+  background-color: #f4eebb;
+  display: block;
+  border-style: solid;
+  border-color: #ffa500;
+  font-size: 12pt;
+  padding: 2pt;
+  color: #bb6000;
+  font-weight: bold;
+  text-shadow: 1px 1px rgba(255, 255, 255, 0.9);
+  border-width: 2px;
+  margin: 0;
+  margin-bottom: 5pt;
+  cursor: pointer;
+}
+
+code.query.serial:not(.active) span {
+  padding: 2pt;
+}
+
+code.query pre {
+  display: block;
+  padding: 2px 5px;
+  margin: 0;
+}
+
+code.query.serial:not(.active) pre {
+  display: none;
+}
+
+code.query.serial.active span {
+  display: none;
+}
+
+#sidebar.active {
+  margin-left: 0px;
+  left: 0;
+  top: 0;
+}
+
+#sidebar {
+  color: #fff;
+  text-shadow: none;
+  transition: all .3s ease-in-out;
+  position: fixed;
+  z-index: 500;
+  height: 100%;
+  background-color: #496000;
+  width: 260px;
+  margin-left: -245px;
+  left: 0;
+  top: 0;
+}
+
+#sidebar > * {
+  opacity: 0;
+  transition-property: opacity;
+  transition-duration: .3s;
+}
+
+#sidebar:not(.active) > i.fa-bars {
+  opacity: 1;
+  cursor: pointer;
+  background-color: #496000;
+  position: fixed;
+  font-size: 16pt;
+  width: 16pt;  
+  height: 17pt;
+  padding: 6pt;
+  bottom: 0;
+  left: 0;
+  border-top-right-radius: 5pt;
+}
+
+#sidebar.active > * {
+  opacity: 1;
+}
+
+#sidebar.active > i.fa-bars {
+  opacity: 0;
+}
+
+#sidebar h2 {
+  font-size: 100%;
+  font-weight: bold;
+  text-align: center;
+  padding: 0;
+  margin: 0 0 5pt 0;
+}
+
+#sidebar ul {
+  list-style-type: none;
+  margin: 0;
+  font-size: 10pt;
+  text-indent: 0;
+  padding: 0;
+}
+
+#sidebar ul li {
+  padding: 4pt 10pt;
+}
+
+#sidebar ul li h3 {
+  font-weight: bold;
+  font-size: 100%;
+  padding: 0;
+  margin: 0;
+}
+
+#sidebar ul li.active h3 {
+  margin-bottom: 2pt;
+  padding-bottom: 2pt;
+  border-bottom: 1px solid black;
+}
+
+#sidebar ul li.active {
+  background-color: #7ba400;
+  text-shadow: 1px 1px rgba(0, 0, 0, 0.4);
+}
+
+dl.info {
+  font-size: 9pt;
+  padding: 0 10pt;
+}
+
+dl.info dt {
+  font-weight: bold;
+  float: left;
+}
+
+dl.info dd {
+  text-align: right;
+}
+
+#tutorial {
+  position: fixed;
+  display: block;
+  z-index: 9999;
+  background-color: #496000;
+  border-radius: 15px;
+  padding: 5px;
+  top: 2%;
+  bottom: 2%;
+  left: 5%;
+  right: 5%;
+}
+
+#tutorial:not(.active) {
+  display: none;
+}
+
+#tutorial.active {
+  display: block;
+}
+
+#tutorial > i,
+#tutorial > a > i {
+  font-size: 20pt;
+  color: #496000;
+  position: absolute;
+  z-index: 100;
+  top: 10pt;
+  right: 20pt;
+  cursor: pointer;
+}
+
+#tutorial > a > i {
+  right: 40pt;
+}
+
+#tutorial iframe {
+  width: 100%;
+  min-height: 100%;
+  border-width: 0;
+  border-radius: 10px;
+  background-image: url('img/crab.svg');
+  background-size: 10%;
+  background-repeat: no-repeat;
+  background-position: center center;
+  background-color: white;
+}
+
+h1 {
+    margin: 0;
+    left: 0;
+    top: 0;
+    background-image: url('/img/korap-logo-solo.svg');
+    position: absolute;
+    width: 260px; /* like sidebars*/
+    height: 68px; /* like #top */
+    z-index: 999;
+    background-repeat: no-repeat;
+    background-position: center center;
+    background-size: 65%;
+}
+
+h1 span {
+  margin-left: -3000px;
+}
+
+#search {
+  margin-bottom: 44px;
+}
+
+#search.match {
+  margin-top: 14pt;
+}
+
+main {
+  margin-left: 30px;
+  margin-right: 14px;
+}
+
+main.embedded {
+  margin-left: 14px;
+  margin-right: 14px;
+}
\ No newline at end of file