diff --git a/modules/authYubiKey/templates/yubikeylogin.twig b/modules/authYubiKey/templates/yubikeylogin.twig
index e34cb074ed7669f44fb872dcf4bc1b3e672a7c90..e01432c0103afe8eb9b5ab9e94de38f97e366f51 100644
--- a/modules/authYubiKey/templates/yubikeylogin.twig
+++ b/modules/authYubiKey/templates/yubikeylogin.twig
@@ -5,6 +5,10 @@
     <link rel="stylesheet" type="text/css" href="{{ baseurlpath }}assets/css/yubikey.css">
 {% endblock %}
 
+{% block postload %}
+    <script src="{{ baseurlpath }}assets/js/autofocus.js"></script>
+{% endblock %}
+
 {% block content %}
     {% if errorCode != null %}
     <div style="border-left: 1px solid #e8e8e8; border-bottom: 1px solid #e8e8e8; background: #f5f5f5">
diff --git a/modules/consent/www/assets/consent.css b/modules/consent/www/assets/consent.css
new file mode 100644
index 0000000000000000000000000000000000000000..33bef3d64a6c17123c12518e796453e5c1465dd4
--- /dev/null
+++ b/modules/consent/www/assets/consent.css
@@ -0,0 +1,54 @@
+fieldset {
+    padding: 0px;
+}
+
+fieldset legend {
+    background: #eee;
+}
+
+h3#attributeheader {
+    margin: 1.5em 0em 0.5em 0em;
+}
+
+table#table_with_attributes .attrname {
+    text-align: right;
+    font-weight: bold;
+}
+
+table#table_with_attributes .attrvalue {
+    padding-left: 1em;
+    margin: 0.5em 0em;
+}
+
+table#table_with_attributes tr:last-child td {
+    border-bottom: none;
+}
+
+table#table_with_attributes img {
+    border: 1px solid #777;
+    margin: 4px;
+}
+
+table#table_with_attributes ul {
+    margin: 0px;
+    padding-left: 1em;
+}
+
+form#consent_yes {
+    display: inline;
+    margin: 0px;
+    padding: 0px;
+}
+
+form#consent_no {
+    display: inline;
+    margin-left: .5em;
+}
+
+.hidden {
+    display: none;
+}
+
+td.td_odd {
+    padding: 2em;
+}
diff --git a/modules/statistics/templates/statistics.tpl.php b/modules/statistics/templates/statistics.tpl.php
index e1640b653083e805f73be5de535ac764245b447e..9aefda7efa56d8315bac26fd5ffaa98a8d0ef3ad 100644
--- a/modules/statistics/templates/statistics.tpl.php
+++ b/modules/statistics/templates/statistics.tpl.php
@@ -3,8 +3,8 @@ $this->data['header'] = 'SimpleSAMLphp Statistics';
 
 $this->data['jquery'] = array('core' => true, 'ui' => true, 'css' => true);
 
-$this->data['head'] = '<link rel="stylesheet" type="text/css" href="' . SimpleSAML\Module::getModuleURL("statistics/assets/css/statistics.css") . '" />' . "\n";
-$this->data['head'] .= '<script type="text/javascript" src="' . SimpleSAML\Module::getModuleURL("statistics/assets/js/statistics.js") . '"></script>' . "\n";
+$this->data['head'] = '<link rel="stylesheet" type="text/css" href="'.SimpleSAML\Module::getModuleURL("statistics/assets/css/statistics.css").'" />'."\n";
+$this->data['head'] .= '<script type="text/javascript" src="'.SimpleSAML\Module::getModuleURL("statistics/assets/js/statistics.js").'"></script>'."\n";
 
 $this->includeAtTemplateBase('includes/header.php');
 
diff --git a/modules/statistics/www/assets/statistics.css b/modules/statistics/www/assets/statistics.css
new file mode 100644
index 0000000000000000000000000000000000000000..4d0d163d600681ffe26fa34cee7cd7cbd9505bc4
--- /dev/null
+++ b/modules/statistics/www/assets/statistics.css
@@ -0,0 +1,127 @@
+@media all {
+    div#content {
+        margin: .4em ! important;
+    }
+
+    .tableview {
+        border-collapse: collapse;
+        border: 1px solid #ccc;
+        margin: 1em;
+        width: 80%;
+    }
+
+    .tableview th, .tableview td {
+        border: 1px solid #ccc;
+        padding: 0px 5px;
+    }
+
+    .tableview th {
+        background: #e5e5e5;
+    }
+
+    .tableview tr.total td {
+        color: #500; font-weight: bold;
+    }
+
+    .tableview tr.even td {
+        background: #f5f5f5;
+        border-top: 1px solid #e0e0e0;
+        border-bottom: 1px solid #e0e0e0;
+    }
+
+    .tableview th.value, .tableview td.value {
+        text-align: right;
+    }
+
+    table.timeseries tr.odd td {
+        background-color: #f4f4f4;
+    }
+
+    table.timeseries td {
+        padding-right: 2em; border: 1px solid #ccc
+    }
+
+    td.datacontent {
+        text-align: right;
+    }
+
+    table.selecttime {
+        width: 100%;
+        border: 1px solid #ccc;
+        background: #eee;
+        margin: 1px 0px; padding: 0px;
+    }
+
+    td.selecttime_icon {
+        width: 50px;
+        padding: 0px;
+    }
+
+    td.selecttime_icon img {
+        margin: 0px;
+    }
+
+    td.selecttime_link_grey {
+        color: #ccc;
+    }
+
+    td.td_right {
+        text-align: right;
+    }
+    td.td_next_right {
+        padding-right: 4px;
+    }
+    td.td_left {
+        text-align: left;
+    }
+
+    p.p_right {
+        text-align: right;
+    }
+
+    form {
+        display: inline;
+    }
+
+    table#statmeta {
+        width: 100%;
+    }
+
+    ul.tabset_tabs {
+        margin: 0px;
+        padding: 0px;
+        list-style: none;
+    }
+
+    ul.tabset_tabs li {
+        background: none;
+        color: #222;
+        display: inline-block;
+        padding: 10px 15px;
+        cursor: pointer;
+    }
+
+    ul.tabset_tabs li.current {
+        background: #ededed;
+        color: #222;
+    }
+
+    .tabset_content {
+        display: none;
+        background: #ededed;
+        padding: 15px;
+    }
+
+    .tabset_content.current {
+        display: inherit;
+    }
+
+    #graph img {
+        max-width: 77%;
+        height: auto;
+    }
+    #table img {
+        max-width: 77%;
+        height: auto;
+    }
+}
diff --git a/modules/statistics/www/assets/statistics.js b/modules/statistics/www/assets/statistics.js
new file mode 100644
index 0000000000000000000000000000000000000000..d7faf312f3381f85c80dce9ff96bdf2c9ddbc982
--- /dev/null
+++ b/modules/statistics/www/assets/statistics.js
@@ -0,0 +1,8 @@
+$(document).ready(function() {
+    $("#tabdiv").tabs();
+    $('ul.tabset_tabs li').click(
+        function() {
+            $("html, body").animate({ scrollTop: 0 }, "slow");
+        }
+    )
+});