From 7a1540a95353ed4286339c9c5517410ae80e24d9 Mon Sep 17 00:00:00 2001
From: sandippoddar <sandip.poddar@innoraft.com>
Date: Fri, 14 Feb 2025 11:17:42 +0530
Subject: [PATCH 1/3] Issue #3506341: Respect operating system settings for
 reduced motion.

---
 dist/css/components/ajax.css              | 8 +++++++-
 dist/css/components/autocomplete.css      | 8 +++++++-
 dist/css/components/layout_paragraphs.css | 8 +++++++-
 dist/css/components/more_actions.css      | 8 +++++++-
 dist/css/components/tableselect.css       | 8 +++++++-
 styles/components/ajax.scss               | 4 +++-
 styles/components/autocomplete.scss       | 4 +++-
 styles/components/layout_paragraphs.scss  | 4 +++-
 styles/components/more_actions.scss       | 4 +++-
 styles/components/tableselect.scss        | 4 +++-
 10 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/dist/css/components/ajax.css b/dist/css/components/ajax.css
index eac8ef78f..cd850c03c 100644
--- a/dist/css/components/ajax.css
+++ b/dist/css/components/ajax.css
@@ -61,7 +61,13 @@
   border: 2px solid var(--gin-color-primary);
   border-inline-end: 2px dotted transparent;
   border-radius: 50%;
-  animation: gin-throbber .75s linear infinite;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .ui-dialog .ajax-progress-throbber::before,
+  .contextual-links .ajax-progress-throbber::before {
+    animation: gin-throbber .75s linear infinite;
+  }
 }
 
 .gin--dark-mode .ui-dialog .ajax-progress,
diff --git a/dist/css/components/autocomplete.css b/dist/css/components/autocomplete.css
index 57b44f49c..65d23a73c 100644
--- a/dist/css/components/autocomplete.css
+++ b/dist/css/components/autocomplete.css
@@ -67,7 +67,13 @@ div.autocomplete-deluxe-container div.autocomplete-deluxe-throbber.autocomplete-
   border-block-start: 2px solid var(--gin-color-primary);
   width: 14px;
   height: 14px;
-  animation: gin-throbber 1s linear infinite;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .form-autocomplete.is-autocompleting + .claro-autocomplete__message::after,
+  div.autocomplete-deluxe-container div.autocomplete-deluxe-throbber.autocomplete-deluxe-open::after {
+    animation: gin-throbber 1s linear infinite;
+  }
 }
 
 div.autocomplete-deluxe-container div.autocomplete-deluxe-throbber.autocomplete-deluxe-open::after {
diff --git a/dist/css/components/layout_paragraphs.css b/dist/css/components/layout_paragraphs.css
index 0ca4777d2..328b759b2 100644
--- a/dist/css/components/layout_paragraphs.css
+++ b/dist/css/components/layout_paragraphs.css
@@ -479,12 +479,18 @@
 .erl-loading div.spinner {
   width: 1.125rem;
   height: 1.125rem;
-  animation: gin-throbber .75s linear infinite;
   border: 2px solid var(--gin-color-primary);
   border-inline-end: 2px dotted transparent;
   border-radius: 50%;
 }
 
+@media (prefers-reduced-motion: no-preference) {
+  .layout-paragraphs-loading div.spinner,
+  .erl-loading div.spinner {
+    animation: gin-throbber .75s linear infinite;
+  }
+}
+
 .layout-paragraphs-add-content:focus,
 .erl-add-content:focus {
   outline: none;
diff --git a/dist/css/components/more_actions.css b/dist/css/components/more_actions.css
index 1cc4a5cfd..10db68e35 100644
--- a/dist/css/components/more_actions.css
+++ b/dist/css/components/more_actions.css
@@ -187,7 +187,6 @@ body:has([data-drupal-selector=edit-save] + .ajax-progress) :where([data-drupal-
 body:has([data-drupal-selector=edit-preview] + .ajax-progress) :where([data-drupal-selector=gin-sticky-edit-preview]),
 body:has([data-drupal-selector=edit-delete] + .ajax-progress) :where([data-drupal-selector=gin-sticky-edit-delete]) {
   background-image: url("../../media/sprite.svg#loader-view");
-  animation: gin-pseudo-throbber 1s linear infinite;
 }
 
 [dir="ltr"] body:has([data-drupal-selector=edit-save] + .ajax-progress) :where([data-drupal-selector=gin-sticky-edit-save]),
@@ -202,3 +201,10 @@ body:has([data-drupal-selector=edit-delete] + .ajax-progress) :where([data-drupa
   padding-inline-end: var(--gin-spacing-xl);
 }
 
+@media (prefers-reduced-motion: no-preference) {
+  body:has([data-drupal-selector=edit-save] + .ajax-progress) :where([data-drupal-selector=gin-sticky-edit-save]),
+  body:has([data-drupal-selector=edit-preview] + .ajax-progress) :where([data-drupal-selector=gin-sticky-edit-preview]),
+  body:has([data-drupal-selector=edit-delete] + .ajax-progress) :where([data-drupal-selector=gin-sticky-edit-delete]) {
+    animation: gin-pseudo-throbber 1s linear infinite;
+  }
+}
diff --git a/dist/css/components/tableselect.css b/dist/css/components/tableselect.css
index fdc187a3d..af49a205d 100644
--- a/dist/css/components/tableselect.css
+++ b/dist/css/components/tableselect.css
@@ -63,7 +63,13 @@
 .block-system > .views-form [data-drupal-selector*=edit-header].is-sticky,
 .view-content .views-form [data-drupal-selector*=edit-header].is-sticky {
   z-index: 4;
-  animation: fadeInBottom 320ms 1 forwards;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .block-system > .views-form [data-drupal-selector*=edit-header].is-sticky,
+  .view-content .views-form [data-drupal-selector*=edit-header].is-sticky {
+    animation: fadeInBottom 320ms 1 forwards;
+  }
 }
 
 .block-system > .views-form [data-drupal-selector*=edit-header],
diff --git a/styles/components/ajax.scss b/styles/components/ajax.scss
index 56b42534f..d0b16f202 100644
--- a/styles/components/ajax.scss
+++ b/styles/components/ajax.scss
@@ -68,7 +68,9 @@
     border: 2px solid var(--gin-color-primary);
     border-inline-end: 2px dotted transparent;
     border-radius: 50%;
-    animation: gin-throbber 0.75s linear infinite;
+    @media (prefers-reduced-motion: no-preference) {
+      animation: gin-throbber 0.75s linear infinite;
+    }
   }
 }
 
diff --git a/styles/components/autocomplete.scss b/styles/components/autocomplete.scss
index 29e968377..586106dbf 100644
--- a/styles/components/autocomplete.scss
+++ b/styles/components/autocomplete.scss
@@ -62,7 +62,9 @@ div.autocomplete-deluxe-container div.autocomplete-deluxe-throbber.autocomplete-
     border-block-start: 2px solid var(--gin-color-primary);
     width: 14px;
     height: 14px;
-    animation: gin-throbber 1s linear infinite;
+    @media (prefers-reduced-motion: no-preference) {
+      animation: gin-throbber 1s linear infinite;
+    }
   }
 }
 
diff --git a/styles/components/layout_paragraphs.scss b/styles/components/layout_paragraphs.scss
index da27caedd..8735babb1 100644
--- a/styles/components/layout_paragraphs.scss
+++ b/styles/components/layout_paragraphs.scss
@@ -379,7 +379,9 @@
 .erl-loading div.spinner {
   width: 1.125rem;
   height: 1.125rem;
-  animation: gin-throbber 0.75s linear infinite;
+  @media (prefers-reduced-motion: no-preference) {
+    animation: gin-throbber 0.75s linear infinite;
+  }
   border: 2px solid var(--gin-color-primary);
   border-inline-end: 2px dotted transparent;
   border-radius: 50%;
diff --git a/styles/components/more_actions.scss b/styles/components/more_actions.scss
index 9848322a8..390508aa4 100644
--- a/styles/components/more_actions.scss
+++ b/styles/components/more_actions.scss
@@ -179,5 +179,7 @@ body:has([data-drupal-selector="edit-preview"] + .ajax-progress) :where([data-dr
 body:has([data-drupal-selector="edit-delete"] + .ajax-progress) :where([data-drupal-selector="gin-sticky-edit-delete"]) {
   padding-left: var(--gin-spacing-xl);
   background-image: icon('loader');
-  animation: gin-pseudo-throbber 1s linear infinite;
+  @media (prefers-reduced-motion: no-preference) {
+    animation: gin-pseudo-throbber 1s linear infinite;
+  }
 }
diff --git a/styles/components/tableselect.scss b/styles/components/tableselect.scss
index 1e885d02c..c872a03d3 100644
--- a/styles/components/tableselect.scss
+++ b/styles/components/tableselect.scss
@@ -54,7 +54,9 @@
 
     &.is-sticky {
       z-index: 4;
-      animation: fadeInBottom 320ms 1 forwards;
+      @media (prefers-reduced-motion: no-preference) {
+        animation: fadeInBottom 320ms 1 forwards;
+      }
     }
   }
 
-- 
GitLab


From 301cfc70be3e064cf272e5e7555dfccc4883a3de Mon Sep 17 00:00:00 2001
From: sandippoddar <sandip.poddar@innoraft.com>
Date: Fri, 14 Feb 2025 11:27:33 +0530
Subject: [PATCH 2/3] Issue #3506341: Fix pipeline issue.

---
 dist/css/components/more_actions.css | 1 +
 1 file changed, 1 insertion(+)

diff --git a/dist/css/components/more_actions.css b/dist/css/components/more_actions.css
index 10db68e35..2002664b4 100644
--- a/dist/css/components/more_actions.css
+++ b/dist/css/components/more_actions.css
@@ -208,3 +208,4 @@ body:has([data-drupal-selector=edit-delete] + .ajax-progress) :where([data-drupa
     animation: gin-pseudo-throbber 1s linear infinite;
   }
 }
+
-- 
GitLab


From 0fe44257dd90fc7f2242fb58eca3e56abe4dcacb Mon Sep 17 00:00:00 2001
From: sandippoddar <sandip.poddar@innoraft.com>
Date: Wed, 19 Feb 2025 17:54:17 +0530
Subject: [PATCH 3/3] Issue #3506341: Perfrom prefers-reduced-motion:
 no-preference media for Transition properties.

---
 dist/css/base/gin.css                      | 70 +++++++++++++++++++---
 dist/css/components/autocomplete.css       | 13 +++-
 dist/css/components/edit_form.css          | 11 +++-
 dist/css/components/more_actions.css       | 14 ++++-
 dist/css/components/node_preview.css       |  7 ++-
 dist/css/components/project_browser.css    |  7 ++-
 dist/css/components/responsive_preview.css |  7 ++-
 dist/css/components/sidebar.css            | 27 +++++++--
 dist/css/components/tabs.css               |  9 ++-
 dist/css/components/tooltip.css            |  7 ++-
 dist/css/layout/navigation.css             | 27 +++++++--
 dist/css/layout/toolbar.css                | 40 ++++++++++++-
 dist/css/theme/dialog.css                  | 42 +++++++++++--
 styles/base/_button.scss                   |  8 ++-
 styles/base/_form.scss                     | 12 +++-
 styles/base/_messages.scss                 |  8 ++-
 styles/base/_regions.scss                  |  4 +-
 styles/base/_title.scss                    |  4 +-
 styles/components/autocomplete.scss        |  8 ++-
 styles/components/edit_form.scss           |  8 ++-
 styles/components/more_actions.scss        |  8 ++-
 styles/components/node_preview.scss        |  4 +-
 styles/components/project_browser.scss     |  4 +-
 styles/components/responsive_preview.scss  |  4 +-
 styles/components/sidebar.scss             | 16 +++--
 styles/components/tabs.scss                |  4 +-
 styles/components/tooltip.scss             |  4 +-
 styles/layout/navigation.scss              |  8 ++-
 styles/layout/toolbar.scss                 | 25 ++++++--
 styles/navigation/admin-toolbar.scss       |  4 +-
 styles/navigation/toolbar-link.scss        |  4 +-
 31 files changed, 347 insertions(+), 71 deletions(-)

diff --git a/dist/css/base/gin.css b/dist/css/base/gin.css
index 57dd6a2d2..14b08d07f 100644
--- a/dist/css/base/gin.css
+++ b/dist/css/base/gin.css
@@ -161,7 +161,12 @@ button.link:active,
   min-height: var(--gin-height-sticky);
   background: var(--gin-bg-app);
   box-sizing: border-box;
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .region-sticky {
+    transition: var(--gin-transition);
+  }
 }
 
 .gin--edit-form .region-sticky {
@@ -553,7 +558,12 @@ body:not(.toolbar-tray-open) .layout-container {
   text-overflow: ellipsis;
   padding-inline-end: .25em;
   max-width: 90%;
-  transition: font-size .25s ease;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .page-title {
+    transition: font-size .25s ease;
+  }
 }
 
 @media (min-width: 64em) {
@@ -1652,7 +1662,12 @@ table .views-field.views-field-operations {
   border: 1px solid var(--gin-border-color-form-element);
   border-radius: var(--gin-border-m);
   box-sizing: border-box;
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .form-element {
+    transition: var(--gin-transition);
+  }
 }
 
 .form-element:hover {
@@ -1809,7 +1824,6 @@ table .views-field.views-field-operations {
   height: 100%;
   background-color: #fff;
   border-radius: 21px;
-  transition: transform .3s;
 }
 
 [dir="ltr"] :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::before {
@@ -1820,6 +1834,12 @@ table .views-field.views-field-operations {
   transform: translateX(16px);
 }
 
+@media (prefers-reduced-motion: no-preference) {
+  :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::before {
+    transition: transform .3s;
+  }
+}
+
 .gin--dark-mode :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::before {
   background-color: var(--gin-border-color-form-element);
 }
@@ -1845,7 +1865,6 @@ table .views-field.views-field-operations {
             mask-position: 17px 2px;
     -webkit-mask-repeat: no-repeat;
             mask-repeat: no-repeat;
-    transition: transform .3s;
   }
 
   [dir="ltr"] :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::after {
@@ -1857,6 +1876,12 @@ table .views-field.views-field-operations {
   }
 }
 
+@media (forced-colors: active) and (prefers-reduced-motion: no-preference) {
+  :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::after {
+    transition: transform .3s;
+  }
+}
+
 :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input:disabled {
   cursor: not-allowed;
 }
@@ -2190,7 +2215,15 @@ tr .form-item {
   color: var(--gin-color-primary);
   background-color: transparent;
   box-shadow: none;
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .button,
+  .project__action_button,
+  .dropbutton__item:first-of-type > *,
+  .dropbutton__toggle {
+    transition: var(--gin-transition);
+  }
 }
 
 @media (min-width: 80em) {
@@ -2243,7 +2276,16 @@ tr .form-item {
   border: 2px solid var(--gin-color-primary) !important;
   border-radius: var(--gin-border-m);
   box-shadow: 0 1px 2px var(--gin-color-primary-light);
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .button,
+  .button:not(:focus),
+  .form-actions .button,
+  .project__action_button,
+  .action-link--icon-trash.action-link {
+    transition: var(--gin-transition);
+  }
 }
 
 .button:hover,
@@ -2998,10 +3040,15 @@ a.button--primary.button--danger,
   padding: var(--gin-spacing-m);
   border: 2px solid transparent;
   border-radius: var(--gin-border-l);
-  transition: opacity var(--gin-transition-fast);
   opacity: 1;
 }
 
+@media (prefers-reduced-motion: no-preference) {
+  .messages {
+    transition: opacity var(--gin-transition-fast);
+  }
+}
+
 .gin--dark-mode .messages {
   box-shadow: 0 6px 16px var(--gin-border-color-layer);
 }
@@ -3061,10 +3108,15 @@ a.button--primary.button--danger,
   text-indent: -99999px;
   border-radius: var(--gin-border-m);
   border-color: transparent !important;
-  transition: var(--gin-transition);
   box-shadow: none;
 }
 
+@media (prefers-reduced-motion: no-preference) {
+  .messages .button--dismiss {
+    transition: var(--gin-transition);
+  }
+}
+
 .messages .button--dismiss:hover:not(:focus) {
   color: transparent;
   background-color: transparent;
diff --git a/dist/css/components/autocomplete.css b/dist/css/components/autocomplete.css
index 65d23a73c..b1be0b057 100644
--- a/dist/css/components/autocomplete.css
+++ b/dist/css/components/autocomplete.css
@@ -39,8 +39,10 @@ a.ui-button:active,
   border: 1px solid var(--gin-border-color);
 }
 
-.js .form-autocomplete {
-  transition: var(--gin-transition), background-position none;
+@media (prefers-reduced-motion: no-preference) {
+  .js .form-autocomplete {
+    transition: var(--gin-transition), background-position none;
+  }
 }
 
 .js .form-autocomplete.is-autocompleting,
@@ -86,7 +88,12 @@ div.autocomplete-deluxe-multiple {
   border: 1px solid var(--gin-border-color-form-element);
   border-radius: var(--gin-border-m);
   box-sizing: border-box;
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  div.autocomplete-deluxe-multiple {
+    transition: var(--gin-transition);
+  }
 }
 
 .autocomplete-deluxe-container input.autocomplete-deluxe-form {
diff --git a/dist/css/components/edit_form.css b/dist/css/components/edit_form.css
index cca21c59f..67c15fcb7 100644
--- a/dist/css/components/edit_form.css
+++ b/dist/css/components/edit_form.css
@@ -2,11 +2,15 @@
   .gin--edit-form {
     padding-inline-end: var(--gin-sidebar-offset);
   }
+}
 
+@media (min-width: 64em) and (prefers-reduced-motion: no-preference) {
   .gin--edit-form .dialog-off-canvas-main-canvas {
     transition: padding-inline-start var(--gin-transition-fast);
   }
+}
 
+@media (min-width: 64em) {
   .gin--edit-form.js-off-canvas-dialog-open {
     padding-inline-end: 0;
   }
@@ -103,7 +107,12 @@
   -webkit-overflow-scrolling: touch;
   background: var(--gin-bg-layer);
   border-inline-start: 1px solid var(--gin-border-color-layer);
-  transition: all var(--gin-transition-fast);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .gin--edit-form .page-wrapper__node-edit-form .layout-region-node-secondary {
+    transition: all var(--gin-transition-fast);
+  }
 }
 
 .gin--dark-mode .gin--edit-form .page-wrapper__node-edit-form .layout-region-node-secondary {
diff --git a/dist/css/components/more_actions.css b/dist/css/components/more_actions.css
index 2002664b4..108bc2600 100644
--- a/dist/css/components/more_actions.css
+++ b/dist/css/components/more_actions.css
@@ -32,7 +32,12 @@
   border-radius: var(--gin-border-l);
   box-sizing: border-box;
   box-shadow: var(--gin-shadow-l2);
-  transition: opacity var(--gin-transition-fast);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .gin-sticky-form-actions .gin-more-actions__menu {
+    transition: opacity var(--gin-transition-fast);
+  }
 }
 
 .gin-sticky-form-actions .gin-more-actions__menu .action-link.action-link,
@@ -93,7 +98,12 @@
   width: 32px;
   margin-inline: calc(var(--gin-spacing-xxs) * -1);
   border-radius: var(--gin-border-m);
-  transition: background var(--gin-transition-fast);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .gin-sticky-form-actions .gin-more-actions__trigger {
+    transition: background var(--gin-transition-fast);
+  }
 }
 
 .gin-sticky-form-actions .gin-more-actions__trigger::before {
diff --git a/dist/css/components/node_preview.css b/dist/css/components/node_preview.css
index affe992b5..9d72101a6 100644
--- a/dist/css/components/node_preview.css
+++ b/dist/css/components/node_preview.css
@@ -131,7 +131,12 @@
   border: 1px solid var(--gin-border-color-form-element);
   border-radius: var(--gin-border-s);
   box-sizing: border-box;
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .node-preview-container.node-preview-container .form-element {
+    transition: var(--gin-transition);
+  }
 }
 
 .node-preview-container.node-preview-container .js-hide {
diff --git a/dist/css/components/project_browser.css b/dist/css/components/project_browser.css
index 6839ab663..8b0ba6470 100644
--- a/dist/css/components/project_browser.css
+++ b/dist/css/components/project_browser.css
@@ -152,7 +152,12 @@
   background-color: var(--gin-bg-input);
   border: 1px solid var(--gin-border-color-form-element);
   border-radius: var(--gin-border-m);
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  #project-browser .search__filter__toggle.form-element, #project-browser .search__sort-select.form-element {
+    transition: var(--gin-transition);
+  }
 }
 
 #project-browser .search__checkbox-label {
diff --git a/dist/css/components/responsive_preview.css b/dist/css/components/responsive_preview.css
index d01494a54..fe555c26f 100644
--- a/dist/css/components/responsive_preview.css
+++ b/dist/css/components/responsive_preview.css
@@ -37,7 +37,12 @@
   -webkit-mask-repeat: no-repeat;
           mask-repeat: no-repeat;
   box-sizing: border-box;
-  transition: transform .2s var(--gin-easing);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .toolbar .toolbar-tab-responsive-preview.toolbar-tab .responsive-preview-trigger::after {
+    transition: transform .2s var(--gin-easing);
+  }
 }
 
 .toolbar .toolbar-tab-responsive-preview.toolbar-tab .responsive-preview-options {
diff --git a/dist/css/components/sidebar.css b/dist/css/components/sidebar.css
index 641098cb6..6a650eaec 100644
--- a/dist/css/components/sidebar.css
+++ b/dist/css/components/sidebar.css
@@ -8,7 +8,12 @@
   display: block;
   width: 2px;
   height: 100%;
-  transition: var(--gin-transition-fast);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  #gin-sidebar-draggable {
+    transition: var(--gin-transition-fast);
+  }
 }
 
 #gin-sidebar-draggable:hover {
@@ -19,8 +24,10 @@
   background-color: var(--gin-border-color);
 }
 
-.layout-region-node-secondary {
-  transition: transform var(--gin-transition-fast);
+@media (prefers-reduced-motion: no-preference) {
+  .layout-region-node-secondary {
+    transition: transform var(--gin-transition-fast);
+  }
 }
 
 @media (max-width: 60.99em) {
@@ -62,7 +69,12 @@ body[data-meta-sidebar=closed] .layout-region-node-secondary {
   height: 32px;
   width: 32px;
   border-radius: var(--gin-border-m);
-  transition: background var(--gin-transition-fast);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .meta-sidebar__close {
+    transition: background var(--gin-transition-fast);
+  }
 }
 
 .meta-sidebar__close::before {
@@ -100,7 +112,12 @@ body[data-meta-sidebar=closed] .layout-region-node-secondary {
   width: 32px;
   height: 32px;
   border-radius: var(--gin-border-m);
-  transition: background var(--gin-transition-fast);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .meta-sidebar__trigger {
+    transition: background var(--gin-transition-fast);
+  }
 }
 
 .meta-sidebar__trigger::before {
diff --git a/dist/css/components/tabs.css b/dist/css/components/tabs.css
index 42484d001..b2ea97de0 100644
--- a/dist/css/components/tabs.css
+++ b/dist/css/components/tabs.css
@@ -118,7 +118,14 @@
   width: 100%;
   max-width: calc(100% + var(--gin-spacing-xs));
   border-block-end: 1px solid var(--gin-border-color);
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .is-horizontal .tabs--primary::after,
+  .is-horizontal .tabs--secondary::after,
+  .horizontal-tabs ul.horizontal-tabs-list::after {
+    transition: var(--gin-transition);
+  }
 }
 
 @media (min-width: 48em) {
diff --git a/dist/css/components/tooltip.css b/dist/css/components/tooltip.css
index bee5ec866..27eafcdcc 100644
--- a/dist/css/components/tooltip.css
+++ b/dist/css/components/tooltip.css
@@ -19,7 +19,12 @@
 .gin-tooltip {
   visibility: hidden;
   opacity: 0;
-  transition: var(--gin-transition-fast);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .gin-tooltip {
+    transition: var(--gin-transition-fast);
+  }
 }
 
 [data-gin-tooltip]:hover + .gin-tooltip,
diff --git a/dist/css/layout/navigation.css b/dist/css/layout/navigation.css
index 476a766b5..c6baf4e59 100644
--- a/dist/css/layout/navigation.css
+++ b/dist/css/layout/navigation.css
@@ -96,6 +96,11 @@ body {
 @media (min-width: 61em) {
   .admin-toolbar ~ .dialog-off-canvas-main-canvas {
     margin-inline-start: var(--drupal-displace-offset-left, var(--sidebar-width));
+  }
+}
+
+@media (min-width: 61em) and (prefers-reduced-motion: no-preference) {
+  .admin-toolbar ~ .dialog-off-canvas-main-canvas {
     transition: margin-inline-start .2s linear;
   }
 }
@@ -651,7 +656,12 @@ html:not(.admin-toolbar-expanded) .toolbar-menu__item--to-title > button.toolbar
 
 .toolbar-link--has-icon span {
   opacity: 1;
-  transition: opacity .4s ease;
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .toolbar-link--has-icon span {
+    transition: opacity .4s ease;
+  }
 }
 
 .toolbar-link--has-icon::before {
@@ -732,9 +742,11 @@ html:not(.admin-toolbar-expanded) .toolbar-menu__item--to-title > button.toolbar
   margin-inline-start: var(--gin-toolbar-x-offset);
 }
 
-.admin-toolbar ~ .dialog-off-canvas-main-canvas,
-.gin--navigation .gin-secondary-toolbar--frontend {
-  transition: margin-inline-start var(--gin-transition-fast), margin-inline-start var(--gin-transition-fast);
+@media (prefers-reduced-motion: no-preference) {
+  .admin-toolbar ~ .dialog-off-canvas-main-canvas,
+  .gin--navigation .gin-secondary-toolbar--frontend {
+    transition: margin-inline-start var(--gin-transition-fast), margin-inline-start var(--gin-transition-fast);
+  }
 }
 
 .gin--navigation {
@@ -1031,7 +1043,12 @@ button.toolbar-link--sidebar-toggle::before {
   position: relative;
   -webkit-mask-size: var(--space-s) var(--space-s);
           mask-size: var(--space-s) var(--space-s);
-  transition: transform var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  button.toolbar-link--sidebar-toggle::before {
+    transition: transform var(--gin-transition);
+  }
 }
 
 button.toolbar-link--sidebar-toggle:hover::before, button.toolbar-link--sidebar-toggle:active::before, button.toolbar-link--sidebar-toggle:focus::before {
diff --git a/dist/css/layout/toolbar.css b/dist/css/layout/toolbar.css
index 978a443e5..8a05cdc04 100644
--- a/dist/css/layout/toolbar.css
+++ b/dist/css/layout/toolbar.css
@@ -108,6 +108,11 @@
   .toolbar .toolbar-bar #toolbar-item-administration-tray a.toolbar-icon-admin-toolbar-tools-help.toolbar-icon-default {
     height: 74px;
     margin-block-end: 6px;
+  }
+}
+
+@media (min-width: 61em) and (prefers-reduced-motion: no-preference) {
+  .toolbar .toolbar-bar #toolbar-item-administration-tray a.toolbar-icon-admin-toolbar-tools-help.toolbar-icon-default {
     transition: top var(--gin-transition);
   }
 }
@@ -207,11 +212,15 @@ a.toolbar-menu__trigger,
   .toolbar .toolbar-menu .toolbar-menu {
     background: var(--gin-bg-app);
   }
+}
 
+@media (min-width: 61em) and (prefers-reduced-motion: no-preference) {
   .toolbar-fixed {
     transition: var(--gin-transition);
   }
+}
 
+@media (min-width: 61em) {
   .toolbar .toolbar-box {
     position: static;
   }
@@ -234,10 +243,17 @@ a.toolbar-menu__trigger,
     padding-block: var(--gin-spacing-m);
     padding-inline: var(--gin-toolbar-width-collapsed) 0;
     margin: 0;
-    transition: width var(--gin-transition);
     overflow: hidden;
   }
+}
 
+@media (min-width: 61em) and (prefers-reduced-motion: no-preference) {
+  .toolbar-menu-administration a.toolbar-menu__trigger {
+    transition: width var(--gin-transition);
+  }
+}
+
+@media (min-width: 61em) {
   .toolbar-menu-administration a.toolbar-menu__trigger, .toolbar-menu-administration a.toolbar-menu__trigger:active, .toolbar-menu-administration a.toolbar-menu__trigger:focus {
     background-color: transparent;
   }
@@ -257,6 +273,11 @@ a.toolbar-menu__trigger,
     border: 1px solid var(--gin-border-color);
     background: var(--gin-bg-layer) url("data:image/svg+xml,%3Csvg width='9' height='14' viewBox='0 0 9 14' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M 1.7109375,0.31445312 0.2890625,1.7226562 5.5917969,7.0761719 0.2890625,12.429688 1.7109375,13.837891 8.4082031,7.0761719 Z' fill='%23999999'/%3E%3C/svg%3E") no-repeat center center;
     background-size: 11px 11px;
+  }
+}
+
+@media (min-width: 61em) and (prefers-reduced-motion: no-preference) {
+  .toolbar-menu-administration a.toolbar-menu__trigger::before {
     transition: transform var(--gin-transition);
   }
 }
@@ -380,9 +401,17 @@ a.toolbar-menu__trigger,
     margin-inline: var(--gin-spacing-xs);
     border-radius: var(--gin-border-m);
     overflow: hidden;
+  }
+}
+
+@media (min-width: 61em) and (prefers-reduced-motion: no-preference) {
+  .toolbar-menu-administration > .toolbar-menu > .menu-item > .toolbar-icon,
+  .toolbar-menu-administration > .toolbar-menu > .menu-item > .toolbar-box > .toolbar-icon {
     transition: width var(--gin-transition);
   }
+}
 
+@media (min-width: 61em) {
   .toolbar-menu-administration > .toolbar-menu > .menu-item > .toolbar-icon:hover,
   .toolbar-menu-administration > .toolbar-menu > .menu-item > .toolbar-box > .toolbar-icon:hover {
     color: var(--gin-color-primary);
@@ -418,11 +447,18 @@ a.toolbar-menu__trigger,
     max-width: calc(100% - var(--gin-toolbar-height));
     box-shadow: none;
     border-inline-start: 1px solid var(--gin-border-color-layer);
-    transition: margin-inline-start var(--gin-transition);
     overflow-y: auto;
     overflow-x: hidden;
   }
+}
+
+@media (min-width: 61em) and (prefers-reduced-motion: no-preference) {
+  .toolbar-menu-administration > .toolbar-menu > .menu-item .toolbar-menu {
+    transition: margin-inline-start var(--gin-transition);
+  }
+}
 
+@media (min-width: 61em) {
   .toolbar-menu-administration > .toolbar-menu > .menu-item .toolbar-menu, [dir] .toolbar-menu-administration > .toolbar-menu > .menu-item .toolbar-menu {
     position: fixed;
     width: var(--gin-toolbar-width);
diff --git a/dist/css/theme/dialog.css b/dist/css/theme/dialog.css
index f26f49868..ebde88013 100644
--- a/dist/css/theme/dialog.css
+++ b/dist/css/theme/dialog.css
@@ -98,7 +98,15 @@
   color: var(--gin-color-primary);
   background-color: transparent;
   box-shadow: none;
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .ui-dialog .button,
+  .ui-dialog .project__action_button,
+  .ui-dialog .dropbutton__item:first-of-type > *,
+  .ui-dialog .dropbutton__toggle {
+    transition: var(--gin-transition);
+  }
 }
 
 @media (min-width: 80em) {
@@ -151,7 +159,16 @@
   border: 2px solid var(--gin-color-primary) !important;
   border-radius: var(--gin-border-m);
   box-shadow: 0 1px 2px var(--gin-color-primary-light);
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .ui-dialog .button,
+  .ui-dialog .button:not(:focus),
+  .ui-dialog .form-actions .button,
+  .ui-dialog .project__action_button,
+  .ui-dialog .action-link--icon-trash.action-link {
+    transition: var(--gin-transition);
+  }
 }
 
 .ui-dialog .button:hover,
@@ -323,7 +340,12 @@
   border: 1px solid var(--gin-border-color-form-element);
   border-radius: var(--gin-border-m);
   box-sizing: border-box;
-  transition: var(--gin-transition);
+}
+
+@media (prefers-reduced-motion: no-preference) {
+  .ui-dialog .form-element {
+    transition: var(--gin-transition);
+  }
 }
 
 .ui-dialog .form-element:hover {
@@ -480,7 +502,6 @@
   height: 100%;
   background-color: #fff;
   border-radius: 21px;
-  transition: transform .3s;
 }
 
 [dir="ltr"] .ui-dialog :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::before {
@@ -491,6 +512,12 @@
   transform: translateX(16px);
 }
 
+@media (prefers-reduced-motion: no-preference) {
+  .ui-dialog :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::before {
+    transition: transform .3s;
+  }
+}
+
 .gin--dark-mode .ui-dialog :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::before {
   background-color: var(--gin-border-color-form-element);
 }
@@ -516,7 +543,6 @@
             mask-position: 17px 2px;
     -webkit-mask-repeat: no-repeat;
             mask-repeat: no-repeat;
-    transition: transform .3s;
   }
 
   [dir="ltr"] .ui-dialog :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::after {
@@ -528,6 +554,12 @@
   }
 }
 
+@media (forced-colors: active) and (prefers-reduced-motion: no-preference) {
+  .ui-dialog :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input::after {
+    transition: transform .3s;
+  }
+}
+
 .ui-dialog :not(.form-checkboxes):not(td):not(.tabledrag-cell-content__item):not(.media-library-item__click-to-select-checkbox):not(.field-content):not(.ajax-new-content):not(.tablesaw-cell-content) > .form-type--checkbox input:disabled {
   cursor: not-allowed;
 }
diff --git a/styles/base/_button.scss b/styles/base/_button.scss
index f492cc9b3..b0845e485 100644
--- a/styles/base/_button.scss
+++ b/styles/base/_button.scss
@@ -7,7 +7,9 @@
   color: var(--gin-color-primary);
   background-color: transparent;
   box-shadow: none;
-  transition: var(--gin-transition);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: var(--gin-transition);
+  }
 
   @include mq(wide) {
     font-size: var(--gin-font-size);
@@ -37,7 +39,9 @@
   border: 2px solid var(--gin-color-primary) !important;
   border-radius: var(--gin-border-m);
   box-shadow: 0 1px 2px var(--gin-color-primary-light);
-  transition: var(--gin-transition);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: var(--gin-transition);
+  }
 
   &:hover {
     background-color: var(--gin-color-primary-hover);
diff --git a/styles/base/_form.scss b/styles/base/_form.scss
index b46bd5b6d..296c32db5 100644
--- a/styles/base/_form.scss
+++ b/styles/base/_form.scss
@@ -8,7 +8,9 @@
   border: 1px solid var(--gin-border-color-form-element);
   border-radius: var(--gin-border-m);
   box-sizing: border-box;
-  transition: var(--gin-transition);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: var(--gin-transition);
+  }
 
   &:hover {
     border-color: var(--gin-color-text);
@@ -169,7 +171,9 @@
       background-color: #fff;
       border-radius: 21px;
       transform: translateX(-16px);
-      transition: transform .3s;
+      @media (prefers-reduced-motion: no-preference) {
+        transition: transform .3s;
+      }
 
       .gin--dark-mode & {
         background-color: var(--gin-border-color-form-element);
@@ -192,7 +196,9 @@
         mask-position: 17px 2px;
         mask-repeat: no-repeat;
         transform: translateX(-16px);
-        transition: transform .3s;
+        @media (prefers-reduced-motion: no-preference) {
+          transition: transform .3s;
+        }
       }
     }
 
diff --git a/styles/base/_messages.scss b/styles/base/_messages.scss
index e40531c04..a253ea7ac 100644
--- a/styles/base/_messages.scss
+++ b/styles/base/_messages.scss
@@ -3,7 +3,9 @@
   padding: var(--gin-spacing-m);
   border: 2px solid transparent;
   border-radius: var(--gin-border-l);
-  transition: opacity var(--gin-transition-fast);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: opacity var(--gin-transition-fast);
+  }
   opacity: 1;
 
   .gin--dark-mode & {
@@ -68,7 +70,9 @@
     text-indent: -99999px;
     border-radius: var(--gin-border-m);
     border-color: transparent !important;
-    transition: var(--gin-transition);
+    @media (prefers-reduced-motion: no-preference) {
+      transition: var(--gin-transition);
+    }
     box-shadow: none;
 
     &:hover:not(:focus) {
diff --git a/styles/base/_regions.scss b/styles/base/_regions.scss
index b8e82f213..cd22375e2 100644
--- a/styles/base/_regions.scss
+++ b/styles/base/_regions.scss
@@ -9,7 +9,9 @@
   min-height: var(--gin-height-sticky);
   background: var(--gin-bg-app);
   box-sizing: border-box;
-  transition: var(--gin-transition);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: var(--gin-transition);
+  }
 
   .gin--edit-form & {
     inset-block-start: calc(var(--gin-toolbar-y-offset) - var(--gin-spacing-xxl) - var(--gin-spacing-xxs));
diff --git a/styles/base/_title.scss b/styles/base/_title.scss
index 4534adbf6..76a5376fa 100644
--- a/styles/base/_title.scss
+++ b/styles/base/_title.scss
@@ -15,7 +15,9 @@
   text-overflow: ellipsis;
   padding-inline-end: .25em;
   max-width: 90%;
-  transition: font-size 0.25s ease;
+  @media (prefers-reduced-motion: no-preference) {
+    transition: font-size 0.25s ease;
+  }
 
   @include mq(large) {
     .region-sticky--is-sticky & {
diff --git a/styles/components/autocomplete.scss b/styles/components/autocomplete.scss
index 586106dbf..9ea107f01 100644
--- a/styles/components/autocomplete.scss
+++ b/styles/components/autocomplete.scss
@@ -37,7 +37,9 @@ a.ui-button:active,
 }
 
 .js .form-autocomplete {
-  transition: var(--gin-transition), background-position none;
+  @media (prefers-reduced-motion: no-preference) {
+    transition: var(--gin-transition), background-position none;
+  }
 }
 
 .js .form-autocomplete.is-autocompleting,
@@ -81,7 +83,9 @@ div.autocomplete-deluxe-multiple {
   border: 1px solid var(--gin-border-color-form-element);
   border-radius: var(--gin-border-m);
   box-sizing: border-box;
-  transition: var(--gin-transition);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: var(--gin-transition);
+  }
 }
 
 .autocomplete-deluxe-container {
diff --git a/styles/components/edit_form.scss b/styles/components/edit_form.scss
index 41adcac44..a9dd6efd1 100644
--- a/styles/components/edit_form.scss
+++ b/styles/components/edit_form.scss
@@ -5,7 +5,9 @@
     padding-inline-end: var(--gin-sidebar-offset);
 
     .dialog-off-canvas-main-canvas {
-      transition: padding-inline-start var(--gin-transition-fast);
+      @media (prefers-reduced-motion: no-preference) {
+        transition: padding-inline-start var(--gin-transition-fast);
+      }
     }
 
     // If off-canvas dialog is shown
@@ -109,7 +111,9 @@
       -webkit-overflow-scrolling: touch;
       background:var(--gin-bg-layer);
       border-inline-start: 1px solid var(--gin-border-color-layer);
-      transition: all var(--gin-transition-fast);
+      @media (prefers-reduced-motion: no-preference) {
+        transition: all var(--gin-transition-fast);
+      }
 
       .gin--dark-mode & {
         box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);
diff --git a/styles/components/more_actions.scss b/styles/components/more_actions.scss
index 390508aa4..c1bb4f7e6 100644
--- a/styles/components/more_actions.scss
+++ b/styles/components/more_actions.scss
@@ -31,7 +31,9 @@
       border-radius: var(--gin-border-l);
       box-sizing: border-box;
       box-shadow: var(--gin-shadow-l2);
-      transition: opacity var(--gin-transition-fast);
+      @media (prefers-reduced-motion: no-preference) {
+        transition: opacity var(--gin-transition-fast);
+      }
 
       // Increase order.
       .action-link.action-link,
@@ -87,7 +89,9 @@
       width: 32px;
       margin-inline: calc(var(--gin-spacing-xxs) * -1);
       border-radius: var(--gin-border-m);
-      transition: background var(--gin-transition-fast);
+      @media (prefers-reduced-motion: no-preference) {
+        transition: background var(--gin-transition-fast);
+      }
 
       &::before {
         display: inline-block;
diff --git a/styles/components/node_preview.scss b/styles/components/node_preview.scss
index c2b4c4a6a..a52b66bba 100644
--- a/styles/components/node_preview.scss
+++ b/styles/components/node_preview.scss
@@ -118,7 +118,9 @@
     border: 1px solid var(--gin-border-color-form-element);
     border-radius: var(--gin-border-s);
     box-sizing: border-box;
-    transition: var(--gin-transition);
+    @media (prefers-reduced-motion: no-preference) {
+      transition: var(--gin-transition);
+    }
   }
 
   .js-hide {
diff --git a/styles/components/project_browser.scss b/styles/components/project_browser.scss
index 500b390db..f7ef3e501 100644
--- a/styles/components/project_browser.scss
+++ b/styles/components/project_browser.scss
@@ -146,7 +146,9 @@
       background-color: var(--gin-bg-input);
       border: 1px solid var(--gin-border-color-form-element);
       border-radius: var(--gin-border-m);
-      transition: var(--gin-transition);
+      @media (prefers-reduced-motion: no-preference) {
+        transition: var(--gin-transition);
+      }
     }
 
     &__checkbox-label {
diff --git a/styles/components/responsive_preview.scss b/styles/components/responsive_preview.scss
index b05151691..6c16cc622 100644
--- a/styles/components/responsive_preview.scss
+++ b/styles/components/responsive_preview.scss
@@ -37,7 +37,9 @@
         mask-position: center center;
         mask-repeat: no-repeat;
         box-sizing: border-box;
-        transition: transform .2s var(--gin-easing);
+        @media (prefers-reduced-motion: no-preference) {
+          transition: transform .2s var(--gin-easing);
+        }
       }
     }
 
diff --git a/styles/components/sidebar.scss b/styles/components/sidebar.scss
index ebaa58aea..4f0668ce5 100644
--- a/styles/components/sidebar.scss
+++ b/styles/components/sidebar.scss
@@ -8,7 +8,9 @@
   display: block;
   width: 2px;
   height: 100%;
-  transition: var(--gin-transition-fast);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: var(--gin-transition-fast);
+  }
 
   &:hover {
     background-color: var(--gin-border-color-table);
@@ -20,7 +22,9 @@
 }
 
 .layout-region-node-secondary {
-  transition: transform var(--gin-transition-fast);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: transform var(--gin-transition-fast);
+  }
 
   @include mq($to: medium) {
     --gin-sidebar-width: var(--gin-sidebar-small-width);
@@ -64,7 +68,9 @@ body[data-meta-sidebar=open] {
     height: 32px;
     width: 32px;
     border-radius: var(--gin-border-m);
-    transition: background var(--gin-transition-fast);
+    @media (prefers-reduced-motion: no-preference) {
+      transition: background var(--gin-transition-fast);
+    }
 
     &::before {
       content: "";
@@ -100,7 +106,9 @@ body[data-meta-sidebar=open] {
     width: 32px;
     height: 32px;
     border-radius: var(--gin-border-m);
-    transition: background var(--gin-transition-fast);
+    @media (prefers-reduced-motion: no-preference) {
+      transition: background var(--gin-transition-fast);
+    }
 
     &::before {
       display: inline-block;
diff --git a/styles/components/tabs.scss b/styles/components/tabs.scss
index a702040f5..70c19c59b 100644
--- a/styles/components/tabs.scss
+++ b/styles/components/tabs.scss
@@ -120,7 +120,9 @@
     width: 100%;
     max-width: calc(100% + var(--gin-spacing-xs));
     border-block-end: 1px solid var(--gin-border-color);
-    transition: var(--gin-transition);
+    @media (prefers-reduced-motion: no-preference) {
+      transition: var(--gin-transition);
+    }
 
     @include mq(small) {
       inset-inline-start: var(--gin-spacing-xs);
diff --git a/styles/components/tooltip.scss b/styles/components/tooltip.scss
index db1a97238..39ab58e68 100644
--- a/styles/components/tooltip.scss
+++ b/styles/components/tooltip.scss
@@ -19,7 +19,9 @@
 .gin-tooltip {
   visibility: hidden;
   opacity: 0;
-  transition: var(--gin-transition-fast);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: var(--gin-transition-fast);
+  }
 }
 
 [data-gin-tooltip]:hover + .gin-tooltip,
diff --git a/styles/layout/navigation.scss b/styles/layout/navigation.scss
index 1c2a0ac1b..b6e4139d7 100644
--- a/styles/layout/navigation.scss
+++ b/styles/layout/navigation.scss
@@ -51,7 +51,9 @@ body.gin--navigation {
 // Set transtion to Gin's to avoid different speeds.
 .admin-toolbar ~ .dialog-off-canvas-main-canvas,
 .gin--navigation .gin-secondary-toolbar--frontend {
-  transition: margin-inline-start var(--gin-transition-fast), margin-inline-start var(--gin-transition-fast);
+  @media (prefers-reduced-motion: no-preference) {
+    transition: margin-inline-start var(--gin-transition-fast), margin-inline-start var(--gin-transition-fast);
+  }
 }
 
 // ----------
@@ -325,7 +327,9 @@ button.toolbar-link--sidebar-toggle {
     opacity: .75;
     position: relative;
     mask-size: var(--space-s) var(--space-s);
-    transition: transform var(--gin-transition);
+    @media (prefers-reduced-motion: no-preference) {
+      transition: transform var(--gin-transition);
+    }
   }
 
   &:hover::before,
diff --git a/styles/layout/toolbar.scss b/styles/layout/toolbar.scss
index ec6acb56a..fadf0f6dd 100644
--- a/styles/layout/toolbar.scss
+++ b/styles/layout/toolbar.scss
@@ -112,7 +112,9 @@
       @include mq(medium) {
         height: 74px;
         margin-block-end: 6px;
-        transition: top var(--gin-transition);
+        @media (prefers-reduced-motion: no-preference) {
+          transition: top var(--gin-transition);
+        }
       }
 
       &::before {
@@ -217,7 +219,9 @@ a.toolbar-menu__trigger,
   }
 
   .toolbar-fixed {
-    transition: var(--gin-transition);
+    @media (prefers-reduced-motion: no-preference) {
+      transition: var(--gin-transition);
+    }
   }
 
   .toolbar .toolbar-box {
@@ -244,7 +248,9 @@ a.toolbar-menu__trigger,
     padding-block: var(--gin-spacing-m);
     padding-inline: var(--gin-toolbar-width-collapsed) 0;
     margin: 0;
-    transition: width var(--gin-transition);
+    @media (prefers-reduced-motion: no-preference) {
+      transition: width var(--gin-transition);
+    }
     overflow: hidden;
 
     &, &:active, &:focus {
@@ -269,7 +275,10 @@ a.toolbar-menu__trigger,
       border: 1px solid var(--gin-border-color);
       background: var(--gin-bg-layer) url("data:image/svg+xml,%3Csvg width='9' height='14' viewBox='0 0 9 14' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M 1.7109375,0.31445312 0.2890625,1.7226562 5.5917969,7.0761719 0.2890625,12.429688 1.7109375,13.837891 8.4082031,7.0761719 Z' fill='%23999999'/%3E%3C/svg%3E") no-repeat center center;
       background-size: 11px 11px;
-      transition: transform var(--gin-transition);
+
+      @media (prefers-reduced-motion: no-preference) {
+        transition: transform var(--gin-transition);
+      }
 
       @media (forced-colors: active) {
         background: var(--gin-bg-layer) url("data:image/svg+xml,%3Csvg width='9' height='14' viewBox='0 0 9 14' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M 1.7109375,0.31445312 0.2890625,1.7226562 5.5917969,7.0761719 0.2890625,12.429688 1.7109375,13.837891 8.4082031,7.0761719 Z' fill='linkText'/%3E%3C/svg%3E") no-repeat center center;
@@ -391,7 +400,9 @@ a.toolbar-menu__trigger,
           margin-inline: var(--gin-spacing-xs);
           border-radius: var(--gin-border-m);
           overflow: hidden;
-          transition: width var(--gin-transition);
+          @media (prefers-reduced-motion: no-preference) {
+            transition: width var(--gin-transition);
+          }
 
           &:hover {
             color: var(--gin-color-primary);
@@ -424,7 +435,9 @@ a.toolbar-menu__trigger,
           max-width: calc(100% - var(--gin-toolbar-height));
           box-shadow: none;
           border-inline-start: 1px solid var(--gin-border-color-layer);
-          transition: margin-inline-start var(--gin-transition);
+          @media (prefers-reduced-motion: no-preference) {
+            transition: margin-inline-start var(--gin-transition);
+          }
           overflow-y: auto;
           overflow-x: hidden;
 
diff --git a/styles/navigation/admin-toolbar.scss b/styles/navigation/admin-toolbar.scss
index f6545a339..9097fef74 100644
--- a/styles/navigation/admin-toolbar.scss
+++ b/styles/navigation/admin-toolbar.scss
@@ -54,7 +54,9 @@
     // Gin Custom start ---------------------
     @include mq(medium) {
       margin-inline-start: var(--drupal-displace-offset-left, var(--sidebar-width));
-      transition: margin-inline-start 0.2s linear;
+      @media (prefers-reduced-motion: no-preference) {
+        transition: margin-inline-start 0.2s linear;
+      }
     }
     // Gin Custom end ------------------------
   }
diff --git a/styles/navigation/toolbar-link.scss b/styles/navigation/toolbar-link.scss
index 8b83b78d3..0feab637d 100644
--- a/styles/navigation/toolbar-link.scss
+++ b/styles/navigation/toolbar-link.scss
@@ -140,7 +140,9 @@ html:not(.admin-toolbar-expanded) {
 
   & span {
     opacity: 1;
-    transition: opacity .4s ease;
+    @media (prefers-reduced-motion: no-preference) {
+      transition: opacity .4s ease;
+    }
   }
 
   &::before {
-- 
GitLab