diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..57614f9
Binary files /dev/null and b/favicon.ico differ
diff --git a/public/css/403.css b/public/css/403.css
new file mode 100644
index 0000000..fd6d227
--- /dev/null
+++ b/public/css/403.css
@@ -0,0 +1,39 @@
+@import url("https://fonts.googleapis.com/css?family=Bungee");
+
+body {
+ color: white;
+ font-family: "Bungee", cursive;
+ text-align: center;
+}
+a {
+ color: #2aa7cc;
+ text-decoration: none;
+}
+a:hover {
+ color: white;
+}
+svg {
+ width: 50vw;
+}
+.lightblue {
+ fill: #444;
+}
+.eye {
+ cx: calc(115px + 30px * var(--mouse-x));
+ cy: calc(50px + 30px * var(--mouse-y));
+}
+#eye-wrap {
+ overflow: hidden;
+}
+.error-text {
+ font-size: 120px;
+}
+.alarm {
+ animation: alarmOn 0.5s infinite;
+}
+
+@keyframes alarmOn {
+ to {
+ fill: darkred;
+ }
+}
diff --git a/public/js/403.js b/public/js/403.js
new file mode 100644
index 0000000..943b9fa
--- /dev/null
+++ b/public/js/403.js
@@ -0,0 +1,25 @@
+var root = document.documentElement;
+var eyef = document.getElementById("eyef");
+var cx = document.getElementById("eyef").getAttribute("cx");
+var cy = document.getElementById("eyef").getAttribute("cy");
+
+document.addEventListener("mousemove", (evt) => {
+ let x = evt.clientX / innerWidth;
+ let y = evt.clientY / innerHeight;
+
+ root.style.setProperty("--mouse-x", x);
+ root.style.setProperty("--mouse-y", y);
+
+ cx = 115 + 30 * x;
+ cy = 50 + 30 * y;
+ eyef.setAttribute("cx", cx);
+ eyef.setAttribute("cy", cy);
+});
+
+document.addEventListener("touchmove", (touchHandler) => {
+ let x = touchHandler.touches[0].clientX / innerWidth;
+ let y = touchHandler.touches[0].clientY / innerHeight;
+
+ root.style.setProperty("--mouse-x", x);
+ root.style.setProperty("--mouse-y", y);
+});
diff --git a/styles.css b/styles.css
new file mode 100644
index 0000000..90d4ee0
--- /dev/null
+++ b/styles.css
@@ -0,0 +1 @@
+/* You can add global styles to this file, and also import other style files */
diff --git a/templates/error/access_denied.html.twig b/templates/error/access_denied.html.twig
index 8044853..2adb722 100644
--- a/templates/error/access_denied.html.twig
+++ b/templates/error/access_denied.html.twig
@@ -3,74 +3,35 @@
{% block title %}403 Denied Access{% endblock %}
{% block body %}
-Erreur 403
-Accès refusé : vous n'avez pas la permission d'accéder à cette page