diff --git a/functions/package-lock.json b/functions/package-lock.json
index 0e34675d7..cf964f140 100644
--- a/functions/package-lock.json
+++ b/functions/package-lock.json
@@ -339,6 +339,11 @@
       "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz",
       "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
     },
+    "@types/minimatch": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+      "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
+    },
     "@types/node": {
       "version": "8.10.66",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz",
@@ -444,16 +449,25 @@
         "sprintf-js": "~1.0.2"
       }
     },
+    "array-differ": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
+      "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg=="
+    },
     "array-flatten": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
       "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
     },
+    "array-union": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+      "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
+    },
     "arrify": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
-      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
-      "optional": true
+      "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
     },
     "astral-regex": {
       "version": "1.0.0",
@@ -464,8 +478,7 @@
     "balanced-match": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
-      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
-      "dev": true
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
     },
     "base64-js": {
       "version": "1.5.1",
@@ -515,7 +528,6 @@
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
-      "dev": true,
       "requires": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -653,8 +665,7 @@
     "concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
-      "dev": true
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
     },
     "configstore": {
       "version": "5.0.1",
@@ -838,7 +849,6 @@
       "version": "1.4.4",
       "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
       "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
-      "optional": true,
       "requires": {
         "once": "^1.4.0"
       }
@@ -1009,6 +1019,68 @@
       "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
       "optional": true
     },
+    "execa": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+      "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
+      "requires": {
+        "cross-spawn": "^7.0.0",
+        "get-stream": "^5.0.0",
+        "human-signals": "^1.1.1",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.0",
+        "onetime": "^5.1.0",
+        "signal-exit": "^3.0.2",
+        "strip-final-newline": "^2.0.0"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "7.0.3",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+          "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+          "requires": {
+            "path-key": "^3.1.0",
+            "shebang-command": "^2.0.0",
+            "which": "^2.0.1"
+          }
+        },
+        "get-stream": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+          "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+          "requires": {
+            "pump": "^3.0.0"
+          }
+        },
+        "path-key": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+        },
+        "shebang-command": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+          "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+          "requires": {
+            "shebang-regex": "^3.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+          "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
+        },
+        "which": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+        }
+      }
+    },
     "express": {
       "version": "4.17.1",
       "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
@@ -1165,7 +1237,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
       "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-      "optional": true,
       "requires": {
         "locate-path": "^5.0.0",
         "path-exists": "^4.0.0"
@@ -1456,6 +1527,11 @@
         "debug": "4"
       }
     },
+    "human-signals": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
+      "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw=="
+    },
     "iconv-lite": {
       "version": "0.4.24",
       "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -1558,8 +1634,7 @@
     "is-stream": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-      "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
-      "optional": true
+      "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
     },
     "is-stream-ended": {
       "version": "0.1.4",
@@ -1576,8 +1651,7 @@
     "isexe": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-      "dev": true
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
     },
     "js-tokens": {
       "version": "4.0.0",
@@ -1694,7 +1768,6 @@
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
       "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-      "optional": true,
       "requires": {
         "p-locate": "^4.1.0"
       }
@@ -1779,6 +1852,11 @@
       "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
       "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
     },
+    "merge-stream": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+      "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+    },
     "methods": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -1814,14 +1892,12 @@
     "mimic-fn": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-      "optional": true
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
     },
     "minimatch": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
       "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dev": true,
       "requires": {
         "brace-expansion": "^1.1.7"
       }
@@ -1841,11 +1917,28 @@
         "minimist": "^1.2.5"
       }
     },
+    "mri": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz",
+      "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ=="
+    },
     "ms": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
+    "multimatch": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz",
+      "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==",
+      "requires": {
+        "@types/minimatch": "^3.0.3",
+        "array-differ": "^3.0.0",
+        "array-union": "^2.1.0",
+        "arrify": "^2.0.1",
+        "minimatch": "^3.0.4"
+      }
+    },
     "mute-stream": {
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
@@ -1880,6 +1973,21 @@
       "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
       "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA=="
     },
+    "npm-run-path": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+      "requires": {
+        "path-key": "^3.0.0"
+      },
+      "dependencies": {
+        "path-key": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+        }
+      }
+    },
     "object-assign": {
       "version": "4.1.1",
       "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -1905,7 +2013,6 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
       "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
-      "optional": true,
       "requires": {
         "mimic-fn": "^2.1.0"
       }
@@ -1934,7 +2041,6 @@
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
       "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-      "optional": true,
       "requires": {
         "p-try": "^2.0.0"
       }
@@ -1943,7 +2049,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
       "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-      "optional": true,
       "requires": {
         "p-limit": "^2.2.0"
       }
@@ -1951,8 +2056,7 @@
     "p-try": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-      "optional": true
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
     },
     "parent-module": {
       "version": "1.0.1",
@@ -1971,8 +2075,7 @@
     "path-exists": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
-      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-      "optional": true
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
     },
     "path-is-absolute": {
       "version": "1.0.1",
@@ -2003,6 +2106,69 @@
       "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
       "dev": true
     },
+    "pretty-quick": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.0.tgz",
+      "integrity": "sha512-DtxIxksaUWCgPFN7E1ZZk4+Aav3CCuRdhrDSFZENb404sYMtuo9Zka823F+Mgeyt8Zt3bUiCjFzzWYE9LYqkmQ==",
+      "requires": {
+        "chalk": "^3.0.0",
+        "execa": "^4.0.0",
+        "find-up": "^4.1.0",
+        "ignore": "^5.1.4",
+        "mri": "^1.1.5",
+        "multimatch": "^4.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+          "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
+        },
+        "ignore": {
+          "version": "5.1.8",
+          "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
+          "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw=="
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
+      }
+    },
     "progress": {
       "version": "2.0.3",
       "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@@ -2051,7 +2217,6 @@
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
       "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
-      "optional": true,
       "requires": {
         "end-of-stream": "^1.1.0",
         "once": "^1.3.1"
@@ -2371,6 +2536,11 @@
         "ansi-regex": "^3.0.0"
       }
     },
+    "strip-final-newline": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+      "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
+    },
     "strip-json-comments": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
diff --git a/functions/package.json b/functions/package.json
index 0028b749a..e3d176138 100644
--- a/functions/package.json
+++ b/functions/package.json
@@ -14,7 +14,8 @@
   },
   "dependencies": {
     "firebase-admin": "^9.4.1",
-    "firebase-functions": "^3.11.0"
+    "firebase-functions": "^3.11.0",
+    "pretty-quick": "^3.1.0"
   },
   "devDependencies": {
     "eslint": "^5.12.0",
diff --git a/public/css/style.css b/public/css/style.css
new file mode 100644
index 000000000..f5984c4f1
--- /dev/null
+++ b/public/css/style.css
@@ -0,0 +1,2245 @@
+@import url("https://fonts.googleapis.com/css?family=Roboto+Mono&display=swap");
+:root {
+  --roundness: .25rem;
+}
+
+::-webkit-input-placeholder {
+  color: var(--sub-color);
+  opacity: 1;
+  /* Firefox */
+}
+
+:-ms-input-placeholder {
+  color: var(--sub-color);
+  opacity: 1;
+  /* Firefox */
+}
+
+::-ms-input-placeholder {
+  color: var(--sub-color);
+  opacity: 1;
+  /* Firefox */
+}
+
+::placeholder {
+  color: var(--sub-color);
+  opacity: 1;
+  /* Firefox */
+}
+
+.ffscroll, html, #leaderboardsWrapper #leaderboards .tables .globalTableWrapper,
+#leaderboardsWrapper #leaderboards .tables .dailyTableWrapper, #versionHistoryWrapper #versionHistory, #commandLineWrapper #commandLine .suggestions {
+  scrollbar-width: thin;
+  scrollbar-color: var(--sub-color) transparent;
+}
+
+input {
+  outline: none;
+  border: none;
+  border-radius: var(--roundness);
+  background: rgba(0, 0, 0, 0.1);
+  color: var(--text-color);
+  padding: .5rem;
+  font-size: 1rem;
+  line-height: 1rem;
+  font-family: "Roboto Mono";
+}
+
+input[type="color"] {
+  -webkit-appearance: none;
+  padding: 0;
+  width: 100%;
+  height: 1.8rem;
+  overflow: hidden;
+  border-radius: var(--roundness);
+}
+
+input[type="color"]::-webkit-color-swatch-wrapper {
+  padding: 0;
+}
+
+input[type="color"]::-webkit-color-swatch {
+  border: none;
+}
+
+.colorPicker {
+  text-align: center;
+  will-change: transform;
+  -webkit-transition: -webkit-transform .2s ease-in-out;
+  transition: -webkit-transform .2s ease-in-out;
+  transition: transform .2s ease-in-out;
+  transition: transform .2s ease-in-out, -webkit-transform .2s ease-in-out;
+  overflow: hidden;
+  border-radius: var(--roundness);
+}
+
+.colorPicker label {
+  position: absolute;
+  width: 100%;
+  line-height: 1.8rem;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  padding: auto;
+  color: var(--bg-color);
+  cursor: pointer;
+}
+
+.colorPicker [for="--bg-color"] {
+  color: var(--text-color);
+}
+
+.colorPicker #--bg-color {
+  border: 1px solid var(--sub-color);
+}
+
+body {
+  margin: 0;
+  padding: 0;
+  min-height: 100vh;
+  background: var(--bg-color);
+  font-family: "Roboto Mono";
+  color: var(--main-color);
+  overflow-x: hidden;
+}
+
+html {
+  overflow-y: scroll;
+}
+
+/* width */
+::-webkit-scrollbar {
+  width: 7px;
+}
+
+/* Track */
+::-webkit-scrollbar-track {
+  background: transparent;
+}
+
+/* Handle */
+::-webkit-scrollbar-thumb {
+  background: var(--sub-color);
+  -webkit-transition: .25s;
+  transition: .25s;
+  border-radius: 2px !important;
+}
+
+/* Handle on hover */
+::-webkit-scrollbar-thumb:hover {
+  background: var(--main-color);
+}
+
+a {
+  color: var(--sub-color);
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+}
+
+a:hover {
+  color: var(--main-color);
+}
+
+.notification {
+  position: fixed;
+  background: var(--main-color);
+  color: var(--bg-color);
+  padding: .5rem 1rem;
+  border-radius: var(--roundness);
+  left: 50%;
+  z-index: 9999;
+  -webkit-transform: translateX(-50%);
+          transform: translateX(-50%);
+  top: -5rem;
+}
+
+#backgroundLoader {
+  height: 3px;
+  position: fixed;
+  width: 100%;
+  background: var(--main-color);
+  -webkit-animation-name: loader;
+          animation-name: loader;
+  -webkit-animation-iteration-count: infinite;
+          animation-iteration-count: infinite;
+  -webkit-animation-duration: 2s;
+          animation-duration: 2s;
+  -webkit-animation-timing-function: cubic-bezier(0.38, 0.16, 0.57, 0.82);
+          animation-timing-function: cubic-bezier(0.38, 0.16, 0.57, 0.82);
+  z-index: 9999;
+}
+
+@-webkit-keyframes loader {
+  0% {
+    width: 0;
+    left: 0;
+  }
+  50% {
+    width: 100%;
+    left: 0;
+  }
+  100% {
+    width: 0;
+    left: 100%;
+  }
+}
+
+@keyframes loader {
+  0% {
+    width: 0;
+    left: 0;
+  }
+  50% {
+    width: 100%;
+    left: 0;
+  }
+  100% {
+    width: 0;
+    left: 100%;
+  }
+}
+
+#leaderboardsWrapper {
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.75);
+  position: fixed;
+  left: 0;
+  top: 0;
+  z-index: 1000;
+  display: -ms-grid;
+  display: grid;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  padding: 5rem 0;
+}
+
+#leaderboardsWrapper #leaderboards {
+  width: 85vw;
+  height: calc(100vh - 10rem);
+  background: var(--bg-color);
+  border-radius: var(--roundness);
+  padding: 2rem;
+  display: -ms-grid;
+  display: grid;
+  gap: 2rem;
+  -ms-grid-rows: 3rem auto;
+      grid-template-rows: 3rem auto;
+      grid-template-areas: "title buttons"
 "tables tables";
+  -ms-grid-columns: 1fr 1fr;
+      grid-template-columns: 1fr 1fr;
+}
+
+#leaderboardsWrapper #leaderboards .mainTitle {
+  font-size: 3rem;
+  line-height: 3rem;
+  -ms-grid-row: 1;
+  -ms-grid-column: 1;
+  grid-area: title;
+}
+
+#leaderboardsWrapper #leaderboards .title {
+  font-size: 2rem;
+  line-height: 2rem;
+  margin-bottom: .5rem;
+}
+
+#leaderboardsWrapper #leaderboards .tables {
+  -ms-grid-row: 2;
+  -ms-grid-column: 1;
+  -ms-grid-column-span: 2;
+  grid-area: tables;
+  display: -ms-grid;
+  display: grid;
+  gap: 1rem;
+  -ms-grid-columns: 1fr 1fr;
+      grid-template-columns: 1fr 1fr;
+  margin-bottom: 2rem;
+  font-size: .8rem;
+}
+
+#leaderboardsWrapper #leaderboards .tables .titleAndTable {
+  display: -ms-grid;
+  display: grid;
+}
+
+#leaderboardsWrapper #leaderboards .tables .titleAndTable .title {
+  -ms-grid-row: 1;
+  -ms-grid-column: 1;
+  grid-area: 1/1;
+}
+
+#leaderboardsWrapper #leaderboards .tables .titleAndTable .subtitle {
+  -ms-grid-row: 1;
+  -ms-grid-column: 1;
+  grid-area: 1/1;
+  -ms-flex-item-align: center;
+      -ms-grid-row-align: center;
+      align-self: center;
+  -ms-grid-column-align: right;
+      justify-self: right;
+  color: var(--sub-color);
+}
+
+#leaderboardsWrapper #leaderboards .tables .globalTableWrapper,
+#leaderboardsWrapper #leaderboards .tables .dailyTableWrapper {
+  height: calc(100vh - 22rem);
+  overflow-y: scroll;
+  overflow-x: hidden;
+}
+
+#leaderboardsWrapper #leaderboards .tables table {
+  width: 100%;
+  border-spacing: 0;
+  border-collapse: collapse;
+}
+
+#leaderboardsWrapper #leaderboards .tables table tr td:first-child {
+  text-align: center;
+}
+
+#leaderboardsWrapper #leaderboards .tables table td {
+  padding: .25rem .5rem;
+}
+
+#leaderboardsWrapper #leaderboards .tables table td.me {
+  color: var(--main-color);
+  font-weight: 900;
+}
+
+#leaderboardsWrapper #leaderboards .tables table thead {
+  color: var(--sub-color);
+  font-size: .75rem;
+}
+
+#leaderboardsWrapper #leaderboards .tables table tbody {
+  color: var(--text-color);
+}
+
+#leaderboardsWrapper #leaderboards .tables table tbody tr:nth-child(odd) td {
+  background: rgba(0, 0, 0, 0.1);
+}
+
+#leaderboardsWrapper #leaderboards .buttons {
+  -ms-grid-row: 3;
+  -ms-grid-column: 1;
+  grid-area: buttons;
+  display: -ms-grid;
+  display: grid;
+  gap: 1rem;
+      grid-template-columns: 1fr 1fr;
+      align-self: center;
+}
+
+#leaderboardsWrapper #leaderboards .buttons .buttonGroup {
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  gap: 1rem;
+  -ms-grid-row: 1;
+  -ms-grid-column: 2;
+  grid-area: 1/2;
+}
+
+#tagsWrapper {
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.75);
+  position: fixed;
+  left: 0;
+  top: 0;
+  z-index: 1000;
+  display: -ms-grid;
+  display: grid;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  padding: 5rem 0;
+}
+
+#tagsWrapper #tagsEdit {
+  background: var(--bg-color);
+  border-radius: var(--roundness);
+  padding: 2rem;
+  display: -ms-grid;
+  display: grid;
+  gap: 1rem;
+  overflow-y: scroll;
+}
+
+#resultEditTagsPanelWrapper {
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.75);
+  position: fixed;
+  left: 0;
+  top: 0;
+  z-index: 1000;
+  display: -ms-grid;
+  display: grid;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  padding: 5rem 0;
+}
+
+#resultEditTagsPanelWrapper #resultEditTagsPanel {
+  background: var(--bg-color);
+  border-radius: var(--roundness);
+  padding: 2rem;
+  display: -ms-grid;
+  display: grid;
+  gap: 1rem;
+  overflow-y: scroll;
+  width: 500px;
+}
+
+#resultEditTagsPanelWrapper #resultEditTagsPanel .buttons {
+  display: -ms-grid;
+  display: grid;
+  gap: 1rem;
+  -ms-grid-columns: 1fr 1fr 1fr;
+      grid-template-columns: 1fr 1fr 1fr;
+}
+
+#versionHistoryWrapper {
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.75);
+  position: fixed;
+  left: 0;
+  top: 0;
+  z-index: 1000;
+  display: -ms-grid;
+  display: grid;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: start;
+  padding: 5rem 0;
+}
+
+#versionHistoryWrapper #versionHistory {
+  width: 75vw;
+  height: 100%;
+  background: var(--bg-color);
+  border-radius: var(--roundness);
+  padding: 2rem;
+  display: -ms-grid;
+  display: grid;
+  gap: 1rem;
+  overflow-y: scroll;
+}
+
+#versionHistoryWrapper #versionHistory .tip {
+  text-align: center;
+  color: var(--sub-color);
+}
+
+#versionHistoryWrapper #versionHistory .releases {
+  display: -ms-grid;
+  display: grid;
+  gap: 2rem;
+}
+
+#versionHistoryWrapper #versionHistory .releases .release {
+  display: -ms-grid;
+  display: grid;
+      grid-template-areas: "title date"
 "body body";
+}
+
+#versionHistoryWrapper #versionHistory .releases .release .title {
+  -ms-grid-row: 1;
+  -ms-grid-column: 1;
+  grid-area: title;
+  font-size: 2rem;
+  color: var(--sub-color);
+}
+
+#versionHistoryWrapper #versionHistory .releases .release .date {
+  -ms-grid-row: 1;
+  -ms-grid-column: 2;
+  grid-area: date;
+  text-align: right;
+  color: var(--sub-color);
+  -ms-flex-item-align: center;
+      -ms-grid-row-align: center;
+      align-self: center;
+}
+
+#versionHistoryWrapper #versionHistory .releases .release .body {
+  -ms-grid-row: 2;
+  -ms-grid-column: 1;
+  -ms-grid-column-span: 2;
+  grid-area: body;
+  color: var(--text-color);
+}
+
+#versionHistoryWrapper #versionHistory .releases .release:last-child {
+  margin-bottom: 2rem;
+}
+
+#commandLineWrapper {
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.75);
+  position: fixed;
+  left: 0;
+  top: 0;
+  z-index: 1000;
+  display: -ms-grid;
+  display: grid;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  -webkit-box-align: start;
+      -ms-flex-align: start;
+          align-items: start;
+  padding: 5rem 0;
+}
+
+#commandLineWrapper #commandInput {
+  width: 50vw;
+  background: var(--bg-color);
+  border-radius: var(--roundness);
+}
+
+#commandLineWrapper #commandInput textarea {
+  background: var(--bg-color);
+  padding: 1rem;
+  color: var(--main-color);
+  border: none;
+  outline: none;
+  font-size: 1rem;
+  font-family: "Roboto Mono";
+  width: 100%;
+  border-radius: var(--roundness);
+  resize: vertical;
+  height: 200px;
+}
+
+#commandLineWrapper #commandInput .shiftEnter {
+  padding: 0.5rem 1rem;
+  font-size: 0.75rem;
+  line-height: 0.75rem;
+  color: var(--sub-color);
+  text-align: center;
+}
+
+#commandLineWrapper #commandLine {
+  width: 50vw;
+  background: var(--bg-color);
+  border-radius: var(--roundness);
+}
+
+#commandLineWrapper #commandLine input {
+  background: var(--bg-color);
+  padding: 1rem;
+  color: var(--main-color);
+  border: none;
+  outline: none;
+  font-size: 1rem;
+  font-family: "Roboto Mono";
+  width: 100%;
+  border-radius: var(--roundness);
+}
+
+#commandLineWrapper #commandLine .separator {
+  background: black;
+  width: 100%;
+  height: 1px;
+  margin-bottom: 0.5rem;
+}
+
+#commandLineWrapper #commandLine .listTitle {
+  color: var(--main-color);
+  padding: 0.5rem 1rem;
+  font-size: 0.75rem;
+  line-height: 0.75rem;
+}
+
+#commandLineWrapper #commandLine .suggestions {
+  display: block;
+  overflow-y: scroll;
+  max-height: calc(100vh - 10rem - 3rem);
+  display: -ms-grid;
+  display: grid;
+}
+
+#commandLineWrapper #commandLine .suggestions .entry {
+  padding: 0.5rem 1rem;
+  font-size: 0.75rem;
+  line-height: 0.75rem;
+  color: var(--sub-color);
+}
+
+#commandLineWrapper #commandLine .suggestions .entry .fas {
+  margin-right: .5rem;
+}
+
+#commandLineWrapper #commandLine .suggestions .entry:last-child {
+  border-radius: 0 0 var(--roundness) var(--roundness);
+}
+
+#commandLineWrapper #commandLine .suggestions .entry.activeMouse {
+  color: var(--bg-color);
+  background: var(--main-color);
+}
+
+#commandLineWrapper #commandLine .suggestions .entry.activeKeyboard {
+  color: var(--bg-color);
+  background: var(--main-color);
+}
+
+#commandLineWrapper #commandLine .suggestions .entry:hover {
+  color: var(--text-color);
+  background: var(--sub-color);
+  cursor: pointer;
+}
+
+#timerWrapper {
+  opacity: 0;
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+  z-index: -1;
+  position: relative;
+  z-index: 99;
+}
+
+#timer {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100vw;
+  /*   height: 0.5rem; */
+  height: 0.5rem;
+  background: black;
+  /*   background: #0f0f0f; */
+  /*   background: red; */
+  z-index: -1;
+}
+
+#liveWpm,
+#timerNumber {
+  position: relative;
+  font-size: 10rem;
+  color: black;
+  opacity: 0;
+  width: 100%;
+  left: 0;
+  text-align: center;
+  z-index: -1;
+  height: 0;
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+  line-height: 0;
+}
+
+#timerNumber {
+  bottom: 6rem;
+  -webkit-transition: none;
+  transition: none;
+}
+
+#liveWpm.timerMain,
+#timerNumber.timerMain {
+  color: var(--main-color);
+}
+
+#timer.timerMain {
+  background: var(--main-color);
+}
+
+#liveWpm.timerSub,
+#timerNumber.timerSub {
+  color: var(--sub-color);
+}
+
+#timer.timerSub {
+  background: var(--sub-color);
+}
+
+#liveWpm.timerText,
+#timerNumber.timerText {
+  color: var(--text-color);
+}
+
+#timer.timerText {
+  background: var(--text-color);
+}
+
+#liveWpm {
+  top: 6rem;
+}
+
+#centerContent {
+  max-width: 1000px;
+  min-width: 600px;
+  margin: 0 auto;
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: row;
+  min-height: 100vh;
+  padding: 2rem;
+  gap: 2rem;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  z-index: 999;
+  -ms-grid-rows: auto 1fr auto;
+      grid-template-rows: auto 1fr auto;
+}
+
+#caret, #caret.outline {
+  height: 1.5rem;
+  background: var(--caret-color);
+  -webkit-animation-name: caretFlash;
+          animation-name: caretFlash;
+  /* animation-timing-function: cubic-bezier(0.455, 0.03, 0.515, 0.955); */
+  -webkit-animation-iteration-count: infinite;
+          animation-iteration-count: infinite;
+  -webkit-animation-duration: 1s;
+          animation-duration: 1s;
+  position: absolute;
+  border-radius: var(--roundness);
+  -webkit-transform-origin: top left;
+          transform-origin: top left;
+}
+
+#caret.default {
+  width: 2px;
+}
+
+#caret.block, #caret.outline {
+  width: .7em;
+  margin-left: 0.25em;
+  border-radius: 0;
+  z-index: -1;
+}
+
+.outline#caret {
+  background: transparent;
+  border: 1px solid var(--caret-color);
+}
+
+#caret.underline {
+  height: 2px;
+  width: 0.8em;
+  margin-top: 1.3em;
+  margin-left: 0.3em;
+}
+
+#caret.underline.size125 {
+  margin-top: 1.8em;
+}
+
+#caret.underline.size15 {
+  margin-top: 2.1em;
+}
+
+#caret.underline.size2 {
+  margin-top: 2.7em;
+}
+
+#caret.size125 {
+  -webkit-transform: scale(1.25);
+          transform: scale(1.25);
+}
+
+#caret.size15 {
+  -webkit-transform: scale(1.45);
+          transform: scale(1.45);
+}
+
+#caret.size2 {
+  -webkit-transform: scale(1.9);
+          transform: scale(1.9);
+}
+
+@-webkit-keyframes caretFlash {
+  0%,
+  100% {
+    opacity: 0;
+  }
+  50% {
+    opacity: 1;
+  }
+}
+
+@keyframes caretFlash {
+  0%,
+  100% {
+    opacity: 0;
+  }
+  50% {
+    opacity: 1;
+  }
+}
+
+#menu {
+  font-size: 1rem;
+  line-height: 1rem;
+  color: var(--sub-color);
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  gap: .5rem;
+  width: -webkit-fit-content;
+  width: fit-content;
+  width: -moz-fit-content;
+  /*   transition: 0.25s; */
+}
+
+#menu .button.discord.discord {
+  position: relative;
+}
+
+#menu .button.discord.discord::after {
+  -webkit-transition: .25s;
+  transition: .25s;
+  width: .5rem;
+  height: .5rem;
+  content: "";
+  position: absolute;
+  background: var(--main-color);
+  border-radius: 1rem;
+  top: .25rem;
+  right: .25rem;
+  border: 2px solid var(--bg-color);
+}
+
+#menu .button.discord.discord.dotHidden::after {
+  background: transparent;
+  border-color: transparent;
+}
+
+#menu .icon-button .icon {
+  display: -ms-grid;
+  display: grid;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  justify-items: center;
+  text-align: center;
+  width: 1.25rem;
+  height: 1.25rem;
+}
+
+#menu .icon-button .text {
+  font-size: .65rem;
+  line-height: .65rem;
+  -ms-flex-item-align: center;
+      -ms-grid-row-align: center;
+      align-self: center;
+  margin-left: .25rem;
+}
+
+#menu .icon-button:hover {
+  cursor: pointer;
+  color: var(--main-color);
+}
+
+#menu .separator {
+  width: 2px;
+  height: 1rem;
+  background-color: var(--sub-color);
+}
+
+#top.focus #menu .icon-button.discord::after {
+  background: transparent;
+}
+
+#top.focus #menu {
+  color: transparent !important;
+}
+
+#top.focus #menu .icon-button {
+  color: transparent !important;
+}
+
+#top {
+  line-height: 2.3rem;
+  font-size: 2.3rem;
+  /* text-align: center; */
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+  padding: 0 5px;
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  -ms-grid-columns: auto 1fr auto;
+      grid-template-columns: auto 1fr auto;
+  z-index: 2;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  gap: 0.5rem;
+}
+
+#top .logo {
+  margin-bottom: -0.12rem;
+  white-space: nowrap;
+}
+
+#top .logo .top {
+  font-size: 0.65rem;
+  line-height: 0.65rem;
+  margin-bottom: -0.4rem;
+  margin-left: -0.1rem;
+  color: var(--sub-color);
+}
+
+#top .logo .bottom {
+  margin-left: -0.15rem;
+  color: var(--main-color);
+  -webkit-transition: .25s;
+  transition: .25s;
+  cursor: pointer;
+}
+
+#top .config {
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: row;
+  grid-gap: 0.2rem;
+  width: -webkit-min-content;
+  width: min-content;
+  width: -moz-min-content;
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+  /*   margin-bottom: 0.1rem; */
+  -ms-grid-column: 3;
+  -ms-grid-column-span: 1;
+  grid-column: 3/4;
+  -ms-grid-row: 1;
+  -ms-grid-row-span: 1;
+  grid-row: 1/2;
+  justify-items: self-end;
+}
+
+#top .config .group {
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+}
+
+#top .config .group .title {
+  color: var(--sub-color);
+  font-size: 0.5rem;
+  line-height: 0.5rem;
+  margin-bottom: 0.15rem;
+}
+
+#top .config .group .buttons {
+  font-size: 0.7rem;
+  line-height: 0.7rem;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+}
+
+#top .config .punctuationMode {
+  margin-bottom: -0.1rem;
+}
+
+#top .result {
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  grid-gap: 1rem;
+  width: -webkit-min-content;
+  width: min-content;
+  width: -moz-min-content;
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+  -ms-grid-column: 3;
+  -ms-grid-column-span: 1;
+  grid-column: 3/4;
+  -ms-grid-row: 1;
+  -ms-grid-row-span: 1;
+  grid-row: 1/2;
+}
+
+#top .result .group .title {
+  font-size: 0.65rem;
+  line-height: 0.65rem;
+  color: var(--sub-color);
+}
+
+#top .result .group .val {
+  font-size: 1.7rem;
+  line-height: 1.7rem;
+  color: var(--main-color);
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+}
+
+#top.focus {
+  color: var(--sub-color) !important;
+}
+
+#top.focus .result {
+  opacity: 0 !important;
+}
+
+#top.focus .logo .bottom {
+  color: var(--sub-color) !important;
+}
+
+#top.focus .config {
+  opacity: 0 !important;
+}
+
+#tip {
+  font-size: 0.75rem;
+  line-height: 0.75rem;
+  color: var(--sub-color);
+  text-align: center;
+  /*   margin-top: 1rem; */
+  -ms-flex-item-align: center;
+      -ms-grid-row-align: center;
+      align-self: center;
+  margin-top: 1rem;
+  opacity: 0;
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+}
+
+key {
+  color: var(--bg-color);
+  background-color: var(--sub-color);
+  /* font-weight: bold; */
+  padding: .1rem .3rem;
+  margin: 3px 0;
+  border-radius: 0.1rem;
+  display: inline-block;
+  font-size: .7rem;
+  line-height: .7rem;
+}
+
+#bottom {
+  text-align: center;
+  line-height: 1rem;
+  font-size: 0.75rem;
+  color: var(--sub-color);
+  -webkit-transition: 0.5s;
+  transition: 0.5s;
+}
+
+#bottom .keyTips {
+  margin-bottom: 1rem;
+}
+
+#bottom .version {
+  opacity: 0;
+  -webkit-transition: .25s;
+  transition: .25s;
+}
+
+#bottom .version:hover {
+  cursor: pointer;
+  color: var(--main-color);
+}
+
+#bottom.focus {
+  opacity: 0 !important;
+}
+
+#result {
+  display: -ms-grid;
+  display: grid;
+  gap: 1rem;
+  -ms-grid-columns: auto 1fr;
+      grid-template-columns: auto 1fr;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+
+#result .chart {
+  max-height: 200px;
+  height: 200px;
+}
+
+#result .chart canvas {
+  width: 100%;
+  height: 100%;
+}
+
+#result .chart .title {
+  color: var(--sub-color);
+  margin-bottom: 1rem;
+}
+
+#result .loginTip {
+  -ms-grid-column: 1;
+  -ms-grid-column-span: 2;
+  grid-column: 1/3;
+  text-align: center;
+  color: var(--sub-color);
+}
+
+#result .stats {
+  display: -ms-grid;
+  display: grid;
+  -webkit-column-gap: .5rem;
+          column-gap: .5rem;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+      grid-template-areas: "wpm acc"
 "wpm key"
 "raw time"
 "source source"
 "leaderboards leaderboards"
 "testType infoAndTags";
+}
+
+#result .stats .group {
+  margin-bottom: .5rem;
+}
+
+#result .stats .group .top {
+  color: var(--sub-color);
+  font-size: 1rem;
+  line-height: 1rem;
+}
+
+#result .stats .group .bottom {
+  color: var(--main-color);
+  font-size: 2rem;
+  line-height: 2rem;
+}
+
+#result .stats .testType {
+  -ms-flex-item-align: baseline;
+      align-self: baseline;
+  -ms-grid-row: 6;
+  -ms-grid-column: 1;
+  grid-area: testType;
+  color: var(--sub-color);
+}
+
+#result .stats .testType .top {
+  font-size: 1rem;
+  line-height: 1.25rem;
+}
+
+#result .stats .testType .bottom {
+  font-size: 1rem;
+  line-height: 1rem;
+}
+
+#result .stats .leaderboards {
+  -ms-flex-item-align: baseline;
+      align-self: baseline;
+  -ms-grid-row: 5;
+  -ms-grid-column: 1;
+  -ms-grid-column-span: 2;
+  grid-area: leaderboards;
+  color: var(--sub-color);
+}
+
+#result .stats .leaderboards .top {
+  font-size: 1rem;
+  line-height: 1.25rem;
+}
+
+#result .stats .leaderboards .bottom {
+  font-size: 1rem;
+  line-height: 1rem;
+}
+
+#result .stats .source {
+  -ms-flex-item-align: baseline;
+      align-self: baseline;
+  -ms-grid-row: 4;
+  -ms-grid-column: 1;
+  -ms-grid-column-span: 2;
+  grid-area: source;
+  color: var(--sub-color);
+  max-width: 15rem;
+}
+
+#result .stats .source .top {
+  font-size: 1rem;
+  line-height: 1.25rem;
+}
+
+#result .stats .source .bottom {
+  font-size: 1rem;
+  line-height: 1rem;
+}
+
+#result .stats .infoAndTags {
+  display: -ms-grid;
+  display: grid;
+  gap: .5rem;
+  align-self: baseline;
+  -ms-grid-row: 6;
+  -ms-grid-column: 2;
+  grid-area: infoAndTags;
+  color: var(--sub-color);
+}
+
+#result .stats .infoAndTags .top {
+  font-size: 1rem;
+  line-height: 1.25rem;
+}
+
+#result .stats .infoAndTags .bottom {
+  font-size: 1rem;
+  line-height: 1rem;
+}
+
+#result .stats .wpm {
+  -ms-grid-row: 1;
+  -ms-grid-row-span: 2;
+  -ms-grid-column: 1;
+  grid-area: wpm;
+}
+
+#result .stats .wpm .top {
+  font-size: 3rem;
+  line-height: 3rem;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  margin-top: -.5rem;
+}
+
+#result .stats .wpm .top .crownWrapper {
+  width: 1.7rem;
+  overflow: hidden;
+  height: 1.7rem;
+  margin-left: .5rem;
+  margin-top: .98rem;
+}
+
+#result .stats .wpm .top .crownWrapper .crown {
+  font-size: .7rem;
+  line-height: 1.7rem;
+  background: var(--main-color);
+  color: var(--bg-color);
+  border-radius: .6rem;
+  text-align: center;
+  -ms-flex-item-align: center;
+      -ms-grid-row-align: center;
+      align-self: center;
+  width: 1.7rem;
+  height: 1.7rem;
+}
+
+#result .stats .wpm .bottom {
+  font-size: 4rem;
+  line-height: 4rem;
+}
+
+#result .stats .acc {
+  -ms-grid-row: 1;
+  -ms-grid-column: 2;
+  grid-area: acc;
+}
+
+#result .stats .key {
+  -ms-grid-row: 2;
+  -ms-grid-column: 2;
+  grid-area: key;
+}
+
+#result .stats .time {
+  -ms-grid-row: 3;
+  -ms-grid-column: 2;
+  grid-area: time;
+}
+
+#result .stats .raw {
+  -ms-grid-row: 3;
+  -ms-grid-column: 1;
+  grid-area: raw;
+}
+
+#wordsInput {
+  height: 0;
+  padding: 0;
+  margin: 0;
+  border: none;
+  outline: none;
+  display: block;
+}
+
+#wordsTitle {
+  color: var(--sub-color);
+  margin-left: .25rem;
+  margin-top: 1rem;
+  display: none;
+}
+
+#words {
+  height: -webkit-fit-content;
+  height: -moz-fit-content;
+  height: fit-content;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-flex-wrap: wrap;
+      flex-wrap: wrap;
+  width: 100%;
+  -ms-flex-line-pack: start;
+      align-content: flex-start;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+#words.flipped .word {
+  color: var(--text-color);
+}
+
+#words.flipped .word letter.correct {
+  color: var(--sub-color);
+}
+
+#words.colorfulMode .word letter.correct {
+  color: var(--main-color);
+}
+
+#words.colorfulMode .word letter.incorrect {
+  color: var(--colorful-error-color);
+}
+
+#words.colorfulMode .word letter.incorrect.extra {
+  color: var(--colorful-error-extra-color);
+}
+
+#words.flipped.colorfulMode .word {
+  color: var(--main-color);
+}
+
+#words.flipped.colorfulMode .word letter.correct {
+  color: var(--sub-color);
+}
+
+#words.flipped.colorfulMode .word letter.incorrect {
+  color: var(--colorful-error-color);
+}
+
+#words.flipped.colorfulMode .word letter.incorrect.extra {
+  color: var(--colorful-error-extra-color);
+}
+
+#words.flipped.colorfulMode .word.error,
+#words.colorfulMode .word.error {
+  border-bottom: 2px solid var(--colorful-error-color);
+}
+
+.pageTest #resultExtraButtons {
+  opacity: 0;
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  gap: 1rem;
+}
+
+#restartTestButton,
+#showWordHistoryButton,
+#copyResultToClipboardButton,
+#restartTestButtonWithSameWordset {
+  position: relative;
+  border-radius: var(--roundness);
+  padding: 1rem 2rem;
+  width: -webkit-min-content;
+  width: min-content;
+  width: -moz-min-content;
+  color: var(--sub-color);
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+  margin-top: 1rem;
+  cursor: pointer;
+}
+
+#restartTestButton:hover, #restartTestButton:focus,
+#showWordHistoryButton:hover,
+#showWordHistoryButton:focus,
+#copyResultToClipboardButton:hover,
+#copyResultToClipboardButton:focus,
+#restartTestButtonWithSameWordset:hover,
+#restartTestButtonWithSameWordset:focus {
+  color: var(--main-color);
+  outline: none;
+}
+
+#restartTestButton:focus,
+#showWordHistoryButton:focus,
+#copyResultToClipboardButton:focus,
+#restartTestButtonWithSameWordset:focus {
+  background: var(--sub-color);
+}
+
+#middle .pageTest #testModesNotice {
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  gap: 1rem;
+  color: var(--sub-color);
+  text-align: center;
+  margin-bottom: 1.25rem;
+  height: 1rem;
+  line-height: 1rem;
+  -webkit-transition: .125s;
+  transition: .125s;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+}
+
+#middle .pageTest #testModesNotice .fas {
+  margin-right: .5rem;
+}
+
+#middle.focus .pageTest #testModesNotice {
+  opacity: 0 !important;
+}
+
+#showWordHistoryButton {
+  opacity: 1;
+}
+
+.word {
+  margin: .25rem;
+  color: var(--sub-color);
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  /*   margin-bottom: 1px; */
+  border-bottom: 2px solid transparent;
+  line-height: 1rem;
+}
+
+.word .wordInputAfter {
+  opacity: 1;
+  position: absolute;
+  background: var(--sub-color);
+  color: var(--bg-color);
+  /* background: red; */
+  padding: .5rem;
+  /* left: .5rem; */
+  margin-left: -.5rem;
+  margin-top: -.5rem;
+  border-radius: var(--roundness);
+  -webkit-transition: .25s;
+  transition: .25s;
+  text-shadow: none;
+}
+
+#words.size125 .word {
+  line-height: 1.25rem;
+  font-size: 1.25rem;
+  margin: .31rem;
+}
+
+#words.size15 .word {
+  line-height: 1.5rem;
+  font-size: 1.5rem;
+  margin: .37rem;
+}
+
+#words.size2 .word {
+  line-height: 2rem;
+  font-size: 2rem;
+  margin: .5rem;
+}
+
+.word.error {
+  /*   margin-bottom: 1px; */
+  border-bottom: 2px solid var(--error-color);
+  text-shadow: 1px 0px 0px var(--bg-color), -1px 0px 0px var(--bg-color), 0px 1px 0px var(--bg-color), 1px 1px 0px var(--bg-color), -1px 1px 0px var(--bg-color);
+}
+
+/* margin: 0 1px; */
+.word letter.correct {
+  color: var(--text-color);
+}
+
+.word letter.incorrect {
+  color: var(--error-color);
+}
+
+.word letter.incorrect.extra {
+  color: var(--error-extra-color);
+}
+
+.word letter.missing {
+  opacity: 0.5;
+}
+
+.pageTest .buttons {
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  gap: 1rem;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+}
+
+.pageLogin {
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  grid-auto-flow: column;
+  gap: 1rem;
+  -ms-flex-pack: distribute;
+      justify-content: space-around;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+
+.pageLogin .side {
+  display: -ms-grid;
+  display: grid;
+  gap: .5rem;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+}
+
+.pageLogin .side.login {
+      grid-template-areas: "title forgotButton"
 "form form";
+}
+
+.pageLogin .side.login .title {
+  -ms-grid-row: 1;
+  -ms-grid-column: 1;
+  grid-area: title;
+}
+
+.pageLogin .side.login #forgotPasswordButton {
+  -ms-grid-row: 1;
+  -ms-grid-column: 2;
+  grid-area: forgotButton;
+  font-size: .5rem;
+  line-height: .5rem;
+  height: -webkit-fit-content;
+  height: -moz-fit-content;
+  height: fit-content;
+  -ms-flex-item-align: center;
+      -ms-grid-row-align: center;
+      align-self: center;
+  -ms-grid-column-align: right;
+      justify-self: right;
+  padding: .25rem 0;
+  color: var(--sub-color);
+  cursor: pointer;
+  -webkit-transition: .25s;
+  transition: .25s;
+}
+
+.pageLogin .side.login #forgotPasswordButton:hover {
+  color: var(--main-color);
+}
+
+.pageLogin .side.login form {
+  -ms-grid-row: 2;
+  -ms-grid-column: 1;
+  -ms-grid-column-span: 2;
+  grid-area: form;
+}
+
+.pageLogin .side.login form #rememberMe {
+  color: var(--sub-color);
+  -moz-user-select: none;
+  -webkit-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  cursor: pointer;
+}
+
+.pageLogin .side.login form #rememberMe input {
+  margin: 0 !important;
+  cursor: pointer;
+  width: 0;
+  height: 0;
+  display: none;
+}
+
+.pageLogin .side.login form #rememberMe input ~ .customCheckbox {
+  width: 12px;
+  height: 12px;
+  background: rgba(0, 0, 0, 0.1);
+  border-radius: 2px;
+  -webkit-box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1);
+          box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.1);
+  display: inline-block;
+  margin: 0 .5rem 0 .25rem;
+  -webkit-transition: .25s;
+  transition: .25s;
+}
+
+.pageLogin .side.login form #rememberMe input:checked ~ .customCheckbox {
+  background: var(--main-color);
+}
+
+.pageLogin form {
+  display: -ms-grid;
+  display: grid;
+  gap: .5rem;
+  width: 100%;
+}
+
+.pageLogin .preloader {
+  position: fixed;
+  left: 50%;
+  top: 50%;
+  font-size: 2rem;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  color: var(--main-color);
+  -webkit-transition: .25s;
+  transition: .25s;
+}
+
+.pageAbout {
+  display: -ms-grid;
+  display: grid;
+  gap: 2rem;
+}
+
+.pageAbout .section {
+  display: -ms-grid;
+  display: grid;
+  gap: .5rem;
+}
+
+.pageAbout .section h1 {
+  font-size: 1rem;
+  line-height: 1rem;
+  color: var(--sub-color);
+  margin: 0;
+  font-weight: 300;
+}
+
+.pageAbout .section p {
+  margin: 0;
+  padding: 0;
+  color: var(--text-color);
+}
+
+.pageSettings {
+  display: -ms-grid;
+  display: grid;
+  gap: 2rem;
+}
+
+.pageSettings .tip {
+  color: var(--sub-color);
+}
+
+.pageSettings .sectionGroupTitle {
+  font-size: 1.5rem;
+  color: var(--sub-color);
+  line-height: 1.5rem;
+}
+
+.pageSettings .sectionSpacer {
+  height: 1.5rem;
+}
+
+.pageSettings .section {
+  display: -ms-grid;
+  display: grid;
+      grid-template-areas: "title title"
 "text buttons";
+  -ms-grid-columns: 2fr 1fr;
+      grid-template-columns: 2fr 1fr;
+  -webkit-column-gap: 2rem;
+          column-gap: 2rem;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+
+.pageSettings .section.customTheme {
+  -ms-grid-columns: 1fr 1fr 1fr 1fr;
+      grid-template-columns: 1fr 1fr 1fr 1fr;
+  justify-items: stretch;
+  gap: .5rem 2rem;
+}
+
+.pageSettings .section.customTheme p {
+  grid-area: unset;
+  -ms-grid-column: 1;
+  -ms-grid-column-span: 4;
+  grid-column: 1 / span 4;
+}
+
+.pageSettings .section.customTheme .spacer {
+  -ms-grid-column: 3;
+  -ms-grid-column-span: 2;
+  grid-column: 3 / 5;
+}
+
+.pageSettings .section h1 {
+  font-size: 1rem;
+  line-height: 1rem;
+  color: var(--sub-color);
+  margin: 0;
+  -ms-grid-row: 1;
+  -ms-grid-column: 1;
+  grid-area: title;
+  font-weight: 300;
+}
+
+.pageSettings .section p {
+  -ms-grid-row: 2;
+  -ms-grid-column: 1;
+  grid-area: text;
+  color: var(--sub-color);
+  margin: 0;
+}
+
+.pageSettings .section .text {
+  -ms-flex-item-align: normal;
+      -ms-grid-row-align: normal;
+      align-self: normal;
+  color: var(--text-color);
+}
+
+.pageSettings .section .buttons {
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  grid-auto-columns: 1fr;
+  gap: .5rem;
+  -ms-grid-row: 3;
+  -ms-grid-column: 1;
+  grid-area: buttons;
+}
+
+.pageSettings .section.discordIntegration .code {
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  display: -ms-grid;
+  display: grid;
+}
+
+.pageSettings .section.discordIntegration .code .top {
+  font-size: 1rem;
+  line-height: 1rem;
+  color: var(--sub-color);
+}
+
+.pageSettings .section.discordIntegration .code .bottom {
+  font-size: 2rem;
+  line-height: 2rem;
+}
+
+.pageSettings .section.discordIntegration .info {
+  text-align: center;
+}
+
+.pageSettings .section.discordIntegration .howto {
+  margin-top: 1rem;
+  color: var(--text-color);
+}
+
+.pageSettings .section.tags .tagsList {
+  display: -ms-grid;
+  display: grid;
+  gap: .5rem;
+}
+
+.pageSettings .section.tags .tagsList .tag {
+  display: -ms-grid;
+  display: grid;
+  display: grid;
+  -ms-grid-columns: auto 1fr auto auto;
+      grid-template-columns: auto 1fr auto auto;
+  color: var(--text-color);
+}
+
+.pageSettings .section.tags .tagsList .tag .title {
+  -ms-flex-item-align: center;
+      -ms-grid-row-align: center;
+      align-self: center;
+}
+
+.pageSettings .section.tags .tagsList .tag .editButton,
+.pageSettings .section.tags .tagsList .tag .removeButton,
+.pageSettings .section.tags .tagsList .tag .active {
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  -ms-flex-line-pack: center;
+      align-content: center;
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+  padding: 0 0.5rem;
+  border-radius: var(--roundness);
+  color: var(--sub-color);
+}
+
+.pageSettings .section.tags .tagsList .tag .editButton:focus,
+.pageSettings .section.tags .tagsList .tag .removeButton:focus,
+.pageSettings .section.tags .tagsList .tag .active:focus {
+  background: var(--sub-color);
+  color: var(--main-color);
+  border: none;
+  outline: none;
+}
+
+.pageSettings .section.tags .tagsList .tag .editButton:hover,
+.pageSettings .section.tags .tagsList .tag .removeButton:hover,
+.pageSettings .section.tags .tagsList .tag .active:hover {
+  cursor: pointer;
+  color: var(--main-color);
+}
+
+.pageSettings .section.tags .addTagButton {
+  margin-top: .5rem;
+  color: var(--text-color);
+  cursor: pointer;
+  -webkit-transition: .25s;
+  transition: .25s;
+  padding: .2rem .5rem;
+  border-radius: var(--roundness);
+  background: rgba(0, 0, 0, 0.1);
+  text-align: center;
+  -webkit-user-select: none;
+  display: -ms-grid;
+  display: grid;
+  -ms-flex-line-pack: center;
+      align-content: center;
+  height: -webkit-min-content;
+  height: min-content;
+  height: -moz-min-content;
+}
+
+.pageSettings .section.tags .addTagButton.active {
+  background: var(--main-color);
+  color: var(--bg-color);
+}
+
+.pageSettings .section.tags .addTagButton:hover, .pageSettings .section.tags .addTagButton:focus {
+  color: var(--bg-color);
+  background: var(--main-color);
+  outline: none;
+}
+
+.pageSettings .section.fontSize .buttons {
+  -ms-grid-columns: 1fr 1fr 1fr 1fr;
+      grid-template-columns: 1fr 1fr 1fr 1fr;
+}
+
+.pageSettings .section.themes, .pageSettings .section.languages, .pageSettings .section.layouts {
+  -ms-grid-columns: 1fr;
+      grid-template-columns: 1fr;
+      grid-template-areas: "title"
 "tabs"
 "buttons";
+  gap: .5rem;
+}
+
+.pageSettings .section.themes .tabs, .pageSettings .section.languages .tabs, .pageSettings .section.layouts .tabs {
+  grid-area: tabs;
+  display: -webkit-box;
+  display: -ms-flexbox;
+  display: flex;
+  -ms-grid-columns: 1fr 1fr 9fr;
+      grid-template-columns: 1fr 1fr 9fr;
+  -ms-grid-row: 2;
+  -ms-grid-column: 1;
+  grid-area: tabs;
+}
+
+.pageSettings .section.themes .tabs .tab, .pageSettings .section.languages .tabs .tab, .pageSettings .section.layouts .tabs .tab {
+  will-change: color;
+  -webkit-transition: .2s ease-in-out color;
+  transition: .2s ease-in-out color;
+  outline: 0;
+  cursor: pointer;
+  padding: 0;
+  font-size: 1rem;
+  color: var(--sub-color);
+  text-align: left;
+  border: 0;
+  background: 0;
+  font-family: "Roboto Mono";
+}
+
+.pageSettings .section.themes .tabs .tab:first-child, .pageSettings .section.languages .tabs .tab:first-child, .pageSettings .section.layouts .tabs .tab:first-child {
+  margin-right: .5rem;
+}
+
+.pageSettings .section.themes .tabs .tab.active, .pageSettings .section.themes .tabs .tab:hover, .pageSettings .section.languages .tabs .tab.active, .pageSettings .section.languages .tabs .tab:hover, .pageSettings .section.layouts .tabs .tab.active, .pageSettings .section.layouts .tabs .tab:hover {
+  color: var(--main-color);
+}
+
+.pageSettings .section.themes .buttons, .pageSettings .section.languages .buttons, .pageSettings .section.layouts .buttons {
+  margin-left: 0;
+  grid-auto-flow: dense;
+  display: -ms-grid;
+  display: grid;
+  -ms-grid-columns: 1fr 1fr 1fr 1fr;
+      grid-template-columns: 1fr 1fr 1fr 1fr;
+  gap: .5rem;
+}
+
+.tabContainer {
+  position: relative;
+}
+
+.tabContainer .tabContent {
+  overflow: hidden;
+  height: auto;
+  max-height: 0px;
+}
+
+.tabContainer .tabContent.reveal {
+  max-height: 100vh;
+}
+
+.tabContainer .tabContent .text {
+  -ms-flex-item-align: center;
+      -ms-grid-row-align: center;
+      align-self: center;
+}
+
+.buttons div.theme:hover {
+  -webkit-transform: scale(1.1);
+          transform: scale(1.1);
+}
+
+.signOut {
+  font-size: 1rem;
+  line-height: 1rem;
+  -ms-grid-column-align: end;
+      justify-self: end;
+  color: var(--sub-color);
+  width: -webkit-fit-content;
+  width: -moz-fit-content;
+  width: fit-content;
+  padding: .5rem;
+  border-radius: var(--roundness);
+  cursor: pointer;
+  -webkit-transition: .25s;
+  transition: .25s;
+  float: right;
+}
+
+.signOut:hover {
+  color: var(--main-color);
+}
+
+.signOut .fas {
+  margin-right: .5rem;
+}
+
+.pageAccount {
+  display: -ms-grid;
+  display: grid;
+  gap: 1rem;
+}
+
+.pageAccount .content {
+  display: -ms-grid;
+  display: grid;
+  gap: 1rem;
+}
+
+.pageAccount .preloader {
+  font-size: 2rem;
+  -ms-grid-column-align: center;
+      justify-self: center;
+}
+
+.pageAccount .triplegroup {
+  display: -ms-grid;
+  display: grid;
+  -ms-grid-columns: 1fr 1fr 1fr;
+      grid-template-columns: 1fr 1fr 1fr;
+  gap: 1rem;
+}
+
+.pageAccount .triplegroup .text {
+  -ms-flex-item-align: center;
+      -ms-grid-row-align: center;
+      align-self: center;
+  color: var(--sub-color);
+}
+
+.pageAccount .group.noDataError {
+  margin: 20rem 0;
+  text-align: center;
+}
+
+.pageAccount .group.history .loadMoreButton {
+  background: rgba(0, 0, 0, 0.1);
+  color: var(--text-color);
+  text-align: center;
+  padding: .5rem;
+  border-radius: var(--roundness);
+  cursor: pointer;
+  -webkit-transition: .25s;
+  transition: .25s;
+  -webkit-user-select: none;
+  display: -ms-grid;
+  display: grid;
+  -ms-flex-line-pack: center;
+  align-content: center;
+  margin-top: 1rem;
+}
+
+.pageAccount .group.history .loadMoreButton:hover, .pageAccount .group.history .loadMoreButton:focus {
+  color: var(--bg-color);
+  background: var(--main-color);
+}
+
+.pageAccount .group .title {
+  color: var(--sub-color);
+}
+
+.pageAccount .group .val {
+  font-size: 3rem;
+  line-height: 3rem;
+}
+
+.pageAccount .group.chart {
+  position: relative;
+}
+
+.pageAccount .group.chart .chartPreloader {
+  position: absolute;
+  width: 100%;
+  background: rgba(0, 0, 0, 0.5);
+  height: 100%;
+  display: -ms-grid;
+  display: grid;
+  -webkit-box-align: center;
+      -ms-flex-align: center;
+          align-items: center;
+  -webkit-box-pack: center;
+      -ms-flex-pack: center;
+          justify-content: center;
+  font-size: 5rem;
+  text-shadow: 0 0 3rem black;
+}
+
+.pageAccount table {
+  border-spacing: 0;
+  border-collapse: collapse;
+  color: var(--text-color);
+}
+
+.pageAccount table td {
+  padding: .5rem .25rem;
+}
+
+.pageAccount table thead {
+  color: var(--sub-color);
+  font-size: .75rem;
+}
+
+.pageAccount table tbody tr:nth-child(odd) td {
+  background: rgba(0, 0, 0, 0.1);
+}
+
+.pageAccount table td.infoIcons span {
+  margin: 0 .1rem;
+}
+
+.pageAccount #resultEditTags {
+  -webkit-transition: .25s;
+  transition: .25s;
+}
+
+.pageAccount #resultEditTags:hover {
+  cursor: pointer;
+  color: var(--main-color);
+  opacity: 1 !important;
+}
+
+.pageAccount .group.filterButtons {
+  gap: 1rem;
+  display: -ms-grid;
+  display: grid;
+  -ms-grid-columns: 1fr 1fr;
+      grid-template-columns: 1fr 1fr;
+}
+
+.pageAccount .group.filterButtons .buttonsAndTitle {
+  height: -webkit-fit-content;
+  height: fit-content;
+  height: -moz-fit-content;
+  display: -ms-grid;
+  display: grid;
+  gap: .25rem;
+  color: var(--sub-color);
+  line-height: 1rem;
+  font-size: 1rem;
+}
+
+.pageAccount .group.filterButtons .buttons {
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  gap: 1rem;
+}
+
+.pageAccount .group.filterButtons .buttons .button {
+  background: rgba(0, 0, 0, 0.1);
+  color: var(--text-color);
+  text-align: center;
+  padding: .5rem;
+  border-radius: var(--roundness);
+  cursor: pointer;
+  -webkit-transition: .25s;
+  transition: .25s;
+  -webkit-user-select: none;
+  display: -ms-grid;
+  display: grid;
+  -ms-flex-line-pack: center;
+      align-content: center;
+}
+
+.pageAccount .group.filterButtons .buttons .button.active {
+  background: var(--main-color);
+  color: var(--bg-color);
+}
+
+.pageAccount .group.filterButtons .buttons .button:hover {
+  color: var(--bg-color);
+  background: var(--main-color);
+}
+
+.pageAccount .group.filterButtons .buttons.languages, .pageAccount .group.filterButtons .buttons.layouts {
+  -ms-grid-columns: (1fr)[4];
+      grid-template-columns: repeat(4, 1fr);
+  grid-auto-flow: unset;
+}
+
+.devIndicator {
+  position: fixed;
+  font-size: 3rem;
+  color: var(--sub-color);
+  opacity: .25;
+}
+
+.devIndicator.tl {
+  top: 2rem;
+  left: 2rem;
+}
+
+.devIndicator.tr {
+  top: 2rem;
+  right: 2rem;
+}
+
+.devIndicator.bl {
+  bottom: 2rem;
+  left: 2rem;
+}
+
+.devIndicator.br {
+  bottom: 2rem;
+  right: 2rem;
+}
+
+* {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.hidden {
+  display: none !important;
+}
+
+.button {
+  color: var(--text-color);
+  cursor: pointer;
+  -webkit-transition: .25s;
+  transition: .25s;
+  padding: .4rem;
+  border-radius: var(--roundness);
+  background: rgba(0, 0, 0, 0.1);
+  text-align: center;
+  -webkit-user-select: none;
+  -ms-flex-line-pack: center;
+      align-content: center;
+  height: -webkit-min-content;
+  height: min-content;
+  height: -moz-min-content;
+  line-height: 1rem;
+}
+
+.button .fas,
+.button .far {
+  margin-right: .5rem;
+}
+
+.button.active {
+  background: var(--main-color);
+  color: var(--bg-color);
+}
+
+.button:hover, .button:focus {
+  color: var(--bg-color);
+  background: var(--main-color);
+  outline: none;
+}
+
+.text-button {
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+  color: var(--sub-color);
+  cursor: pointer;
+  margin-right: 0.25rem;
+  cursor: pointer;
+}
+
+.text-button:hover, .text-button:focus {
+  color: var(--main-color);
+}
+
+.text-button.active {
+  color: var(--main-color);
+}
+
+.icon-button {
+  display: -ms-grid;
+  display: grid;
+  grid-auto-flow: column;
+  -ms-flex-line-pack: center;
+      align-content: center;
+  -webkit-transition: 0.25s;
+  transition: 0.25s;
+  padding: 0.5rem;
+  border-radius: var(--roundness);
+  cursor: pointer;
+}
+
+.icon-button:focus {
+  background: var(--sub-color);
+  color: var(--main-color);
+  border: none;
+  outline: none;
+}
+/*# sourceMappingURL=style.css.map */
\ No newline at end of file
diff --git a/public/css/style.css.map b/public/css/style.css.map
new file mode 100644
index 000000000..e8887dc36
--- /dev/null
+++ b/public/css/style.css.map
@@ -0,0 +1,9 @@
+{
+    "version": 3,
+    "mappings": "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",
+    "sources": [
+        "style.scss"
+    ],
+    "names": [],
+    "file": "style.css"
+}
\ No newline at end of file
diff --git a/static/themes/80s_after_dark.css b/static/themes/80s_after_dark.css
new file mode 100644
index 000000000..a89c79ebe
--- /dev/null
+++ b/static/themes/80s_after_dark.css
@@ -0,0 +1,12 @@
+:root {
+    --bg-color: #1B1D36;
+    --main-color:#FCA6D1;
+    --caret-color: #99D6EA;
+    --sub-color: #99D6EA;
+    --text-color: #FCA6D1;
+    --error-color: #A06CBC;
+    --error-extra-color: #A06CBC;
+    --colorful-error-color: #A06CBC;
+    --colorful-error-extra-color: #A06CBC;
+  }
+  
\ No newline at end of file
diff --git a/static/themes/_list.json b/static/themes/_list.json
index 6b5279964..40c29e058 100644
--- a/static/themes/_list.json
+++ b/static/themes/_list.json
@@ -478,5 +478,10 @@
     "name": "stealth",
     "bgColor": "#010203",
     "textColor": "#383e42"
+  },
+  {
+    "name": "80s_after_dark",
+    "bgColor": "#1B1D36",
+    "textColor": "#FCA6D1"
   }
 ]