diff --git a/res/css/login.css b/res/css/login.css
index 7e0bde0fdbb805dba06889edc427f14bfb6adfb2..caec4df45790744e0c26149e61950c865202f86b 100644
--- a/res/css/login.css
+++ b/res/css/login.css
@@ -1,30 +1,111 @@
-body {
-    font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, arial, sans-serif;
+@font-face {
+    font-family: "Material Icons";
+    font-style: normal;
+    font-weight: 400;
+    src: local("Material Icons"), local("MaterialIcons-Regular"), url(../icons/MaterialIcons-Regular.woff2) format("woff2"), url(../icons/MaterialIcons-Regular.woff) format("woff");
+}
+
+.icon {
+    font-family: "Material Icons", sans-serif;
+    font-weight: normal;
+    font-style: normal;
+    font-size: 24px;
+    display: inline-block;
+    width: 1em;
+    height: 1em;
+    line-height: 1;
+    text-transform: none;
+    letter-spacing: normal;
+    word-wrap: normal;
+    white-space: nowrap;
+    direction: ltr;
+    /* Support for all WebKit browsers. */
     -webkit-font-smoothing: antialiased;
+    /* Support for Safari and Chrome. */
+    text-rendering: optimizeLegibility;
+    /* Support for Firefox. */
+    -moz-osx-font-smoothing: grayscale;
+    /* Support for IE. */
+    font-feature-settings: "liga";
+}
+
+@font-face {
+    font-family: "Roboto";
+    font-style: normal;
+    font-weight: 400;
+    src: local("Roboto"), local("Roboto-Regular"), url("../fonts/roboto-v15-latin-ext_cyrillic_greek-ext_cyrillic-ext_latin_greek_vietnamese-regular.woff2") format("woff2"), url("../fonts/roboto-v15-latin-ext_cyrillic_greek-ext_cyrillic-ext_latin_greek_vietnamese-regular.woff") format("woff");
+}
+
+@font-face {
+    font-family: "Roboto";
+    font-style: normal;
+    font-weight: 700;
+    src: local("Roboto Bold"), local("Roboto-Bold"), url("../fonts/roboto-v15-latin-ext_cyrillic_greek-ext_cyrillic-ext_latin_greek_vietnamese-700.woff2") format("woff2"), url("../fonts/roboto-v15-latin-ext_cyrillic_greek-ext_cyrillic-ext_latin_greek_vietnamese-700.woff") format("woff");
+}
+
+* {
+    padding: 0;
+    margin: 0;
+    box-sizing: border-box;
+    -webkit-tap-highlight-color: transparent;
+}
+
+body {
+    background: #F2F2F2;
+    font-family: "Roboto", sans-serif;
+    font-size: 81.25%;
+    display: flex;
+    flex-direction: column;
+    min-height: 100vh;
+    position: relative;
+    padding-right: 0.9375rem;
+    padding-left: 0.9375rem;
 }
 
-body > :first-child {
-    margin-top: 8rem;
+body .header, body .footer {
+    flex-grow: 1;
 }
 
-body > :last-child {
-    margin-bottom: 2rem;
+*:focus {
+    outline: none;
+}
+
+::-moz-focus-inner {
+    border: 0;
 }
 
 form {
-    background-color: #f7f7f7;
-    margin: 0 auto 25px;
-    border-radius: 2px;
-    box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3);
-    width: 16rem;
-    padding: 1.5rem 2rem;
+    background: #fff;
+    max-width: 390px;
+    padding: 20px 48px;
+    margin: 0 auto;
+    color: #212121;
+    box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24);
+}
+
+@media (max-width: 320px) {
+    form {
+        padding: 8px 16px;
+        margin: initial;
+    }
+}
+
+.header {
+    display: flex;
+    flex-direction: column;
+}
+
+.header:before {
+    content: "";
+    flex-grow: 1;
 }
 
 h1 {
     color: #555;
-    font-size: 42px;
+    font-size: 32px;
     font-weight: 300;
-    margin: 0 0 15px;
+    margin: 5px 0 15px;
+    line-height: 1.5;
     text-align: center;
 }
 
@@ -32,7 +113,8 @@ h2 {
     color: #555;
     font-size: 18px;
     font-weight: 400;
-    margin-bottom: 20px;
+    margin: 5px 0 15px;
+    line-height: 1.5;
     text-align: center;
 }
 
@@ -57,30 +139,47 @@ input[type=text], input[type=password] {
     position: relative;
 }
 
-input[type=submit] {
-    min-width: 46px;
+input[type="submit"] {
+    display: inline-block;
+    position: relative;
+    border: 0 none;
+    white-space: nowrap;
     text-align: center;
-    font-size: 14px;
-    font-weight: 700;
-    height: 36px;
-    padding: 0 8px;
-    line-height: 36px;
+    font: inherit;
+    text-transform: uppercase;
+    text-decoration: none;
+    outline: 0 none;
     border-radius: 3px;
-    transition: all 0.218s;
+    cursor: pointer;
+    padding: 8px 16px;
+    font-weight: 500;
+    line-height: 20px;
+    font-size: 14px;
+    user-select: none;
     -moz-user-select: none;
     -webkit-user-select: none;
-    user-select: none;
-    cursor: default;
-    border: 1px solid #3079ed;
+    -blink-user-select: none;
+    background-repeat: no-repeat;
+    background-position: center center;
+    background-size: 0;
+    min-width: 88px;
+    transition: background-size 500ms cubic-bezier(0.98, 0.005, 0.79, 1.005), background-color 500ms cubic-bezier(0.98, 0.005, 0.79, 1.005), color 500ms cubic-bezier(0.98, 0.005, 0.79, 1.005), box-shadow 300ms;
+    background-color: #0a70c0;
+    background-image: radial-gradient(circle, #105a94 10%, transparent 10.001%, transparent);
+    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
     color: #fff;
-    text-shadow: 0 1px rgba(0, 0, 0, 0.1);
-    background-color: #4d90fe;
-    background-image: linear-gradient(top, #4d90fe, #4787ed);
     width: 100%;
-    display: block;
-    z-index: 1;
-    position: relative;
-    box-sizing: border-box;
+    margin: 20px 0 15px;
+}
+
+input[type="submit"]:hover, input[type="submit"]:focus {
+    background-color: #0a70c0;
+    background-size: 1200%;
+    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.21), 0 3px 1px -2px rgba(0, 0, 0, 0.18), 0 1px 5px 0 rgba(0, 0, 0, 0.3);
+}
+
+input[type="submit"]:active {
+    box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);
 }
 
 form .message {
@@ -92,12 +191,4 @@ form .message.error {
     color: #b71c1c;
 }
 
-@media (max-width: 800px) {
-    body > :first-child {
-        margin-top: 1rem;
-    }
-
-    body > :last-child {
-        margin-bottom: 1rem;
-    }
-}
\ No newline at end of file
+/*# sourceMappingURL=login.css.map */
diff --git a/res/css/login.css.map b/res/css/login.css.map
new file mode 100644
index 0000000000000000000000000000000000000000..beb999563405df603cf0eb3317ffd24fdf8cfad8
--- /dev/null
+++ b/res/css/login.css.map
@@ -0,0 +1,11 @@
+{
+  "version": 3,
+  "mappings": ";EACE,WAAW,EAAE,gBAAgB;EAC7B,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,GAAG,EAAE,2KAA2K;AAElL,KAAK;EACH,WAAW,EAAE,4BAA4B;EACzC,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,IAAI;EACpB,cAAc,EAAE,MAAM;EACtB,SAAS,EAAE,MAAM;EACjB,WAAW,EAAE,MAAM;EACnB,SAAS,EAAE,GAAG;;EAGd,sBAAsB,EAAE,WAAW;;EAEnC,cAAc,EAAE,kBAAkB;;EAGlC,uBAAuB,EAAE,SAAS;;EAGlC,qBAAqB,EAAE,MAAM;;;EC7B7B,WAAW,EAAE,QAAQ;EACrB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,GAAG,EAAE,4RAA4R;;EAGjS,WAAW,EAAE,QAAQ;EACrB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,GAAG;EAChB,GAAG,EAAE,sRAAsR;ACN7R,CAAC;EACC,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,UAAU;EACtB,2BAA2B,EAAE,WAAgB;;AAE/C,IAAI;EACF,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,oBAAoB;EACjC,SAAS,EAAE,MAAM;EACjB,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,UAAU,EAAE,KAAK;EACjB,QAAQ,EAAE,QAAQ;EAClB,aAAa,EAAE,SAAQ;EACvB,YAAY,EAAE,SAAQ;EAEtB,0BAAgB;IACd,SAAS,EAAE,CAAC;;AAEhB,OAAO;EACL,OAAO,EAAE,IAAI;;AAEf,kBAAkB;EAChB,MAAM,EAAE,CAAC;;AAEX,IAAI;EACF,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,KAAK;EAChB,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,MAAM;EACd,KAAK,EAAE,OAAO;EACd,UAAU,EAAE,4EAA0E;;EANxF,IAAI;IASA,OAAO,EAAE,QAAQ;IACjB,MAAM,EAAE,OAAO;AAEnB,OAAO;EACL,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EAEtB,cAAQ;IACN,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,CAAC;;AAEhB,EAAE;EACA,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,MAAM,EAAE,UAAU;EAClB,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM;;AAEpB,EAAE;EACA,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,GAAG;EAChB,MAAM,EAAE,UAAU;EAClB,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,MAAM;;AAEpB,sCAAsC;EACpC,eAAe,EAAE,IAAI;EACrB,kBAAkB,EAAE,IAAI;EACxB,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,KAAK;EACd,MAAM,EAAE,CAAC;EACT,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,iBAAiB;EAC7B,UAAU,EAAE,UAAU;EACtB,aAAa,EAAE,GAAG;EAClB,SAAS,EAAE,IAAI;EACf,KAAK,EAAE,OAAO;EACd,KAAK,EAAE,IAAI;EACX,OAAO,EAAE,KAAK;EACd,aAAa,EAAE,IAAI;EACnB,OAAO,EAAE,CAAC;EACV,QAAQ,EAAE,QAAQ;;AAEpB,oBAAoB;EAClB,OAAO,EAAE,YAAY;EACrB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,MAAM;EACd,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;EAClB,IAAI,EAAE,OAAO;EACb,cAAc,EAAE,SAAS;EACzB,eAAe,EAAE,IAAI;EACrB,OAAO,EAAE,MAAM;EACf,aAAa,EAAE,GAAG;EAClB,MAAM,EAAE,OAAO;EACf,OAAO,EAAE,QAAQ;EACjB,WAAW,EAAE,GAAG;EAChB,WAAW,EAAE,IAAI;EACjB,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,gBAAgB,EAAE,IAAI;EACtB,mBAAmB,EAAE,IAAI;EACzB,kBAAkB,EAAE,IAAI;EACxB,iBAAiB,EAAE,SAAS;EAC5B,mBAAmB,EAAE,aAAa;EAClC,eAAe,EAAE,CAAC;EAClB,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,iMAAiM;EAC7M,gBAAgB,EAAE,OAAO;EACzB,gBAAgB,EAAE,sEAAgF;EAClG,UAAU,EAAE,mGAAwF;EACpG,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,WAAW;EAEnB,sDAAgB;IACd,gBAAgB,EAAE,OAAO;IACzB,eAAe,EAAE,KAAK;IACtB,UAAU,EAAE,mGAAwF;EAGtG,2BAAQ;IACN,UAAU,EAAE,yGAAgG;;AAEhH,aAAa;EACX,MAAM,EAAE,UAAU;EAClB,SAAS,EAAE,IAAI;;AAEjB,mBAAmB;EACjB,KAAK,EAAE,OAAO",
+  "sources": [
+    "_icons.sass",
+    "_font.sass",
+    "login.sass"
+  ],
+  "names": [],
+  "file": "login.css"
+}
\ No newline at end of file
diff --git a/res/css/login.sass b/res/css/login.sass
new file mode 100644
index 0000000000000000000000000000000000000000..42c2fef6c13d1ba8dacfb5eab92f410237950672
--- /dev/null
+++ b/res/css/login.sass
@@ -0,0 +1,132 @@
+@import "util"
+@import "icons"
+@import "font"
+
+*
+  padding: 0
+  margin: 0
+  box-sizing: border-box
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
+
+body
+  background: #F2F2F2
+  font-family: 'Roboto', sans-serif
+  font-size: 81.25%
+  display: flex
+  flex-direction: column
+  min-height: 100vh
+  position: relative
+  padding-right: .9375rem
+  padding-left: .9375rem
+
+  .header, .footer
+    flex-grow: 1
+
+*:focus
+  outline: none
+
+::-moz-focus-inner
+  border: 0
+
+form
+  background: #fff
+  max-width: 390px
+  padding: 20px 48px
+  margin: 0 auto
+  color: #212121
+  box-shadow: 0 -1px 0 #e5e5e5, 0 0 2px rgba(0, 0, 0, .12), 0 2px 4px rgba(0, 0, 0, .24)
+
+  @media(max-width: 320px)
+    padding: 8px 16px
+    margin: initial
+
+.header
+  display: flex
+  flex-direction: column
+
+  &:before
+    content: ""
+    flex-grow: 1
+
+h1
+  color: #555
+  font-size: 32px
+  font-weight: 300
+  margin: 5px 0 15px
+  line-height: 1.5
+  text-align: center
+
+h2
+  color: #555
+  font-size: 18px
+  font-weight: 400
+  margin: 5px 0 15px
+  line-height: 1.5
+  text-align: center
+
+input[type=text], input[type=password]
+  -moz-appearance: none
+  -webkit-appearance: none
+  appearance: none
+  height: 36px
+  padding: 0 8px
+  margin: 0
+  background: #fff
+  border: 1px solid #d9d9d9
+  border-top: 1px solid #c0c0c0
+  box-sizing: border-box
+  border-radius: 1px
+  font-size: 15px
+  color: #404040
+  width: 100%
+  display: block
+  margin-bottom: 10px
+  z-index: 1
+  position: relative
+
+input[type="submit"]
+  display: inline-block
+  position: relative
+  border: 0 none
+  white-space: nowrap
+  text-align: center
+  font: inherit
+  text-transform: uppercase
+  text-decoration: none
+  outline: 0 none
+  border-radius: 3px
+  cursor: pointer
+  padding: 8px 16px
+  font-weight: 500
+  line-height: 20px
+  font-size: 14px
+  user-select: none
+  -moz-user-select: none
+  -webkit-user-select: none
+  -blink-user-select: none
+  background-repeat: no-repeat
+  background-position: center center
+  background-size: 0
+  min-width: 88px
+  transition: background-size 500ms cubic-bezier(0.98, 0.005, 0.79, 1.005), background-color 500ms cubic-bezier(0.98, 0.005, 0.79, 1.005), color 500ms cubic-bezier(0.98, 0.005, 0.79, 1.005), box-shadow 300ms
+  background-color: #0a70c0
+  background-image: radial-gradient(circle, #105a94 10%, rgba(0, 0, 0, 0) 10.001%, rgba(0, 0, 0, 0))
+  box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2)
+  color: #fff
+  width: 100%
+  margin: 20px 0 15px
+
+  &:hover, &:focus
+    background-color: #0a70c0
+    background-size: 1200%
+    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.21), 0 3px 1px -2px rgba(0, 0, 0, 0.18), 0 1px 5px 0 rgba(0, 0, 0, 0.3)
+
+  &:active
+    box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2)
+
+form .message
+  margin: 0 0 1rem 0
+  font-size: 14px
+
+form .message.error
+  color: #b71c1c
\ No newline at end of file
diff --git a/templates/login.phtml b/templates/login.phtml
index da9394f9109618eb2fcf912d6e5b507fccfe0567..4402c7838c8804b2926baba2fb23ba408fa0cd24 100644
--- a/templates/login.phtml
+++ b/templates/login.phtml
@@ -6,9 +6,9 @@
 
     <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, width=device-width">
     <meta name="apple-mobile-web-app-capable" content="yes"/>
-    <meta name="theme-color" content="#fff"/>
-    <meta name="msapplication-navbutton-color" content="#fff">
-    <meta name="apple-mobile-web-app-status-bar-style" content="#fff">
+    <meta name="theme-color" content="#0a70c0"/>
+    <meta name="msapplication-navbutton-color" content="#0a70c0">
+    <meta name="apple-mobile-web-app-status-bar-style" content="#0a70c0">
 
     <link rel="icon" type="image/png" href="favicon.png">
 
@@ -16,11 +16,12 @@
     <link rel="stylesheet" href="res/css/icons.css">
 </head>
 <body>
-
-<h1><?php $t('title'); ?></h1>
-<h2><?php $t('login.description'); ?></h2>
+<div class="header">
+    <h1><?php $t('title'); ?></h1>
+</div>
 
 <form method="post" action="login.php?action=login">
+    <h2><?php $t('login.description'); ?></h2>
     <?php if ($vars['message']): ?>
         <p class="message <?php echo $vars['type']; ?>"><?php echo $t($vars['message']); ?></p>
     <?php endif; ?>
@@ -29,5 +30,6 @@
     <input type="submit" value="<?php $t('login.submit'); ?>">
 </form>
 
+<div class="footer"></div>
 </body>
 </html>
diff --git a/templates/search.phtml b/templates/search.phtml
index 81d93de72ec6149416ed15ca58be8df9e256fb29..ce7f90100faadd99083907b5c05eed7af0ff729b 100644
--- a/templates/search.phtml
+++ b/templates/search.phtml
@@ -6,9 +6,9 @@
 
     <meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, width=device-width">
     <meta name="apple-mobile-web-app-capable" content="yes"/>
-    <meta name="theme-color" content="#0271B3"/>
-    <meta name="msapplication-navbutton-color" content="#0271B3">
-    <meta name="apple-mobile-web-app-status-bar-style" content="#0271B3">
+    <meta name="theme-color" content="#0a70c0"/>
+    <meta name="msapplication-navbutton-color" content="#0a70c0">
+    <meta name="apple-mobile-web-app-status-bar-style" content="#0a70c0">
 
     <link rel="icon" type="image/png" href="favicon.png">
 
diff --git a/translations/de.json b/translations/de.json
index f093b2cf1a080d217a85623373021d0cd9e4b5c1..e6fe6c122aa60e928adbb07ae89a7355c3144acf 100644
--- a/translations/de.json
+++ b/translations/de.json
@@ -15,7 +15,6 @@
     "error_unavailable": "Keine vorherigen Suchbegriffe vorhanden"
   },
   "login": {
-    "description": "Sie müssen sich einloggen, um diese Seite zu nutzen",
     "username": "Benutzername",
     "password": "Passwort",
     "submit": "Anmelden",
diff --git a/translations/en.json b/translations/en.json
index f115dbafd74d06d8891243a6e783baf4a8a5fe69..bfde2bd48ea9ef86655731a2fea57684fd481bbc 100644
--- a/translations/en.json
+++ b/translations/en.json
@@ -15,10 +15,9 @@
     "error_unavailable": "No search history available"
   },
   "login": {
-    "description": "You have to login to access this page",
     "username": "Username",
     "password": "Password",
-    "submit": "Login",
+    "submit": "Log In",
     "message": {
       "success_logout": "You have successfully logged out.",
       "error_invalid": "Invalid username/password combination.",