diff --git a/data/web/css/build/015-datatables.css b/data/web/css/build/013-datatables.css
similarity index 100%
rename from data/web/css/build/015-datatables.css
rename to data/web/css/build/013-datatables.css
diff --git a/data/web/css/build/013-mailcow.css b/data/web/css/build/014-mailcow.css
similarity index 92%
rename from data/web/css/build/013-mailcow.css
rename to data/web/css/build/014-mailcow.css
index 374d484d..3d0eeaee 100644
--- a/data/web/css/build/013-mailcow.css
+++ b/data/web/css/build/014-mailcow.css
@@ -370,3 +370,14 @@ button[aria-expanded='true'] > .caret {
 .btn-check:checked+.btn-outline-secondary, .btn-check:active+.btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {
     background-color: #f0f0f0 !important;
 }
+
+
+div.dataTables_wrapper div.dataTables_filter {
+  text-align: left;
+}
+div.dataTables_wrapper div.dataTables_length {
+  text-align: right;
+}
+.dataTables_paginate, .dataTables_length, .dataTables_filter {
+  margin: 10px 0!important;
+}
\ No newline at end of file
diff --git a/data/web/css/build/014-responsive.css b/data/web/css/build/015-responsive.css
similarity index 98%
rename from data/web/css/build/014-responsive.css
rename to data/web/css/build/015-responsive.css
index a9877271..47eadb53 100644
--- a/data/web/css/build/014-responsive.css
+++ b/data/web/css/build/015-responsive.css
@@ -199,6 +199,10 @@
     display: none !important;
   }
 
+  div.dataTables_wrapper div.dataTables_length {
+    text-align: left;
+  }
+
 }
 
 @media (max-width: 350px) {
diff --git a/data/web/js/site/admin.js b/data/web/js/site/admin.js
index 97196964..9877bb68 100644
--- a/data/web/js/site/admin.js
+++ b/data/web/js/site/admin.js
@@ -74,6 +74,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -149,6 +152,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -214,6 +220,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -282,6 +291,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -342,6 +354,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -416,6 +431,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
diff --git a/data/web/js/site/debug.js b/data/web/js/site/debug.js
index 14092f18..3b85c498 100644
--- a/data/web/js/site/debug.js
+++ b/data/web/js/site/debug.js
@@ -123,6 +123,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -182,6 +185,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -226,6 +232,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -274,6 +283,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -329,6 +341,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -422,6 +437,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -495,6 +513,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -545,6 +566,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -584,6 +608,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -628,6 +655,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -672,6 +702,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -777,6 +810,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
diff --git a/data/web/js/site/edit.js b/data/web/js/site/edit.js
index 4ca77ed9..4c57b35e 100644
--- a/data/web/js/site/edit.js
+++ b/data/web/js/site/edit.js
@@ -82,6 +82,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -139,6 +142,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
diff --git a/data/web/js/site/mailbox.js b/data/web/js/site/mailbox.js
index 47540ae3..2bdd5bf1 100644
--- a/data/web/js/site/mailbox.js
+++ b/data/web/js/site/mailbox.js
@@ -437,6 +437,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -625,6 +628,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -823,6 +829,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1082,6 +1091,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1294,6 +1306,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1422,6 +1437,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1520,6 +1538,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1605,6 +1626,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1700,6 +1724,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1842,6 +1869,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1926,6 +1956,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -2068,6 +2101,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
diff --git a/data/web/js/site/quarantine.js b/data/web/js/site/quarantine.js
index c2028d28..2c4d541b 100644
--- a/data/web/js/site/quarantine.js
+++ b/data/web/js/site/quarantine.js
@@ -18,6 +18,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
diff --git a/data/web/js/site/queue.js b/data/web/js/site/queue.js
index a5ee95fd..6b2d2b3b 100644
--- a/data/web/js/site/queue.js
+++ b/data/web/js/site/queue.js
@@ -39,6 +39,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
diff --git a/data/web/js/site/user.js b/data/web/js/site/user.js
index 9caae599..d1b9780f 100644
--- a/data/web/js/site/user.js
+++ b/data/web/js/site/user.js
@@ -139,6 +139,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -222,6 +225,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -374,6 +380,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -466,6 +475,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -533,6 +545,9 @@ jQuery(function($){
       processing: true,
       serverSide: false,
       stateSave: true,
+      dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" +
+           "tr" +
+           "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
       language: lang_datatables,
       ajax: {
         type: "GET",