diff --git a/assets/js/theme/design-system/modal.js b/assets/js/theme/design-system/modal.js
index c0cb609e7edad8fc4b77cf53b6e55111fa998380..3cb342afecbaf17124fe1e67727f0e3e7c25da09 100644
--- a/assets/js/theme/design-system/modal.js
+++ b/assets/js/theme/design-system/modal.js
@@ -1,7 +1,8 @@
 import { focusTrap } from '../utils/focus-trap';
 
 const CLASSES = {
-    modalOpened: 'has-modal-opened'
+    modalOpened: 'has-modal-opened',
+    modalIsOpened: 'is-opened'
 };
 
 class Modal {
@@ -44,7 +45,6 @@ class Modal {
         });
 
         window.addEventListener('click', (event) => {
-            console.log(this.element)
             if (event.target === this.element) {
                 this.toggle(false);
             }
@@ -54,9 +54,14 @@ class Modal {
     toggle(open = !this.state.isOpened) {
         this.state.isOpened = open;
         const classAction = this.state.isOpened ? 'add' : 'remove';
+        let transitionDuration = window.getComputedStyle(this.element).transitionDuration;
+        transitionDuration = parseFloat(transitionDuration.replace('s', ''));
 
         this.element.setAttribute('aria-hidden', !this.state.isOpened);
         document.documentElement.classList[classAction](CLASSES.modalOpened);
+        setTimeout(() => {
+            this.element.classList[classAction](CLASSES.modalIsOpened);
+        }, transitionDuration * 1000);
     }
 }
 
diff --git a/assets/sass/_theme/design-system/layout.sass b/assets/sass/_theme/design-system/layout.sass
index 832eb64685a8855936fae7eb6c0cbe653f6560d7..d33f9ec5f54f7a55fb5bc87e959e59d8033698fd 100644
--- a/assets/sass/_theme/design-system/layout.sass
+++ b/assets/sass/_theme/design-system/layout.sass
@@ -92,7 +92,6 @@ details
                 transform: translateY(-5px)
 .modal
     align-items: center
-    display: flex
     justify-content: center
     height: 100vh
     left: 0
@@ -102,6 +101,14 @@ details
     width: 100%
     margin: 0
     z-index: $zindex-modal
+    opacity: 0
+    transition: opacity $header-transition
+    html.is-animating &
+        opacity: 0
+        display: flex
+    &.is-opened
+        opacity: 1
+        display: flex
     &[aria-hidden="true"]
         display: none
     .modal-content