diff --git a/.stylelintrc.json b/.stylelintrc.json
index 7bf7ad0..b9c6b34 100644
--- a/.stylelintrc.json
+++ b/.stylelintrc.json
@@ -2,9 +2,11 @@
   "extends": "stylelint-config-standard",
   "plugins": [
     "stylelint-no-browser-hacks/lib",
+    "stylelint-use-logical",
     "stylelint-order"
   ],
   "rules": {
+    "csstools/use-logical": true,
     "comment-empty-line-before": null,
     "function-linear-gradient-no-nonstandard-direction": null,
     "function-whitespace-after": null,
@@ -110,15 +112,15 @@
       "min-height",
       "max-height",
       "margin",
-      "margin-top",
-      "margin-right",
-      "margin-bottom",
-      "margin-left",
+      "margin-block-start",
+      "margin-block-end",
+      "margin-inline-start",
+      "margin-inline-end",
       "padding",
-      "padding-top",
-      "padding-right",
-      "padding-bottom",
-      "padding-left",
+      "padding-block-start",
+      "padding-block-end",
+      "padding-inline-start",
+      "padding-inline-end",
 
       "table-layout",
       "-webkit-columns",
@@ -309,37 +311,37 @@
       "border-width",
       "border-style",
       "border-color",
-      "border-top",
-      "border-top-width",
-      "border-top-style",
-      "border-top-color",
-      "border-right",
-      "border-right-width",
-      "border-right-style",
-      "border-right-color",
-      "border-bottom",
-      "border-bottom-width",
-      "border-bottom-style",
-      "border-bottom-color",
-      "border-left",
-      "border-left-width",
-      "border-left-style",
-      "border-left-color",
+      "border-block-start",
+      "border-block-start-width",
+      "border-block-start-style",
+      "border-block-start-color",
+      "border-inline-end",
+      "border-inline-end-width",
+      "border-inline-end-style",
+      "border-inline-end-color",
+      "border-block-end",
+      "border-block-end-width",
+      "border-block-end-style",
+      "border-block-end-color",
+      "border-inline-start",
+      "border-inline-start-width",
+      "border-inline-start-style",
+      "border-inline-start-color",
       "-webkit-border-radius",
       "-moz-border-radius",
       "border-radius",
-      "-webkit-border-top-left-radius",
+      "-webkit-border-block-start-left-radius",
       "-moz-border-radius-topleft",
-      "border-top-left-radius",
-      "-webkit-border-top-right-radius",
+      "border-block-start-left-radius",
+      "-webkit-border-block-start-right-radius",
       "-moz-border-radius-topright",
-      "border-top-right-radius",
-      "-webkit-border-bottom-right-radius",
+      "border-block-start-right-radius",
+      "-webkit-border-block-end-right-radius",
       "-moz-border-radius-bottomright",
-      "border-bottom-right-radius",
-      "-webkit-border-bottom-left-radius",
+      "border-block-end-right-radius",
+      "-webkit-border-block-end-left-radius",
       "-moz-border-radius-bottomleft",
-      "border-bottom-left-radius",
+      "border-block-end-left-radius",
       "-webkit-border-image",
       "-moz-border-image",
       "-o-border-image",
diff --git a/.tugboat/config.yml b/.tugboat/config.yml
index 1b630b0..5c146d2 100644
--- a/.tugboat/config.yml
+++ b/.tugboat/config.yml
@@ -91,6 +91,22 @@ services:
         $TUGBOAT_ROOT/.tugboat/build.sh preloaded
         $TUGBOAT_ROOT/.tugboat/build.sh minimal
         $TUGBOAT_ROOT/.tugboat/build.sh standard
+    visualdiffs:
+      - /
+      - /node/7
+      - /node/6
+      - /node/4
+      - /node/1
+      - /node/3
+      - /form/job-application
+      - /form/registration
+      - /form/session-evaluation
+      - /form/user-profile
+      - /grid-view
+      - /node/31
+      - /table
+      - /contact
+      - /search/node?keys=drupal
 
   mysql:
     image: tugboatqa/mariadb
diff --git a/css/base/base.css b/css/base/base.css
index 9926703..bd2be7c 100644
--- a/css/base/base.css
+++ b/css/base/base.css
@@ -93,22 +93,18 @@ sans-serif;
 }
 
 body {
-  color: #313637;
-}
-
-[dir] body {
   margin: 0;
+  color: #313637;
   background-color: #f7f9fa;
   background-image: url("../../images/background.svg");
-}
-
-[dir=ltr] body {
   background-position: top left;
 }
 
-[dir=rtl] body {
-  background-position: top right;
-}
+/* LTR */
+
+[dir="rtl"] body {
+    background-position: top right;
+  }
 
 body.js-fixed {
     position: fixed;
@@ -133,6 +129,8 @@ video {
 }
 
 h1 {
+  margin-top: 18px;
+  margin-bottom: 18px;
   letter-spacing: -0.01em;
   color: #0d1214;
   font-size: 1.5rem;
@@ -140,25 +138,19 @@ h1 {
   line-height: 1.6875rem;
 }
 
-[dir] h1 {
-  margin-top: 18px;
-  margin-bottom: 18px;
-}
-
 @media (min-width: 700px) {
 
 h1 {
+    margin-top: 36px;
+    margin-bottom: 36px;
     font-size: 3.75rem;
     line-height: 4.5rem
 }
-
-[dir] h1 {
-    margin-top: 36px;
-    margin-bottom: 36px
-}
   }
 
 h2 {
+  margin-top: 18px;
+  margin-bottom: 18px;
   letter-spacing: -0.01em;
   color: #0d1214;
   font-size: 1.5rem;
@@ -166,37 +158,53 @@ h2 {
   line-height: 1.6875rem;
 }
 
-[dir] h2 {
-  margin-top: 18px;
-  margin-bottom: 18px;
-}
-
 @media (min-width: 700px) {
 
 h2 {
+    margin-top: 36px;
+    margin-bottom: 36px;
     font-size: 2.25rem;
     line-height: 3.375rem
 }
+  }
 
-[dir] h2 {
-    margin-top: 36px;
-    margin-bottom: 36px
+[dir="ltr"] ul {
+  margin-left: 1.5em;
+}
+
+[dir="rtl"] ul {
+  margin-right: 1.5em;
+}
+
+[dir="ltr"] ul {
+  margin-right: 0;
+}
+
+[dir="rtl"] ul {
+  margin-left: 0;
+}
+
+[dir="ltr"] ul {
+  padding-left: 0;
+}
+
+[dir="rtl"] ul {
+  padding-right: 0;
 }
-  }
 
 ul {
+  margin-top: 0.25em;
+  margin-bottom: 0.25em;
   list-style-type: disc;
   list-style-image: none;
 }
 
-[dir=ltr] ul {
-  margin: 0.25em 0 0.25em 1.5em;
-  padding-left: 0;
+[dir="ltr"] .overlay {
+  left: 0;
 }
 
-[dir=rtl] ul {
-  margin: 0.25em 1.5em 0.25em 0;
-  padding-right: 0;
+[dir="rtl"] .overlay {
+  right: 0;
 }
 
 .overlay {
@@ -206,20 +214,9 @@ ul {
   width: 100%;
   height: 100vh;
   opacity: 0.2;
-}
-
-[dir] .overlay {
   background: #0d77b5;
 }
 
-[dir=ltr] .overlay {
-  left: 0;
-}
-
-[dir=rtl] .overlay {
-  right: 0;
-}
-
 .js-overlay-active .overlay {
     display: block;
   }
diff --git a/css/base/base.pcss.css b/css/base/base.pcss.css
index 68f4d0d..1c8f0f8 100644
--- a/css/base/base.pcss.css
+++ b/css/base/base.pcss.css
@@ -24,7 +24,11 @@ body {
   color: var(--color--gray-10);
   background-color: var(--color--gray-95);
   background-image: url("../../images/background.svg");
-  background-position: top left;
+  background-position: top left; /* LTR */
+
+  [dir="rtl"] & {
+    background-position: top right;
+  }
 
   &.js-fixed {
     position: fixed;
@@ -50,8 +54,7 @@ video {
 }
 
 h1 {
-  margin-top: var(--sp);
-  margin-bottom: var(--sp);
+  margin-block: var(--sp);
   letter-spacing: -0.01em;
   color: var(--color--gray-0);
   font-size: 24px;
@@ -59,16 +62,14 @@ h1 {
   line-height: var(--sp1-5);
 
   @media (--md) {
-    margin-top: var(--sp2);
-    margin-bottom: var(--sp2);
+    margin-block: var(--sp2);
     font-size: 60px;
     line-height: var(--sp4);
   }
 }
 
 h2 {
-  margin-top: var(--sp);
-  margin-bottom: var(--sp);
+  margin-block: var(--sp);
   letter-spacing: -0.01em;
   color: var(--color--gray-0);
   font-size: 24px;
@@ -76,24 +77,26 @@ h2 {
   line-height: var(--sp1-5);
 
   @media (--md) {
-    margin-top: var(--sp2);
-    margin-bottom: var(--sp2);
+    margin-block: var(--sp2);
     font-size: 36px;
     line-height: var(--sp3);
   }
 }
 
 ul {
-  margin: 0.25em 0 0.25em 1.5em;
-  padding-left: 0;
+  margin-block-start: 0.25em;
+  margin-block-end: 0.25em;
+  margin-inline-start: 1.5em;
+  margin-inline-end: 0;
+  padding-inline-start: 0;
   list-style-type: disc;
   list-style-image: none;
 }
 
 .overlay {
   position: fixed;
-  top: 0;
-  left: 0;
+  inset-block-start: 0;
+  inset-inline-start: 0;
   display: none;
   width: 100%;
   height: 100vh;
diff --git a/css/components/_debug.css b/css/components/_debug.css
index fc56abd..c25a34c 100644
--- a/css/components/_debug.css
+++ b/css/components/_debug.css
@@ -76,62 +76,73 @@
   /* Form */
 }
 
+[dir="ltr"] .olivero-debug {
+  right: 0;
+}
+
+[dir="rtl"] .olivero-debug {
+  left: 0;
+}
+
+[dir="ltr"] .olivero-debug {
+  padding-left: 27px;
+}
+
+[dir="rtl"] .olivero-debug {
+  padding-right: 27px;
+}
+
+[dir="ltr"] .olivero-debug {
+  padding-right: 27px;
+}
+
+[dir="rtl"] .olivero-debug {
+  padding-left: 27px;
+}
+
 .olivero-debug {
   position: fixed;
   bottom: 0;
   overflow: auto;
   max-width: 100%;
+  padding-top: 18px;
+  padding-bottom: 18px;
   -webkit-user-select: none;
   -moz-user-select: none;
   -ms-user-select: none;
   user-select: none;
   color: #fff;
-}
-
-[dir] .olivero-debug {
-  padding: 18px 27px;
   border: solid 1px transparent;
   background-color: rgba(0, 0, 0, 0.5);
 }
 
-[dir=ltr] .olivero-debug {
-  right: 0;
-}
-
-[dir=rtl] .olivero-debug {
-  left: 0;
-}
-
 .olivero-debug a {
     color: inherit;
   }
 
 .olivero-debug label {
     width: 300px;
-    vertical-align: top;
-    font-size: 1.125rem;
-  }
-
-[dir] .olivero-debug label {
     margin-top: 5px;
     padding: 5px 0;
     cursor: pointer;
+    vertical-align: top;
+    font-size: 1.125rem;
   }
 
-[dir] .olivero-debug input[type="checkbox"] {
-    margin-top: 10px;
-    cursor: pointer;
-  }
-
-[dir=ltr] .olivero-debug input[type="checkbox"] {
-  margin-right: 10px;
-  }
+[dir="ltr"] .olivero-debug input[type="checkbox"] {
+    margin-right: 10px;
+}
 
-[dir=rtl] .olivero-debug input[type="checkbox"] {
+[dir="rtl"] .olivero-debug input[type="checkbox"] {
     margin-left: 10px;
+}
+
+.olivero-debug input[type="checkbox"] {
+    margin-top: 10px;
+    cursor: pointer;
   }
 
-[dir] .olivero-debug .description {
+.olivero-debug .description {
     margin-top: 18px;
   }
 
@@ -139,56 +150,40 @@
   display: flex;
 }
 
+[dir="ltr"] .olivero-debug__close {
+  right: 0;
+}
+
+[dir="rtl"] .olivero-debug__close {
+  left: 0;
+}
+
 .olivero-debug__close {
   position: absolute;
   top: 0;
   display: block;
   width: 40px;
   height: 40px;
-  text-indent: -999px;
-}
-
-[dir] .olivero-debug__close {
   cursor: pointer;
+  text-indent: -999px;
   border: 0;
   background: transparent;
 }
 
-[dir=ltr] .olivero-debug__close {
-  right: 0;
-}
-
-[dir=rtl] .olivero-debug__close {
-  left: 0;
-}
-
 .olivero-debug__close:before,
   .olivero-debug__close:after {
     position: absolute;
+    /* stylelint-disable csstools/use-logical */
     top: 50%;
+    left: 50%;
+    /* stylelint-enable csstools/use-logical */
     width: 18px;
     height: 3px;
     content: "";
-  }
-
-[dir] .olivero-debug__close:before, [dir] .olivero-debug__close:after {
+    transform: translate(-50%, -50%) rotate(45deg);
     background-color: #fff;
   }
 
-[dir=ltr] .olivero-debug__close:before, [dir=ltr] .olivero-debug__close:after {
-  left: 50%;
-  transform: translate(-50%, -50%) rotate(45deg);
-  }
-
-[dir=rtl] .olivero-debug__close:before, [dir=rtl] .olivero-debug__close:after {
-    right: 50%;
-    transform: translate(50%, -50%) rotate(-45deg);
-  }
-
-[dir=ltr] .olivero-debug__close:after {
-  transform: translate(-50%, -50%) rotate(-45deg);
-  }
-
-[dir=rtl] .olivero-debug__close:after {
-    transform: translate(50%, -50%) rotate(45deg);
+.olivero-debug__close:after {
+    transform: translate(-50%, -50%) rotate(-45deg);
   }
diff --git a/css/components/_debug.pcss.css b/css/components/_debug.pcss.css
index 7cdc65e..314bb14 100644
--- a/css/components/_debug.pcss.css
+++ b/css/components/_debug.pcss.css
@@ -7,11 +7,13 @@
 
 .olivero-debug {
   position: fixed;
-  right: 0;
-  bottom: 0;
+  inset-block-end: 0;
+  inset-inline-end: 0;
   overflow: auto;
   max-width: 100%;
-  padding: var(--sp) var(--sp1-5);
+  padding-block: var(--sp);
+  padding-inline-start: var(--sp1-5);
+  padding-inline-end: var(--sp1-5);
   user-select: none;
   color: var(--color--white);
   border: solid 1px transparent;
@@ -23,7 +25,7 @@
 
   label {
     width: 300px;
-    margin-top: 5px;
+    margin-block-start: 5px;
     padding: 5px 0;
     cursor: pointer;
     vertical-align: top;
@@ -31,13 +33,13 @@
   }
 
   input[type="checkbox"] {
-    margin-top: 10px;
-    margin-right: 10px;
+    margin-block-start: 10px;
+    margin-inline-end: 10px;
     cursor: pointer;
   }
 
   .description {
-    margin-top: var(--sp);
+    margin-block-start: var(--sp);
   }
 }
 
@@ -47,8 +49,8 @@
 
 .olivero-debug__close {
   position: absolute;
-  top: 0;
-  right: 0;
+  inset-block-start: 0;
+  inset-inline-end: 0;
   display: block;
   width: 40px;
   height: 40px;
@@ -60,8 +62,10 @@
   &:before,
   &:after {
     position: absolute;
+    /* stylelint-disable csstools/use-logical */
     top: 50%;
     left: 50%;
+    /* stylelint-enable csstools/use-logical */
     width: 18px;
     height: 3px;
     content: "";
diff --git a/css/components/action-links.css b/css/components/action-links.css
index 894873f..30a17ce 100644
--- a/css/components/action-links.css
+++ b/css/components/action-links.css
@@ -67,13 +67,37 @@
 
   /* Form */
 }
+[dir="ltr"] .action-links {
+  margin-left: 0;
+}
+[dir="rtl"] .action-links {
+  margin-right: 0;
+}
+[dir="ltr"] .action-links {
+  margin-right: 0;
+}
+[dir="rtl"] .action-links {
+  margin-left: 0;
+}
+[dir="ltr"] .action-links {
+  padding-left: 0;
+}
+[dir="rtl"] .action-links {
+  padding-right: 0;
+}
+[dir="ltr"] .action-links {
+  padding-right: 0;
+}
+[dir="rtl"] .action-links {
+  padding-left: 0;
+}
 .action-links {
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-top: 0;
+  padding-bottom: 0;
   list-style: none;
 }
-[dir] .action-links {
-  margin: 0;
-  padding: 0;
-}
 .action-links li {
     display: inline-block;
   }
diff --git a/css/components/action-links.pcss.css b/css/components/action-links.pcss.css
index 41e423d..26551d1 100644
--- a/css/components/action-links.pcss.css
+++ b/css/components/action-links.pcss.css
@@ -5,8 +5,12 @@
 @import "../base/variables.pcss.css";
 
 .action-links {
-  margin: 0;
-  padding: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 
   li {
diff --git a/css/components/ajax-progress.module.css b/css/components/ajax-progress.module.css
index bc8b31c..8b9400a 100644
--- a/css/components/ajax-progress.module.css
+++ b/css/components/ajax-progress.module.css
@@ -84,35 +84,47 @@
  * Throbber.
  */
 
+[dir="ltr"] .ajax-progress-throbber {
+  margin-left: 9px;
+}
+
+[dir="rtl"] .ajax-progress-throbber {
+  margin-right: 9px;
+}
+
+[dir="ltr"] .ajax-progress-throbber {
+  margin-right: 9px;
+}
+
+[dir="rtl"] .ajax-progress-throbber {
+  margin-left: 9px;
+}
+
 .ajax-progress-throbber {
   position: relative;
   display: inline-flex;
   align-content: center;
   height: 1.125rem;
+  margin-top: -3px;
+  margin-bottom: 0;
   vertical-align: middle;
   white-space: nowrap;
   line-height: 1.125rem;
 }
 
-[dir] .ajax-progress-throbber {
-  margin: -3px 9px 0;
-}
-
 .ajax-progress-throbber .throbber {
   width: 1.125rem;
   height: 1.125rem;
-}
-
-[dir] .ajax-progress-throbber .throbber {
   border-width: 2px;
+  border-color: #2494db transparent #2494db #2494db;
 }
 
-[dir=ltr] .ajax-progress-throbber .throbber {
-  border-color: #2494db transparent #2494db #2494db;
+[dir="ltr"] .ajax-progress-throbber .message {
+  padding-left: 9px;
 }
 
-[dir=rtl] .ajax-progress-throbber .throbber {
-  border-color: #2494db #2494db #2494db transparent;
+[dir="rtl"] .ajax-progress-throbber .message {
+  padding-right: 9px;
 }
 
 .ajax-progress-throbber .message {
@@ -121,27 +133,24 @@
   font-weight: 400;
 }
 
-[dir=ltr] .ajax-progress-throbber .message {
-  padding-left: 9px;
-}
-
-[dir=rtl] .ajax-progress-throbber .message {
-  padding-right: 9px;
-}
-
 /**
  * Full screen throbber.
  */
 
+[dir="ltr"] .ajax-progress-fullscreen {
+  left: 50%;
+}
+
+[dir="rtl"] .ajax-progress-fullscreen {
+  right: 50%;
+}
+
 .ajax-progress-fullscreen {
   position: fixed;
   z-index: 1000;
   top: 50%;
   width: 3.5rem;
   height: 3.5rem;
-}
-
-[dir] .ajax-progress-fullscreen {
   margin: -1.75rem;
   border: 1px solid #afb8be;
   border-radius: 3.5rem;
@@ -149,12 +158,16 @@
   box-shadow: 0 0.25rem 0.625rem rgba(34, 35, 48, 0.1);
 }
 
-[dir=ltr] .ajax-progress-fullscreen {
-  left: 50%;
+[dir="rtl"] .ajax-progress-fullscreen {
+    box-shadow: 0 -0.25rem 0.625rem rgba(34, 35, 48, 0.1);
+  }
+
+[dir="ltr"] .ajax-progress-fullscreen:before {
+    left: 50%;
 }
 
-[dir=rtl] .ajax-progress-fullscreen {
-  right: 50%;
+[dir="rtl"] .ajax-progress-fullscreen:before {
+    right: 50%;
 }
 
 .ajax-progress-fullscreen:before {
@@ -162,40 +175,21 @@
     top: 50%;
     width: 1.75rem;
     height: 1.75rem;
-    content: "";
-  }
-
-[dir] .ajax-progress-fullscreen:before {
     margin: -0.875rem;
+    content: "";
     border-width: 3px;
   }
 
-[dir=ltr] .ajax-progress-fullscreen:before {
-  left: 50%;
-  }
-
-[dir=rtl] .ajax-progress-fullscreen:before {
-    right: 50%;
-  }
-
 /**
  * Common styles for all kinds of throbbers.
  */
 
-[dir] .ajax-progress-throbber .throbber, [dir] .ajax-progress-fullscreen:before {
-  border-radius: 50%;
-}
-
-[dir=ltr] .ajax-progress-throbber .throbber, [dir=ltr] .ajax-progress-fullscreen:before {
-  animation:  olivero-throbber-ltr 0.75s linear infinite;
+.ajax-progress-throbber .throbber,
+.ajax-progress-fullscreen:before {
+  animation: olivero-throbber 0.75s linear infinite;
   border-style: solid dotted solid solid;
   border-color: #2494db transparent #2494db #2494db;
-}
-
-[dir=rtl] .ajax-progress-throbber .throbber, [dir=rtl] .ajax-progress-fullscreen:before {
-  animation:  olivero-throbber-rtl 0.75s linear infinite;
-  border-style: solid solid solid dotted;
-  border-color: #2494db #2494db #2494db transparent;
+  border-radius: 50%;
 }
 
 /**
@@ -203,15 +197,15 @@
  * have a large margin set.
  */
 
-html[dir=ltr].js .button:not(.js-hide) + .ajax-progress-throbber {
+html[dir="ltr"].js .button:not(.js-hide) + .ajax-progress-throbber {
   margin-left: 0;
 }
 
-html[dir=rtl].js .button:not(.js-hide) + .ajax-progress-throbber {
+html[dir="rtl"].js .button:not(.js-hide) + .ajax-progress-throbber {
   margin-right: 0;
 }
 
-@keyframes olivero-throbber-ltr {
+@keyframes olivero-throbber {
   0% {
     transform: rotateZ(0);
   }
@@ -220,13 +214,3 @@ html[dir=rtl].js .button:not(.js-hide) + .ajax-progress-throbber {
     transform: rotateZ(360deg);
   }
 }
-
-@keyframes olivero-throbber-rtl {
-  0% {
-    transform: rotateZ(0);
-  }
-
-  100% {
-    transform: rotateZ(-360deg);
-  }
-}
diff --git a/css/components/ajax-progress.module.pcss.css b/css/components/ajax-progress.module.pcss.css
index 96bf667..f8612ad 100644
--- a/css/components/ajax-progress.module.pcss.css
+++ b/css/components/ajax-progress.module.pcss.css
@@ -17,7 +17,10 @@
   display: inline-flex;
   align-content: center;
   height: 1.125rem;
-  margin: -3px var(--sp0-5) 0;
+  margin-block-start: -3px;
+  margin-block-end: 0;
+  margin-inline-start: var(--sp0-5);
+  margin-inline-end: var(--sp0-5);
   vertical-align: middle;
   white-space: nowrap;
   line-height: 1.125rem;
@@ -32,7 +35,7 @@
 
 .ajax-progress-throbber .message {
   display: inline-block;
-  padding-left: var(--sp0-5);
+  padding-inline-start: var(--sp0-5);
   font-size: var(--font-size-s);
   font-weight: 400;
 }
@@ -43,8 +46,8 @@
 .ajax-progress-fullscreen {
   position: fixed;
   z-index: 1000;
-  top: 50%;
-  left: 50%;
+  inset-block-start: 50%;
+  inset-inline-start: 50%;
   width: 3.5rem;
   height: 3.5rem;
   margin: -1.75rem;
@@ -53,10 +56,14 @@
   background-color: var(--color--white);
   box-shadow: 0 0.25rem 0.625rem rgba(34, 35, 48, 0.1);
 
+  [dir="rtl"] & {
+    box-shadow: 0 -0.25rem 0.625rem rgba(34, 35, 48, 0.1);
+  }
+
   &:before {
     position: absolute;
-    top: 50%;
-    left: 50%;
+    inset-block-start: 50%;
+    inset-inline-start: 50%;
     width: 1.75rem;
     height: 1.75rem;
     margin: -0.875rem;
@@ -81,7 +88,7 @@
  * have a large margin set.
  */
 html.js .button:not(.js-hide) + .ajax-progress-throbber {
-  margin-left: 0;
+  margin-inline-start: 0;
 }
 
 @keyframes olivero-throbber {
diff --git a/css/components/autocomplete-loading.module.css b/css/components/autocomplete-loading.module.css
index 147d267..7ee20b5 100644
--- a/css/components/autocomplete-loading.module.css
+++ b/css/components/autocomplete-loading.module.css
@@ -79,82 +79,88 @@
 :root { /* 18 18 */
 }
 
-html[dir=ltr].js .form-autocomplete {
-  padding-right: 54px;
-  background:
-      url("../../images/magnifying-glass.svg") no-repeat right 18px top 16px,
-      linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
-  }
+html[dir="ltr"].js .form-autocomplete {
+    padding-right: 54px;
+}
 
-html[dir=rtl].js .form-autocomplete {
+html[dir="rtl"].js .form-autocomplete {
     padding-left: 54px;
+}
+
+html.js .form-autocomplete {
     background:
-      url("../../images/magnifying-glass.svg") no-repeat left 18px top 16px,
-      linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
+      url("../../images/magnifying-glass.svg") no-repeat right 18px top 16px,
+      linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
   }
 
-html[dir=ltr].js .form-autocomplete:hover {
-  background:
+html.js .form-autocomplete:hover {
+      background:
         url("../../images/magnifying-glass.svg") no-repeat right 18px top 16px,
         linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%),
         linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
     }
 
-html[dir=rtl].js .form-autocomplete:hover {
+html.js .form-autocomplete:focus {
       background:
-        url("../../images/magnifying-glass.svg") no-repeat left 18px top 16px,
-        linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%),
-        linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
-    }
-
-html[dir=ltr].js .form-autocomplete:focus {
-  background:
         url("../../images/magnifying-glass.svg") no-repeat right 18px top 16px,
         linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%),
         linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
     }
 
-html[dir=rtl].js .form-autocomplete:focus {
+html.js .form-autocomplete.ui-autocomplete-loading {
+      background:
+        url("../../images/throbber.svg") no-repeat right 18px top 16px,
+        linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
+    }
+
+html.js .form-autocomplete.ui-autocomplete-loading:hover {
+        background:
+          url("../../images/throbber.svg") no-repeat right 18px top 16px,
+          linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%),
+          linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
+      }
+
+html.js .form-autocomplete.ui-autocomplete-loading:focus {
+        background:
+          url("../../images/throbber.svg") no-repeat right 18px top 16px,
+          linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%),
+          linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
+      }
+
+html.js[dir="rtl"] .form-autocomplete {
+    background:
+      url("../../images/magnifying-glass.svg") no-repeat left 18px top 16px,
+      linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
+  }
+
+html.js[dir="rtl"] .form-autocomplete:hover {
       background:
         url("../../images/magnifying-glass.svg") no-repeat left 18px top 16px,
         linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%),
         linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
     }
 
-html[dir=ltr].js .form-autocomplete.ui-autocomplete-loading {
-  background:
-        url("../../images/throbber.svg") no-repeat right 18px top 16px,
-        linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
+html.js[dir="rtl"] .form-autocomplete:focus {
+      background:
+        url("../../images/magnifying-glass.svg") no-repeat left 18px top 16px,
+        linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%),
+        linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
     }
 
-html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading {
+html.js[dir="rtl"] .form-autocomplete.ui-autocomplete-loading {
       background:
         url("../../images/throbber.svg") no-repeat left 18px top 16px,
         linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
     }
 
-html[dir=ltr].js .form-autocomplete.ui-autocomplete-loading:hover {
-  background:
-          url("../../images/throbber.svg") no-repeat right 18px top 16px,
-          linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%),
-          linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
-      }
-
-html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading:hover {
+html.js[dir="rtl"] .form-autocomplete.ui-autocomplete-loading:hover {
         background:
           url("../../images/throbber.svg") no-repeat left 18px top 16px,
           linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%),
           linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
       }
 
-html[dir=ltr].js .form-autocomplete.ui-autocomplete-loading:focus {
-  background:
-          url("../../images/throbber.svg") no-repeat right 18px top 16px,
-          linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%),
-          linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
-      }
-
-html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading:focus {
+html.js[dir="rtl"] .form-autocomplete.ui-autocomplete-loading:focus {
         background:
           url("../../images/throbber.svg") no-repeat left 18px top 16px,
           linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%),
@@ -163,6 +169,8 @@ html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading:focus {
 
 /* IE11 does not animate inline SVG. */
 
+/* rtl:begin:ignore */
+
 /* stylelint-disable-next-line selector-type-no-unknown */
 
 _:-ms-fullscreen,
@@ -220,3 +228,5 @@ html[dir=rtl].js .form-autocomplete.ui-autocomplete-loading:focus {
     linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%),
     linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
 }
+
+/* rtl:end:ignore */
diff --git a/css/components/autocomplete-loading.module.pcss.css b/css/components/autocomplete-loading.module.pcss.css
index c79480e..e91b437 100644
--- a/css/components/autocomplete-loading.module.pcss.css
+++ b/css/components/autocomplete-loading.module.pcss.css
@@ -16,7 +16,7 @@
 
 .form-autocomplete {
   html.js & {
-    padding-right: var(--sp3);
+    padding-inline-end: var(--sp3);
     background:
       var(--autocomplete-search-icon-url) no-repeat right var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset),
       linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95);
@@ -55,6 +55,46 @@
       }
     }
   }
+
+  html.js[dir="rtl"] & {
+    background:
+      var(--autocomplete-search-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset),
+      linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95);
+
+    &:hover {
+      background:
+        var(--autocomplete-search-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset),
+        linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+        linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+    }
+
+    &:focus {
+      background:
+        var(--autocomplete-search-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset),
+        linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+        linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+    }
+
+    &.ui-autocomplete-loading {
+      background:
+        var(--autocomplete-throbber-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset),
+        linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95);
+
+      &:hover {
+        background:
+          var(--autocomplete-throbber-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset),
+          linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+          linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+      }
+
+      &:focus {
+        background:
+          var(--autocomplete-throbber-icon-url) no-repeat left var(--autocomplete-icon-right-offset) top var(--autocomplete-icon-top-offset),
+          linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+          linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+      }
+    }
+  }
 }
 
 /* IE11 does not animate inline SVG. */
diff --git a/css/components/block.css b/css/components/block.css
index cb2f0f0..d1d8ad3 100644
--- a/css/components/block.css
+++ b/css/components/block.css
@@ -77,17 +77,14 @@
 }
 
 .block__title {
+  margin-top: 0;
+  margin-bottom: 18px;
   letter-spacing: 0.02em;
   color: #6e7172;
   font-size: 0.875rem;
   line-height: 1.125rem;
 }
 
-[dir] .block__title {
-  margin-top: 0;
-  margin-bottom: 18px;
-}
-
 .site-footer .block__title {
     color: #9ea0a1;
   }
diff --git a/css/components/block.pcss.css b/css/components/block.pcss.css
index 57f2e2f..0cbc2a2 100644
--- a/css/components/block.pcss.css
+++ b/css/components/block.pcss.css
@@ -6,8 +6,7 @@
 @import "../base/variables.pcss.css";
 
 .block__title {
-  margin-top: 0;
-  margin-bottom: var(--sp);
+  margin-block: 0 var(--sp);
   letter-spacing: 0.02em;
   color: var(--color--gray-20);
   font-size: var(--font-size-s);
diff --git a/css/components/book.css b/css/components/book.css
index ed84998..01df5c0 100644
--- a/css/components/book.css
+++ b/css/components/book.css
@@ -76,16 +76,46 @@
   /* Form */
 }
 
+[dir="ltr"] .book-pager {
+  margin-left: 0;
+}
+
+[dir="rtl"] .book-pager {
+  margin-right: 0;
+}
+
+[dir="ltr"] .book-pager {
+  margin-right: 0;
+}
+
+[dir="rtl"] .book-pager {
+  margin-left: 0;
+}
+
+[dir="ltr"] .book-pager {
+  padding-left: 0;
+}
+
+[dir="rtl"] .book-pager {
+  padding-right: 0;
+}
+
+[dir="ltr"] .book-pager {
+  padding-right: 0;
+}
+
+[dir="rtl"] .book-pager {
+  padding-left: 0;
+}
+
 .book-pager {
   display: flex;
   flex-wrap: wrap;
   justify-content: space-between;
+  margin-top: 0 18px;
+  padding-top: 0;
+  padding-bottom: 18px;
   list-style: none;
-}
-
-[dir] .book-pager {
-  margin: 0 0 18px;
-  padding: 0 0 18px;
   border-bottom: solid 1px #0d77b5;
 }
 
@@ -114,22 +144,28 @@ serif;
 
 @media (min-width: 500px) {
 
-[dir] .book-pager__item--center {
+.book-pager__item--center {
     text-align: center
 }
   }
 
 @media (min-width: 500px) {
 
-[dir=ltr] .book-pager__item--next {
+[dir="ltr"] .book-pager__item--next {
     margin-left: auto;
-    text-align: right
-}
+  }
 
-[dir=rtl] .book-pager__item--next {
+[dir="rtl"] .book-pager__item--next {
     margin-right: auto;
-    text-align: left
-}
+  }
+
+[dir="ltr"] .book-pager__item--next {
+    text-align: right;
+  }
+
+[dir="rtl"] .book-pager__item--next {
+    text-align: left;
+  }
   }
 
 .book-pager__link {
@@ -137,66 +173,116 @@ serif;
   align-items: center;
 }
 
+[dir="ltr"] .book-pager__link--previous:before {
+    margin-right: 0.25em;
+}
+
+[dir="rtl"] .book-pager__link--previous:before {
+    margin-left: 0.25em;
+}
+
+[dir="ltr"] .book-pager__link--previous:before {
+    border-left: solid 3px currentColor;
+}
+
+[dir="rtl"] .book-pager__link--previous:before {
+    border-right: solid 3px currentColor;
+}
+
 .book-pager__link--previous:before {
     display: block;
     width: 9px;
     height: 9px;
     content: "";
-  }
-
-[dir] .book-pager__link--previous:before {
+    transform: rotate(-45deg);
     border-top: solid 3px currentColor;
   }
 
-[dir=ltr] .book-pager__link--previous:before {
-  margin-right: 0.25em;
-  transform: rotate(-45deg);
-  border-left: solid 3px currentColor;
-  }
-
-[dir=rtl] .book-pager__link--previous:before {
+[dir="ltr"] .book-pager__link--next:after {
     margin-left: 0.25em;
-    transform: rotate(45deg);
+}
+
+[dir="rtl"] .book-pager__link--next:after {
+    margin-right: 0.25em;
+}
+
+[dir="ltr"] .book-pager__link--next:after {
+    border-left: solid 3px currentColor;
+}
+
+[dir="rtl"] .book-pager__link--next:after {
     border-right: solid 3px currentColor;
-  }
+}
 
 .book-pager__link--next:after {
     display: block;
     width: 9px;
     height: 9px;
     content: "";
-  }
-
-[dir] .book-pager__link--next:after {
+    transform: rotate(135deg);
     border-top: solid 3px currentColor;
   }
 
-[dir=ltr] .book-pager__link--next:after {
-  margin-left: 0.25em;
-  transform: rotate(135deg);
-  border-left: solid 3px currentColor;
-  }
+[dir="ltr"] .book-navigation .menu {
+    margin-left: 0;
+}
 
-[dir=rtl] .book-pager__link--next:after {
-    margin-right: 0.25em;
-    transform: rotate(-135deg);
-    border-right: solid 3px currentColor;
-  }
+[dir="rtl"] .book-navigation .menu {
+    margin-right: 0;
+}
+
+[dir="ltr"] .book-navigation .menu {
+    margin-right: 0;
+}
+
+[dir="rtl"] .book-navigation .menu {
+    margin-left: 0;
+}
+
+[dir="ltr"] .book-navigation .menu {
+    padding-left: 0;
+}
+
+[dir="rtl"] .book-navigation .menu {
+    padding-right: 0;
+}
+
+[dir="ltr"] .book-navigation .menu {
+    padding-right: 0;
+}
+
+[dir="rtl"] .book-navigation .menu {
+    padding-left: 0;
+}
 
 .book-navigation .menu {
+    margin-top: 36px;
+    margin-bottom: 36px;
+    padding-top: 0;
+    padding-bottom: 0;
     list-style: none;
   }
 
-[dir] .book-navigation .menu {
-    margin: 36px 0;
-    padding: 0;
-  }
+[dir="ltr"] .book-navigation .menu li {
+      padding-left: 0;
+}
+
+[dir="rtl"] .book-navigation .menu li {
+      padding-right: 0;
+}
+
+[dir="ltr"] .book-navigation .menu li {
+      padding-right: 0;
+}
+
+[dir="rtl"] .book-navigation .menu li {
+      padding-left: 0;
+}
 
 .book-navigation .menu li {
+      margin-top: 0;
+      margin-bottom: 0;
+      padding-top: 0;
+      padding-bottom: 0;
       list-style: none;
     }
-
-[dir] .book-navigation .menu li {
-      margin: 0;
-      padding: 0;
-    }
diff --git a/css/components/book.pcss.css b/css/components/book.pcss.css
index 731cc7e..df38647 100644
--- a/css/components/book.pcss.css
+++ b/css/components/book.pcss.css
@@ -9,10 +9,14 @@
   display: flex;
   flex-wrap: wrap;
   justify-content: space-between;
-  margin: 0 0 var(--sp);
-  padding: 0 0 var(--sp);
+  margin-block-start: 0 var(--sp);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0 var(--sp);
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
-  border-bottom: solid 1px var(--color--blue-20);
+  border-block-end: solid 1px var(--color--blue-20);
 
   a {
     text-decoration: none;
@@ -39,8 +43,8 @@
 
 .book-pager__item--next {
   @media (--sm) {
-    margin-left: auto;
-    text-align: right;
+    margin-inline-start: auto;
+    text-align: end;
   }
 }
 
@@ -54,11 +58,11 @@
     display: block;
     width: var(--sp0-5);
     height: var(--sp0-5);
-    margin-right: 0.25em;
+    margin-inline-end: 0.25em;
     content: "";
     transform: rotate(-45deg);
-    border-top: solid 3px currentColor;
-    border-left: solid 3px currentColor;
+    border-block-start: solid 3px currentColor;
+    border-inline-start: solid 3px currentColor;
   }
 }
 
@@ -67,23 +71,29 @@
     display: block;
     width: var(--sp0-5);
     height: var(--sp0-5);
-    margin-left: 0.25em;
+    margin-inline-start: 0.25em;
     content: "";
     transform: rotate(135deg);
-    border-top: solid 3px currentColor;
-    border-left: solid 3px currentColor;
+    border-block-start: solid 3px currentColor;
+    border-inline-start: solid 3px currentColor;
   }
 }
 
 .book-navigation {
   .menu {
-    margin: var(--sp2) 0;
-    padding: 0;
+    margin-block: var(--sp2);
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    padding-block: 0;
+    padding-inline-start: 0;
+    padding-inline-end: 0;
     list-style: none;
 
     li {
-      margin: 0;
-      padding: 0;
+      margin-block: 0;
+      padding-block: 0;
+      padding-inline-start: 0;
+      padding-inline-end: 0;
       list-style: none;
     }
   }
diff --git a/css/components/breadcrumb.css b/css/components/breadcrumb.css
index 2b9fab3..31134eb 100644
--- a/css/components/breadcrumb.css
+++ b/css/components/breadcrumb.css
@@ -85,23 +85,28 @@
 
 /* Shadow on the right side of breadcrumbs for narrow screens. */
 
+[dir="ltr"] .breadcrumb:after {
+    right: -18px;
+}
+
+[dir="rtl"] .breadcrumb:after {
+    left: -18px;
+}
+
 .breadcrumb:after {
     position: absolute;
     top: 0;
     width: 54px;
     height: 18px;
     content: "";
+    background: linear-gradient(to left, #fff 0%, rgba(255, 255, 255, 0) 100%);
   }
 
-[dir=ltr] .breadcrumb:after {
-  right: -18px;
-  background: linear-gradient(to left, #fff 0%, rgba(255, 255, 255, 0) 100%);
-  }
+/* LTR */
 
-[dir=rtl] .breadcrumb:after {
-    left: -18px;
-    background: linear-gradient(to right, #fff 0%, rgba(255, 255, 255, 0) 100%);
-  }
+[dir="rtl"] .breadcrumb:after {
+      background: linear-gradient(to right, #fff 0%, rgba(255, 255, 255, 0) 100%);
+    }
 
 @media (min-width: 1000px) {
 
@@ -117,104 +122,154 @@
 }
   }
 
+[dir="ltr"] .breadcrumb__content {
+  margin-right: -18px;
+}
+
+[dir="rtl"] .breadcrumb__content {
+  margin-left: -18px;
+}
+
 .breadcrumb__content {
   overflow: auto;
   -webkit-overflow-scrolling: touch;
 }
 
-[dir=ltr] .breadcrumb__content {
+@media (min-width: 1000px) {
+
+.breadcrumb__content {
+    margin: 0
+}
+  }
+
+[dir="ltr"] .breadcrumb__list {
+  margin-left: -18px;
+}
+
+[dir="rtl"] .breadcrumb__list {
   margin-right: -18px;
 }
 
-[dir=rtl] .breadcrumb__content {
+[dir="ltr"] .breadcrumb__list {
+  margin-right: -18px;
+}
+
+[dir="rtl"] .breadcrumb__list {
   margin-left: -18px;
 }
 
-@media (min-width: 1000px) {
+[dir="ltr"] .breadcrumb__list {
+  padding-left: 18px;
+}
 
-[dir] .breadcrumb__content {
-    margin: 0
+[dir="rtl"] .breadcrumb__list {
+  padding-right: 18px;
+}
+
+[dir="ltr"] .breadcrumb__list {
+  padding-right: 0;
+}
+
+[dir="rtl"] .breadcrumb__list {
+  padding-left: 0;
 }
-  }
 
 .breadcrumb__list {
   overflow-x: auto;
   width: -webkit-max-content;
   width: max-content;
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-top: 0;
+  padding-bottom: 18px;
   list-style: none;
   white-space: nowrap;
 }
 
-[dir] .breadcrumb__list {
-  margin: 0 -18px;
-}
+@media (min-width: 1000px) {
 
-[dir=ltr] .breadcrumb__list {
-  padding: 0 0 18px 18px;
-}
+[dir="ltr"] .breadcrumb__list {
+    margin-left: 0;
+  }
 
-[dir=rtl] .breadcrumb__list {
-  padding: 0 18px 18px 0;
-}
+[dir="rtl"] .breadcrumb__list {
+    margin-right: 0;
+  }
 
-@media (min-width: 1000px) {
+[dir="ltr"] .breadcrumb__list {
+    margin-right: 0;
+  }
+
+[dir="rtl"] .breadcrumb__list {
+    margin-left: 0;
+  }
+
+[dir="ltr"] .breadcrumb__list {
+    padding-left: 0;
+  }
+
+[dir="rtl"] .breadcrumb__list {
+    padding-right: 0;
+  }
 
 .breadcrumb__list {
     overflow: visible;
+    padding-bottom: 0;
     white-space: normal
 }
-
-[dir] .breadcrumb__list {
-    margin: 0;
-    padding: 0
-}
   }
 
 .breadcrumb__item {
   display: inline-block;
 }
 
+[dir="ltr"] .breadcrumb__item:nth-child(n+2):before {
+    margin-left: 16px;
+    margin-right: 20px;
+}
+
+[dir="rtl"] .breadcrumb__item:nth-child(n+2):before {
+    margin-right: 16px;
+    margin-left: 20px;
+}
+
+[dir="ltr"] .breadcrumb__item:nth-child(n+2):before {
+    border-right: 2px solid #5d7585;
+}
+
+[dir="rtl"] .breadcrumb__item:nth-child(n+2):before {
+    border-left: 2px solid #5d7585;
+}
+
 .breadcrumb__item:nth-child(n+2):before {
     display: inline-block;
     width: 8px;
     height: 8px;
     content: "";
-  }
-
-[dir] .breadcrumb__item:nth-child(n+2):before {
+    transform: rotate(45deg);
     border-top: 2px solid #5d7585;
   }
 
-[dir=ltr] .breadcrumb__item:nth-child(n+2):before {
-  margin-right: 20px;
-  margin-left: 16px;
-  transform: rotate(45deg);
-  border-right: 2px solid #5d7585;
-  }
-
-[dir=rtl] .breadcrumb__item:nth-child(n+2):before {
-    margin-left: 20px;
-    margin-right: 16px;
-    transform: rotate(-45deg);
-    border-left: 2px solid #5d7585;
-  }
+[dir="rtl"] .breadcrumb__item:nth-child(n+2):before {
+      transform: rotate(-45deg);
+    }
 
-[dir=ltr] .breadcrumb__item:last-child {
-  margin-right: 54px;
-  }
+[dir="ltr"] .breadcrumb__item:last-child {
+    margin-right: 54px;
+}
 
-[dir=rtl] .breadcrumb__item:last-child {
+[dir="rtl"] .breadcrumb__item:last-child {
     margin-left: 54px;
-  }
+}
 
 @media (min-width: 1000px) {
 
-[dir=ltr] .breadcrumb__item:last-child {
-    margin-right: 0
+[dir="ltr"] .breadcrumb__item:last-child {
+      margin-right: 0;
   }
 
-[dir=rtl] .breadcrumb__item:last-child {
-      margin-left: 0
+[dir="rtl"] .breadcrumb__item:last-child {
+      margin-left: 0;
   }
     }
 
diff --git a/css/components/breadcrumb.pcss.css b/css/components/breadcrumb.pcss.css
index a64e616..4a24fe0 100644
--- a/css/components/breadcrumb.pcss.css
+++ b/css/components/breadcrumb.pcss.css
@@ -14,12 +14,16 @@
   /* Shadow on the right side of breadcrumbs for narrow screens. */
   &:after {
     position: absolute;
-    top: 0;
-    right: calc(var(--sp1) * -1);
+    inset-block-start: 0;
+    inset-inline-end: calc(var(--sp1) * -1);
     width: var(--sp3);
     height: var(--sp1);
     content: "";
-    background: linear-gradient(to left, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%);
+    background: linear-gradient(to left, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%); /* LTR */
+
+    [dir="rtl"] & {
+      background: linear-gradient(to right, var(--color--white) 0%, rgba(255, 255, 255, 0) 100%);
+    }
 
     @media (--lg) {
       content: none;
@@ -33,7 +37,7 @@
 
 .breadcrumb__content {
   overflow: auto;
-  margin-right: calc(var(--sp1) * -1);
+  margin-inline-end: calc(var(--sp1) * -1);
   -webkit-overflow-scrolling: touch;
 
   @media (--lg) {
@@ -44,15 +48,21 @@
 .breadcrumb__list {
   overflow-x: auto;
   width: max-content;
-  margin: 0 calc(var(--sp1) * -1);
-  padding: 0 0 var(--sp1) var(--sp1);
+  margin-block: 0;
+  margin-inline-start: calc(var(--sp1) * -1);
+  margin-inline-end: calc(var(--sp1) * -1);
+  padding-block: 0 var(--sp1);
+  padding-inline-start: var(--sp1);
+  padding-inline-end: 0;
   list-style: none;
   white-space: nowrap;
 
   @media (--lg) {
     overflow: visible;
-    margin: 0;
-    padding: 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    padding-block-end: 0;
+    padding-inline-start: 0;
     white-space: normal;
   }
 }
@@ -64,19 +74,22 @@
     display: inline-block;
     width: 8px;
     height: 8px;
-    margin-right: 20px;
-    margin-left: 16px;
+    margin-inline: 16px 20px;
     content: "";
     transform: rotate(45deg);
-    border-top: 2px solid var(--color--gray-25);
-    border-right: 2px solid var(--color--gray-25);
+    border-block-start: 2px solid var(--color--gray-25);
+    border-inline-end: 2px solid var(--color--gray-25);
+
+    [dir="rtl"] & {
+      transform: rotate(-45deg);
+    }
   }
 
   &:last-child {
-    margin-right: var(--sp3);
+    margin-inline-end: var(--sp3);
 
     @media (--lg) {
-      margin-right: 0;
+      margin-inline-end: 0;
     }
   }
 }
diff --git a/css/components/button.css b/css/components/button.css
index 7ed7a21..65fdc5b 100644
--- a/css/components/button.css
+++ b/css/components/button.css
@@ -76,11 +76,52 @@
   /* Form */
 }
 
+[dir="ltr"] .button {
+  margin-left: 0;
+}
+
+[dir="rtl"] .button {
+  margin-right: 0;
+}
+
+[dir="ltr"] .button {
+  margin-right: 18px;
+}
+
+[dir="rtl"] .button {
+  margin-left: 18px;
+}
+
+[dir="ltr"] .button {
+  padding-left: 27px;
+}
+
+[dir="rtl"] .button {
+  padding-right: 27px;
+}
+
+[dir="ltr"] .button {
+  padding-right: 27px;
+}
+
+[dir="rtl"] .button {
+  padding-left: 27px;
+}
+
 .button {
   display: inline-block;
   height: 54px;
+  margin-top: 18px;
+  margin-bottom: 18px;
+  padding-top: 18px;
+  padding-bottom: 18px;
+  cursor: pointer;
+  text-align: center;
   text-decoration: none;
   color: #0d77b5;
+  border: 2px solid #0d77b5;
+  border-radius: 2px;
+  background-color: #fff;
   font-family: inherit;
   font-size: 0.875rem;
   font-weight: 700;
@@ -91,30 +132,10 @@
   -webkit-font-smoothing: antialiased;
 }
 
-[dir] .button {
-  padding: 18px 27px;
-  cursor: pointer;
-  text-align: center;
-  border: 2px solid #0d77b5;
-  border-radius: 2px;
-  background-color: #fff;
-}
-
-[dir=ltr] .button {
-  margin: 18px 18px 18px 0;
-}
-
-[dir=rtl] .button {
-  margin: 18px 0 18px 18px;
-}
-
 .button:hover,
   .button:focus {
     text-decoration: none;
     color: #2494db;
-  }
-
-[dir] .button:hover, [dir] .button:focus {
     border-color: #2494db;
   }
 
@@ -123,9 +144,6 @@
 solid
 #53b0eb;
     outline-offset: 2px;
-  }
-
-[dir] .button:focus {
     box-shadow: 0
 0
 0
@@ -146,27 +164,38 @@ rgba(83, 176, 235, 0.25);
 
 .button:active {
     color: #0d77b5;
-  }
-
-[dir] .button:active {
     border-color: #0d77b5;
     box-shadow: none;
   }
 
 .button:disabled,
   .button.is-disabled {
-    color: #d7e1e8;
-  }
-
-[dir] .button:disabled, [dir] .button.is-disabled {
     cursor: default;
+    color: #d7e1e8;
     border-color: #d7e1e8;
   }
 
 /* No margin if is part of a menu. */
 
-[dir] .menu .button {
-    margin: 0;
+[dir="ltr"] .menu .button {
+    margin-left: 0;
+}
+
+[dir="rtl"] .menu .button {
+    margin-right: 0;
+}
+
+[dir="ltr"] .menu .button {
+    margin-right: 0;
+}
+
+[dir="rtl"] .menu .button {
+    margin-left: 0;
+}
+
+.menu .button {
+    margin-top: 0;
+    margin-bottom: 0;
   }
 
 /*
@@ -176,80 +205,92 @@ rgba(83, 176, 235, 0.25);
 
 @supports (display: inline-flex) {
 
+[dir="ltr"] .button {
+    padding-left: 27px;
+  }
+
+[dir="rtl"] .button {
+    padding-right: 27px;
+  }
+
+[dir="ltr"] .button {
+    padding-right: 27px;
+  }
+
+[dir="rtl"] .button {
+    padding-left: 27px;
+  }
+
 .button {
     display: inline-flex;
     align-items: center;
 
     /* Top padding accounts for font not being vertically centered within line-height. */
+    padding-top: 1px;
+    padding-bottom: 0;
     line-height: 1.125rem
 }
+  }
 
-[dir] .button {
-    padding: 1px 27px 0
+[dir="ltr"] .button--small {
+  padding-left: 27px;
 }
-  }
 
-.button--small {
-  height: 45px;
+[dir="rtl"] .button--small {
+  padding-right: 27px;
 }
 
-[dir] .button--small {
-  padding: 13.5px 27px;
+[dir="ltr"] .button--small {
+  padding-right: 27px;
 }
 
-.button--primary {
-  color: #fff;
+[dir="rtl"] .button--small {
+  padding-left: 27px;
+}
+
+.button--small {
+  height: 45px;
+  padding-top: 13.5px;
+  padding-bottom: 13.5px;
 }
 
-[dir] .button--primary {
+.button--primary {
+  color: #fff;
   background-color: #0d77b5;
 }
 
 .button--primary:hover,
   .button--primary:focus {
     color: #fff;
-  }
-
-[dir] .button--primary:hover, [dir] .button--primary:focus {
     background-color: #2494db;
   }
 
 .button--primary:active {
     color: #fff;
-  }
-
-[dir] .button--primary:active {
     background-color: #0d77b5;
   }
 
 .button--primary:disabled,
   .button--primary.is-disabled {
     color: #fff;
-  }
-
-[dir] .button--primary:disabled, [dir] .button--primary.is-disabled {
     background-color: #d7e1e8;
   }
 
+[dir="ltr"] .button--icon-back:before {
+    margin-right: 0.5em;
+}
+
+[dir="rtl"] .button--icon-back:before {
+    margin-left: 0.5em;
+}
+
 .button--icon-back:before {
     display: block;
     width: 0.5em;
     height: 0.5em;
     content: "";
-  }
-
-[dir] .button--icon-back:before {
+    transform: rotate(45deg);
+    /* Intentionaly not using CSS logical properties. */
     border-bottom: solid 2px currentColor;
-  }
-
-[dir=ltr] .button--icon-back:before {
-  margin-right: 0.5em;
-  transform: rotate(45deg);
-  border-left: solid 2px currentColor;
-  }
-
-[dir=rtl] .button--icon-back:before {
-    margin-left: 0.5em;
-    transform: rotate(-45deg);
-    border-right: solid 2px currentColor;
+    border-left: solid 2px currentColor;
   }
diff --git a/css/components/button.pcss.css b/css/components/button.pcss.css
index 5c5920e..4cc0433 100644
--- a/css/components/button.pcss.css
+++ b/css/components/button.pcss.css
@@ -12,8 +12,12 @@
 .button {
   display: inline-block;
   height: var(--sp3);
-  margin: var(--sp1) var(--sp1) var(--sp1) 0;
-  padding: calc((var(--sp3) - var(--line-height-s)) / 2) var(--sp1-5);
+  margin-block: var(--sp1);
+  margin-inline-start: 0;
+  margin-inline-end: var(--sp1);
+  padding-block: calc((var(--sp3) - var(--line-height-s)) / 2);
+  padding-inline-start: var(--sp1-5);
+  padding-inline-end: var(--sp1-5);
   cursor: pointer;
   text-align: center;
   text-decoration: none;
@@ -56,7 +60,9 @@
 
   /* No margin if is part of a menu. */
   .menu & {
-    margin: 0;
+    margin-block: 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
   }
 
   /*
@@ -68,14 +74,18 @@
     align-items: center;
 
     /* Top padding accounts for font not being vertically centered within line-height. */
-    padding: 1px var(--sp1-5) 0;
+    padding-block: 1px 0;
+    padding-inline-start: var(--sp1-5);
+    padding-inline-end: var(--sp1-5);
     line-height: var(--line-height-s);
   }
 }
 
 .button--small {
   height: var(--sp2-5);
-  padding: calc((var(--sp2-5) - var(--line-height-s)) / 2) var(--sp1-5);
+  padding-block: calc((var(--sp2-5) - var(--line-height-s)) / 2);
+  padding-inline-start: var(--sp1-5);
+  padding-inline-end: var(--sp1-5);
 }
 
 .button--primary {
@@ -105,9 +115,10 @@
     display: block;
     width: 0.5em;
     height: 0.5em;
-    margin-right: 0.5em;
+    margin-inline-end: 0.5em;
     content: "";
     transform: rotate(45deg);
+    /* Intentionaly not using CSS logical properties. */
     border-bottom: solid 2px currentColor;
     border-left: solid 2px currentColor;
   }
diff --git a/css/components/cke-dialog.css b/css/components/cke-dialog.css
index b7e3457..22d9a3c 100644
--- a/css/components/cke-dialog.css
+++ b/css/components/cke-dialog.css
@@ -76,15 +76,56 @@
   /* Form */
 }
 
-[dir] .cke_dialog td, [dir] .cke_dialog th {
-    padding: 4.5px;
+[dir="ltr"] .cke_dialog td,[dir="ltr"] 
+  .cke_dialog th {
+    padding-left: 4.5px;
+}
+
+[dir="rtl"] .cke_dialog td,[dir="rtl"] 
+  .cke_dialog th {
+    padding-right: 4.5px;
+}
+
+[dir="ltr"] .cke_dialog td,[dir="ltr"] 
+  .cke_dialog th {
+    padding-right: 4.5px;
+}
+
+[dir="rtl"] .cke_dialog td,[dir="rtl"] 
+  .cke_dialog th {
+    padding-left: 4.5px;
+}
+
+.cke_dialog td,
+  .cke_dialog th {
+    padding-top: 4.5px;
+    padding-bottom: 4.5px;
   }
 
-[dir] .cke_dialog .cke_dialog_ui_hbox_last {
-    padding: 1px 0 0 0;
+[dir="ltr"] .cke_dialog .cke_dialog_ui_hbox_last {
+    padding-left: 0;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_hbox_last {
+    padding-right: 0;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_ui_hbox_last {
+    padding-right: 0;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_hbox_last {
+    padding-left: 0;
+}
+
+.cke_dialog .cke_dialog_ui_hbox_last {
+    padding-top: 1px;
+    padding-bottom: 0;
   }
 
-[dir] .cke_dialog .cke_dialog_contents_body .cke_dialog_ui_text, [dir] .cke_dialog .cke_dialog_contents_body .cke_dialog_ui_select, [dir] .cke_dialog .cke_dialog_contents_body .cke_dialog_ui_hbox_last > a.cke_dialog_ui_button {
+.cke_dialog .cke_dialog_contents_body .cke_dialog_ui_text,
+  .cke_dialog .cke_dialog_contents_body .cke_dialog_ui_select,
+  .cke_dialog .cke_dialog_contents_body .cke_dialog_ui_hbox_last > a.cke_dialog_ui_button {
     margin-top: 9px;
   }
 
@@ -92,34 +133,45 @@
     width: 100% !important; /* Override inline width. */
   }
 
+[dir="ltr"] .cke_dialog input.cke_dialog_ui_input_text,[dir="ltr"] 
+  .cke_dialog input.cke_dialog_ui_input_password,[dir="ltr"] 
+  .cke_dialog input.cke_dialog_ui_input_tel,[dir="ltr"] 
+  .cke_dialog textarea.cke_dialog_ui_input_textarea {
+    padding-left: 24px;
+}
+
+[dir="rtl"] .cke_dialog input.cke_dialog_ui_input_text,[dir="rtl"] 
+  .cke_dialog input.cke_dialog_ui_input_password,[dir="rtl"] 
+  .cke_dialog input.cke_dialog_ui_input_tel,[dir="rtl"] 
+  .cke_dialog textarea.cke_dialog_ui_input_textarea {
+    padding-right: 24px;
+}
+
+[dir="ltr"] .cke_dialog input.cke_dialog_ui_input_text,[dir="ltr"] 
+  .cke_dialog input.cke_dialog_ui_input_password,[dir="ltr"] 
+  .cke_dialog input.cke_dialog_ui_input_tel,[dir="ltr"] 
+  .cke_dialog textarea.cke_dialog_ui_input_textarea {
+    padding-right: 20px;
+}
+
+[dir="rtl"] .cke_dialog input.cke_dialog_ui_input_text,[dir="rtl"] 
+  .cke_dialog input.cke_dialog_ui_input_password,[dir="rtl"] 
+  .cke_dialog input.cke_dialog_ui_input_tel,[dir="rtl"] 
+  .cke_dialog textarea.cke_dialog_ui_input_textarea {
+    padding-left: 20px;
+}
+
 .cke_dialog input.cke_dialog_ui_input_text,
   .cke_dialog input.cke_dialog_ui_input_password,
   .cke_dialog input.cke_dialog_ui_input_tel,
   .cke_dialog textarea.cke_dialog_ui_input_textarea {
+    padding-top: 13px;
+    padding-bottom: 13px;
     color: #313637;
-  }
-
-[dir] .cke_dialog input.cke_dialog_ui_input_text, [dir] .cke_dialog input.cke_dialog_ui_input_password, [dir] .cke_dialog input.cke_dialog_ui_input_tel, [dir] .cke_dialog textarea.cke_dialog_ui_input_textarea {
     border-width: 2px 0;
   }
 
-[dir=ltr] .cke_dialog input.cke_dialog_ui_input_text, [dir=ltr] .cke_dialog input.cke_dialog_ui_input_password, [dir=ltr] .cke_dialog input.cke_dialog_ui_input_tel, [dir=ltr] .cke_dialog textarea.cke_dialog_ui_input_textarea {
-  padding:
-      13px
-      20px
-      13px
-      24px;
-  }
-
-[dir=rtl] .cke_dialog input.cke_dialog_ui_input_text, [dir=rtl] .cke_dialog input.cke_dialog_ui_input_password, [dir=rtl] .cke_dialog input.cke_dialog_ui_input_tel, [dir=rtl] .cke_dialog textarea.cke_dialog_ui_input_textarea {
-    padding:
-      13px
-      24px
-      13px
-      20px;
-  }
-
-[dir] .cke_dialog input.cke_dialog_ui_input_text:hover, [dir] .cke_dialog input.cke_dialog_ui_input_password:hover, [dir] .cke_dialog input.cke_dialog_ui_input_tel:hover, [dir] .cke_dialog textarea.cke_dialog_ui_input_textarea:hover {
+.cke_dialog input.cke_dialog_ui_input_text:hover, .cke_dialog input.cke_dialog_ui_input_password:hover, .cke_dialog input.cke_dialog_ui_input_tel:hover, .cke_dialog textarea.cke_dialog_ui_input_textarea:hover {
       border-width: 2px 0;
     }
 
@@ -127,37 +179,110 @@
     display: block;
   }
 
+[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      margin-left: 0;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      margin-right: 0;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      margin-right: 0;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      margin-left: 0;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      padding-left: 19.5px;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      padding-right: 19.5px;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      padding-right: 58.5px;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      padding-left: 58.5px;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      border-top-left-radius: 0;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      border-top-right-radius: 0;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      border-top-right-radius: 2px;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      border-top-left-radius: 2px;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      border-bottom-left-radius: 0;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      border-bottom-right-radius: 0;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_ui_input_select select,[dir="ltr"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      border-bottom-right-radius: 2px;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_ui_input_select select,[dir="rtl"] 
+    .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
+      border-bottom-left-radius: 2px;
+}
+
 .cke_dialog .cke_dialog_ui_input_select select,
     .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
       width: 100% !important;
       height: 45px;
+      margin-top: 0;
+      margin-bottom: 0;
+      padding-top: 0;
+      padding-bottom: 0;
       color: #313637;
-      outline: 1px
-solid
-transparent;
-      line-height: 2.8125rem;
-    }
-
-[dir] .cke_dialog .cke_dialog_ui_input_select select, [dir] .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
-      margin: 0;
       border: 1px solid transparent;
       border-width: 2px 0;
       border-style: solid;
       border-color: transparent;
+      outline: 1px
+solid
+transparent;
       background-color: #f7f9fa;
+      line-height: 2.8125rem;
     }
 
-[dir=ltr] .cke_dialog .cke_dialog_ui_input_select select, [dir=ltr] .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
-  padding: 0 58.5px 0 19.5px;
-  border-radius: 0 2px 2px 0;
-    }
-
-[dir=rtl] .cke_dialog .cke_dialog_ui_input_select select, [dir=rtl] .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select {
-      padding: 0 19.5px 0 58.5px;
-      border-radius: 2px 0 0 2px;
-    }
-
-[dir] .cke_dialog .cke_dialog_ui_input_select select:hover, [dir] .cke_dialog .cke_dialog_ui_input_select select:focus, [dir] .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select:hover, [dir] .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select:focus {
+.cke_dialog .cke_dialog_ui_input_select select:hover,
+      .cke_dialog .cke_dialog_ui_input_select select:focus,
+      .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select:hover,
+      .cke_dialog .cke_dialog_ui_input_select .cke_dialog_ui_input_select:focus {
         border-color: #53b0eb;
         background-image:
           url("../../images/chevron-down.svg"),
@@ -171,23 +296,80 @@ dashed
 transparent;
       }
 
-[dir=ltr] .cke_dialog .cke_dialog_footer_buttons {
-  margin: 9px 9px 9px 0;
-  }
+[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons {
+    margin-left: 0;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons {
+    margin-right: 0;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons {
+    margin-right: 9px;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons {
+    margin-left: 9px;
+}
 
-[dir=rtl] .cke_dialog .cke_dialog_footer_buttons {
-    margin: 9px 0 9px 9px;
+.cke_dialog .cke_dialog_footer_buttons {
+    margin-top: 9px;
+    margin-bottom: 9px;
   }
 
-[dir] .cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last {
-      padding: 4.5px;
+[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last {
+      padding-left: 4.5px;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last {
+      padding-right: 4.5px;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last {
+      padding-right: 4.5px;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last {
+      padding-left: 4.5px;
+}
+
+.cke_dialog .cke_dialog_footer_buttons .cke_dialog_ui_hbox_last {
+      padding-top: 4.5px;
+      padding-bottom: 4.5px;
     }
 
+[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons a,[dir="ltr"] 
+    .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button {
+      margin-left: 0;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons a,[dir="rtl"] 
+    .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button {
+      margin-right: 0;
+}
+
+[dir="ltr"] .cke_dialog .cke_dialog_footer_buttons a,[dir="ltr"] 
+    .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button {
+      margin-right: 4.5px;
+}
+
+[dir="rtl"] .cke_dialog .cke_dialog_footer_buttons a,[dir="rtl"] 
+    .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button {
+      margin-left: 4.5px;
+}
+
 .cke_dialog .cke_dialog_footer_buttons a,
     .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button {
       display: inline-block;
+      margin-top: 4.5px;
+      margin-bottom: 4.5px;
+      cursor: pointer;
+      text-align: center;
       text-decoration: none;
       color: #0d77b5;
+      border: 2px solid #0d77b5;
+      border-radius: 2px;
+      background-color: #fff;
       font-family: inherit;
       font-size: 0.875rem;
       font-weight: 700;
@@ -198,31 +380,12 @@ transparent;
       -webkit-font-smoothing: antialiased;
     }
 
-[dir] .cke_dialog .cke_dialog_footer_buttons a, [dir] .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button {
-      cursor: pointer;
-      text-align: center;
-      border: 2px solid #0d77b5;
-      border-radius: 2px;
-      background-color: #fff;
-    }
-
-[dir=ltr] .cke_dialog .cke_dialog_footer_buttons a, [dir=ltr] .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button {
-  margin: 4.5px 4.5px 4.5px 0;
-    }
-
-[dir=rtl] .cke_dialog .cke_dialog_footer_buttons a, [dir=rtl] .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button {
-      margin: 4.5px 0 4.5px 4.5px;
-    }
-
 .cke_dialog .cke_dialog_footer_buttons a:hover,
       .cke_dialog .cke_dialog_footer_buttons a:focus,
       .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button:hover,
       .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button:focus {
         text-decoration: none;
         color: #2494db;
-      }
-
-[dir] .cke_dialog .cke_dialog_footer_buttons a:hover, [dir] .cke_dialog .cke_dialog_footer_buttons a:focus, [dir] .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button:hover, [dir] .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button:focus {
         border-color: #2494db;
       }
 
@@ -231,9 +394,6 @@ transparent;
 solid
 #53b0eb;
         outline-offset: 2px;
-      }
-
-[dir] .cke_dialog .cke_dialog_footer_buttons a:focus, [dir] .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button:focus {
         box-shadow: 0
 0
 0
@@ -254,9 +414,6 @@ rgba(83, 176, 235, 0.25);
 
 .cke_dialog .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok, .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button.cke_dialog_ui_button_ok {
         color: #fff;
-      }
-
-[dir] .cke_dialog .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok, [dir] .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button.cke_dialog_ui_button_ok {
         background-color: #0d77b5;
       }
 
@@ -265,8 +422,5 @@ rgba(83, 176, 235, 0.25);
         .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button.cke_dialog_ui_button_ok:hover,
         .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button.cke_dialog_ui_button_ok:focus {
           color: #fff;
-        }
-
-[dir] .cke_dialog .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok:hover, [dir] .cke_dialog .cke_dialog_footer_buttons a.cke_dialog_ui_button_ok:focus, [dir] .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button.cke_dialog_ui_button_ok:hover, [dir] .cke_dialog .cke_dialog_footer_buttons .acke_dialog_ui_button.cke_dialog_ui_button_ok:focus {
           background-color: #2494db;
         }
diff --git a/css/components/cke-dialog.pcss.css b/css/components/cke-dialog.pcss.css
index 4d1c936..634e5cf 100644
--- a/css/components/cke-dialog.pcss.css
+++ b/css/components/cke-dialog.pcss.css
@@ -14,17 +14,22 @@
 .cke_dialog {
   td,
   th {
-    padding: var(--sp0-25);
+    padding-block: var(--sp0-25);
+    padding-inline-start: var(--sp0-25);
+    padding-inline-end: var(--sp0-25);
   }
 
   .cke_dialog_ui_hbox_last {
-    padding: 1px 0 0 0;
+    padding-block-start: 1px;
+    padding-block-end: 0;
+    padding-inline-start: 0;
+    padding-inline-end: 0;
   }
 
   .cke_dialog_contents_body .cke_dialog_ui_text,
   .cke_dialog_contents_body .cke_dialog_ui_select,
   .cke_dialog_contents_body .cke_dialog_ui_hbox_last > a.cke_dialog_ui_button {
-    margin-top: var(--sp0-5);
+    margin-block-start: var(--sp0-5);
   }
 
   .cke_dialog_body label + .cke_dialog_ui_labeled_content {
@@ -35,11 +40,9 @@
   input.cke_dialog_ui_input_password,
   input.cke_dialog_ui_input_tel,
   textarea.cke_dialog_ui_input_textarea {
-    padding:
-      calc((var(--sp3) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2)
-      calc(var(--sp1) + var(--form-element-border-size-base))
-      calc((var(--sp3) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2)
-      calc(var(--sp1) + var(--form-element-border-size-left));
+    padding-block: calc((var(--sp3) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2);
+    padding-inline-start: calc(var(--sp1) + var(--form-element-border-size-left));
+    padding-inline-end: calc(var(--sp1) + var(--form-element-border-size-base));
     color: var(--color--gray-10);
     border-width: var(--form-element-border-size-base) 0;
 
@@ -55,14 +58,21 @@
     .cke_dialog_ui_input_select {
       width: 100% !important;
       height: var(--sp2-5);
-      margin: 0;
-      padding: 0 calc(var(--sp2-5) + var(--sp0-75)) 0 calc(var(--sp0-75) + var(--form-element-border-size-left));
+      margin-block: 0;
+      margin-inline-start: 0;
+      margin-inline-end: 0;
+      padding-block: 0;
+      padding-inline-start: calc(var(--sp0-75) + var(--form-element-border-size-left));
+      padding-inline-end: calc(var(--sp2-5) + var(--sp0-75));
       color: var(--color--gray-10);
       border: 1px solid transparent;
       border-width: var(--form-element-border-size-base) 0;
       border-style: solid;
       border-color: transparent;
-      border-radius: 0 var(--border-radius-base) var(--border-radius-base) 0;
+      border-start-start-radius: 0;
+      border-start-end-radius: var(--border-radius-base);
+      border-end-start-radius: 0;
+      border-end-end-radius: var(--border-radius-base);
       outline: var(--outline--thin);
       background-color: var(--color--gray-95);
       line-height: var(--sp2-5);
@@ -83,16 +93,23 @@
   }
 
   .cke_dialog_footer_buttons {
-    margin: var(--sp0-5) var(--sp0-5) var(--sp0-5) 0;
+    margin-block-start: var(--sp0-5);
+    margin-block-end: var(--sp0-5);
+    margin-inline-start: 0;
+    margin-inline-end: var(--sp0-5);
 
     .cke_dialog_ui_hbox_last {
-      padding: var(--sp0-25);
+      padding-block: var(--sp0-25);
+      padding-inline-start: var(--sp0-25);
+      padding-inline-end: var(--sp0-25);
     }
 
     a,
     .acke_dialog_ui_button {
       display: inline-block;
-      margin: var(--sp0-25) var(--sp0-25) var(--sp0-25) 0;
+      margin-block: var(--sp0-25);
+      margin-inline-start: 0;
+      margin-inline-end: var(--sp0-25);
       cursor: pointer;
       text-align: center;
       text-decoration: none;
diff --git a/css/components/comments.css b/css/components/comments.css
index 38f0bfe..22f8155 100644
--- a/css/components/comments.css
+++ b/css/components/comments.css
@@ -76,38 +76,82 @@
   /* Form */
 }
 
-[dir] .comments > .comment {
+.comments > .comment {
     border-top: 2px solid #e7edf1;
   }
 
-[dir] .comments > .comment ~ .comment {
+.comments > .comment ~ .comment {
       margin-top: 36px;
     }
 
 .comments__title {
   display: flex;
   align-items: center;
+  margin-top: 0;
 }
 
-[dir] .comments__title {
-  margin-top: 0;
+[dir="ltr"] .comments__count {
+  margin-left: 18px;
+}
+
+[dir="rtl"] .comments__count {
+  margin-right: 18px;
+}
+
+[dir="ltr"] .comments__count {
+  margin-right: 18px;
+}
+
+[dir="rtl"] .comments__count {
+  margin-left: 18px;
+}
+
+[dir="ltr"] .comments__count {
+  padding-left: 5px;
+}
+
+[dir="rtl"] .comments__count {
+  padding-right: 5px;
+}
+
+[dir="ltr"] .comments__count {
+  padding-right: 5px;
+}
+
+[dir="rtl"] .comments__count {
+  padding-left: 5px;
 }
 
 .comments__count {
   position: relative;
   display: inline-block;
   min-width: 34px;
+  margin-top: 0;
+  margin-bottom: 9px;
+  padding-top: 0;
+  padding-bottom: 0;
+  text-align: center;
   color: #fff;
+  border-radius: 2px;
+  background-color: #0d77b5;
   font-size: 0.6875rem;
   line-height: 1.3125rem;
 }
 
-[dir] .comments__count {
-  margin: 0 18px 9px 18px;
-  padding: 0 5px;
-  text-align: center;
-  border-radius: 2px;
-  background-color: #0d77b5;
+[dir="ltr"] .comments__count:after {
+    left: 8px;
+}
+
+[dir="rtl"] .comments__count:after {
+    right: 8px;
+}
+
+[dir="ltr"] .comments__count:after {
+    border-right: 8px solid transparent;
+}
+
+[dir="rtl"] .comments__count:after {
+    border-left: 8px solid transparent;
 }
 
 .comments__count:after {
@@ -116,72 +160,87 @@
     width: 0;
     height: 0;
     content: "";
-  }
-
-[dir] .comments__count:after {
     border-top: 7px solid #0d77b5;
   }
 
-[dir=ltr] .comments__count:after {
-  left: 8px;
-  border-right: 8px solid transparent;
-  }
-
-[dir=rtl] .comments__count:after {
-    right: 8px;
-    border-left: 8px solid transparent;
-  }
-
-[dir] .comment-form {
+.comment-form {
   padding-bottom: 36px;
 }
 
-[dir=ltr] .add-comment__form {
+[dir="ltr"] .add-comment__form {
   padding-left: 54px;
 }
 
-[dir=rtl] .add-comment__form {
+[dir="rtl"] .add-comment__form {
   padding-right: 54px;
 }
 
 @media (min-width: 700px) {
 
-[dir=ltr] .add-comment__form {
-    padding-left: 0
+[dir="ltr"] .add-comment__form {
+    padding-left: 0;
+  }
+
+[dir="rtl"] .add-comment__form {
+    padding-right: 0;
+  }
+  }
+
+[dir="ltr"] .comment {
+  padding-left: 54px;
 }
 
-[dir=rtl] .add-comment__form {
-    padding-right: 0
+[dir="rtl"] .comment {
+  padding-right: 54px;
 }
-  }
 
 .comment {
   position: relative;
+  padding-top: 36px;
 }
 
-[dir] .comment {
-  padding-top: 36px;
+.comment .text-content {
+    padding-bottom: 0;
+    font-size: 1rem;
+  }
+
+[dir="ltr"] .comment .links {
+    margin-left: 0;
 }
 
-[dir=ltr] .comment {
-  padding-left: 54px;
+[dir="rtl"] .comment .links {
+    margin-right: 0;
 }
 
-[dir=rtl] .comment {
-  padding-right: 54px;
+[dir="ltr"] .comment .links {
+    margin-right: 0;
 }
 
-.comment .text-content {
-    font-size: 1rem;
-  }
+[dir="rtl"] .comment .links {
+    margin-left: 0;
+}
 
-[dir] .comment .text-content {
-    padding-bottom: 0;
-  }
+[dir="ltr"] .comment .links {
+    padding-left: 0;
+}
+
+[dir="rtl"] .comment .links {
+    padding-right: 0;
+}
 
-[dir] .comment .links {
-    margin: 18px 0 0 0;
-    padding: 0;
+[dir="ltr"] .comment .links {
+    padding-right: 0;
+}
+
+[dir="rtl"] .comment .links {
+    padding-left: 0;
+}
+
+.comment .links {
+    margin-top: 18px;
+    margin-bottom: 0;
+    padding-top: 0;
+    padding-bottom: 0;
   }
 
 .comment .links a {
@@ -197,66 +256,63 @@
         text-decoration: underline;
       }
 
-.comment .links li {
-      display: inline-block;
-    }
-
-[dir=ltr] .comment .links li {
-  margin-right: 18px;
-    }
+[dir="ltr"] .comment .links li {
+      margin-right: 18px;
+}
 
-[dir=rtl] .comment .links li {
+[dir="rtl"] .comment .links li {
       margin-left: 18px;
+}
+
+.comment .links li {
+      display: inline-block;
     }
 
 @media (min-width: 700px) {
 
-[dir=ltr] .comment {
-    padding-left: 0
-}
+[dir="ltr"] .comment {
+    padding-left: 0;
+  }
 
-[dir=rtl] .comment {
-    padding-right: 0
-}
+[dir="rtl"] .comment {
+    padding-right: 0;
+  }
   }
 
 .add-comment__picture-wrapper.comment-picture {
   top: 36px;
 }
 
+[dir="ltr"] .comment-picture__image {
+  left: 0;
+}
+
+[dir="rtl"] .comment-picture__image {
+  right: 0;
+}
+
 .comment-picture__image {
   position: absolute;
   overflow: hidden;
   width: 36px;
   height: 36px;
-}
-
-[dir] .comment-picture__image {
   border-radius: 50%;
   background-color: #e7edf1;
 }
 
-[dir=ltr] .comment-picture__image {
-  left: 0;
-}
-
-[dir=rtl] .comment-picture__image {
-  right: 0;
-}
-
 @media (min-width: 700px) {
 
-.indented .comment-picture__image {
-      width: 36px;
-      height: 36px
+[dir="ltr"] .indented .comment-picture__image {
+      left: -72px;
   }
 
-[dir=ltr] .indented .comment-picture__image {
-    left: -72px
+[dir="rtl"] .indented .comment-picture__image {
+      right: -72px;
   }
 
-[dir=rtl] .indented .comment-picture__image {
-      right: -72px
+.indented .comment-picture__image {
+      width: 36px;
+      height: 36px
   }
     }
 
@@ -279,36 +335,30 @@
 
 .comment-picture__image img {
       position: absolute;
+      /* stylelint-disable csstools/use-logical */
       top: 50%;
+      left: 50%;
+      /* stylelint-enable csstools/use-logical */
       width: 100%;
-      height: auto
+      height: auto;
+      transform: translate(-50%, -50%)
   }
+    }
 
-[dir=ltr] .comment-picture__image img {
-    left: 50%;
-    transform: translate(-50%, -50%)
-  }
+@media (min-width: 700px) {
 
-[dir=rtl] .comment-picture__image img {
-      right: 50%;
-      transform: translate(50%, -50%)
+[dir="ltr"] .comment-picture__image {
+    left: -90px;
   }
-    }
 
-@media (min-width: 700px) {
+[dir="rtl"] .comment-picture__image {
+    right: -90px;
+  }
 
 .comment-picture__image {
     width: 54px;
     height: 54px
 }
-
-[dir=ltr] .comment-picture__image {
-    left: -90px
-}
-
-[dir=rtl] .comment-picture__image {
-    right: -90px
-}
   }
 
 @media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
@@ -322,6 +372,14 @@
     display: inline;
   }
 
+[dir="ltr"] .comment__author {
+  margin-right: 18px;
+}
+
+[dir="rtl"] .comment__author {
+  margin-left: 18px;
+}
+
 .comment__author {
   font-family: "metropolis"
 ,
@@ -331,19 +389,12 @@ sans-serif;
   line-height: 1.125rem;
 }
 
-[dir=ltr] .comment__author {
-  margin-right: 18px;
-}
-
-[dir=rtl] .comment__author {
-  margin-left: 18px;
-}
-
 .comment__author a {
     text-decoration: none;
   }
 
 .comment__time {
+  margin: 0;
   color: #6e7172;
   font-family: "metropolis"
 ,
@@ -352,18 +403,30 @@ sans-serif;
   line-height: 1.125rem;
 }
 
-[dir] .comment__time {
-  margin: 0;
-}
-
-[dir=ltr] .indented {
+[dir="ltr"] .indented {
   margin-left: 36px;
 }
 
-[dir=rtl] .indented {
+[dir="rtl"] .indented {
   margin-right: 36px;
 }
 
+[dir="ltr"] .indented > .comment:not(:last-of-type):not(.has-children):before {
+    left: -54px;
+}
+
+[dir="rtl"] .indented > .comment:not(:last-of-type):not(.has-children):before {
+    right: -54px;
+}
+
+[dir="ltr"] .indented > .comment:not(:last-of-type):not(.has-children):before {
+    border-left: solid 1px #e7edf1;
+}
+
+[dir="rtl"] .indented > .comment:not(:last-of-type):not(.has-children):before {
+    border-right: solid 1px #e7edf1;
+}
+
 .indented > .comment:not(:last-of-type):not(.has-children):before {
     position: absolute;
     top: 36px; /* Comment's padding-top */
@@ -372,40 +435,69 @@ sans-serif;
     content: "";
   }
 
-[dir=ltr] .indented > .comment:not(:last-of-type):not(.has-children):before {
-  left: -54px;
-  border-left: solid 1px #e7edf1;
+@media (min-width: 700px) {
+
+[dir="ltr"] .indented > .comment:not(:last-of-type):not(.has-children):before {
+      left: -54px;
   }
 
-[dir=rtl] .indented > .comment:not(:last-of-type):not(.has-children):before {
-    right: -54px;
-    border-right: solid 1px #e7edf1;
+[dir="rtl"] .indented > .comment:not(:last-of-type):not(.has-children):before {
+      right: -54px;
   }
+    }
 
 @media (min-width: 700px) {
 
-[dir=ltr] .indented > .comment:not(:last-of-type):not(.has-children):before {
-    left: -54px
+[dir="ltr"] .indented {
+    margin-left: 72px;
   }
 
-[dir=rtl] .indented > .comment:not(:last-of-type):not(.has-children):before {
-      right: -54px
+[dir="rtl"] .indented {
+    margin-right: 72px;
+  }
   }
-    }
 
-@media (min-width: 700px) {
+[dir="ltr"] .show-hide-btn {
+  margin-left: 54px;
+}
 
-[dir=ltr] .indented {
-    margin-left: 72px
+[dir="rtl"] .show-hide-btn {
+  margin-right: 54px;
 }
 
-[dir=rtl] .indented {
-    margin-right: 72px
+[dir="ltr"] .show-hide-btn {
+  margin-right: 0;
+}
+
+[dir="rtl"] .show-hide-btn {
+  margin-left: 0;
+}
+
+[dir="ltr"] .show-hide-btn {
+  padding-left: 0;
+}
+
+[dir="rtl"] .show-hide-btn {
+  padding-right: 0;
+}
+
+[dir="ltr"] .show-hide-btn {
+  padding-right: 0;
+}
+
+[dir="rtl"] .show-hide-btn {
+  padding-left: 0;
 }
-  }
 
 .show-hide-btn {
+  margin-top: 36px;
+  margin-bottom: 0;
+  padding-top: 0;
+  padding-bottom: 0;
+  cursor: pointer;
   color: #313637;
+  border: 0;
+  background: none;
   font-size: 0.875rem;
   font-weight: 600;
   line-height: 1.125rem;
@@ -414,21 +506,6 @@ sans-serif;
   appearance: none;
 }
 
-[dir] .show-hide-btn {
-  padding: 0;
-  cursor: pointer;
-  border: 0;
-  background: none;
-}
-
-[dir=ltr] .show-hide-btn {
-  margin: 36px 0 0 54px;
-}
-
-[dir=rtl] .show-hide-btn {
-  margin: 36px 54px 0 0;
-}
-
 .show-hide-btn[aria-expanded="true"]:after {
     content: "\0020 -";
   }
@@ -439,11 +516,11 @@ sans-serif;
 
 @media (min-width: 700px) {
 
-[dir=ltr] .show-hide-btn {
-    margin-left: 0
-}
+[dir="ltr"] .show-hide-btn {
+    margin-left: 0;
+  }
 
-[dir=rtl] .show-hide-btn {
-    margin-right: 0
-}
+[dir="rtl"] .show-hide-btn {
+    margin-right: 0;
+  }
   }
diff --git a/css/components/comments.pcss.css b/css/components/comments.pcss.css
index e56bffc..1dcac9d 100644
--- a/css/components/comments.pcss.css
+++ b/css/components/comments.pcss.css
@@ -12,10 +12,10 @@
 
 .comments {
   > .comment {
-    border-top: 2px solid var(--color--gray-80);
+    border-block-start: 2px solid var(--color--gray-80);
 
     ~ .comment {
-      margin-top: var(--sp2);
+      margin-block-start: var(--sp2);
     }
   }
 }
@@ -23,15 +23,20 @@
 .comments__title {
   display: flex;
   align-items: center;
-  margin-top: 0;
+  margin-block-start: 0;
 }
 
 .comments__count {
   position: relative;
   display: inline-block;
   min-width: 34px;
-  margin: 0 var(--sp) var(--sp0-5) var(--sp);
-  padding: 0 5px;
+  margin-block-start: 0;
+  margin-block-end: var(--sp0-5);
+  margin-inline-start: var(--sp);
+  margin-inline-end: var(--sp);
+  padding-block: 0;
+  padding-inline-start: 5px;
+  padding-inline-end: 5px;
   text-align: center;
   color: var(--color--white);
   border-radius: 2px;
@@ -41,41 +46,45 @@
 
   &:after {
     position: absolute;
-    bottom: -7px;
-    left: 8px;
+    inset-block-end: -7px;
+    inset-inline-start: 8px;
     width: 0;
     height: 0;
     content: "";
-    border-top: 7px solid var(--color--blue-20);
-    border-right: 8px solid transparent;
+    border-block-start: 7px solid var(--color--blue-20);
+    border-inline-end: 8px solid transparent;
   }
 }
 
 .comment-form {
-  padding-bottom: var(--sp2);
+  padding-block-end: var(--sp2);
 }
 
 .add-comment__form {
-  padding-left: var(--sp3);
+  padding-inline-start: var(--sp3);
 
   @media (--grid-md) {
-    padding-left: 0;
+    padding-inline-start: 0;
   }
 }
 
 .comment {
   position: relative;
-  padding-top: var(--sp2);
-  padding-left: var(--sp3);
+  padding-block-start: var(--sp2);
+  padding-inline-start: var(--sp3);
 
   .text-content {
-    padding-bottom: 0;
+    padding-block-end: 0;
     font-size: 16px;
   }
 
   .links {
-    margin: var(--sp) 0 0 0;
-    padding: 0;
+    margin-block: var(--sp) 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    padding-block: 0;
+    padding-inline-start: 0;
+    padding-inline-end: 0;
 
     a {
       text-decoration: none;
@@ -92,22 +101,22 @@
 
     li {
       display: inline-block;
-      margin-right: var(--sp);
+      margin-inline-end: var(--sp);
     }
   }
 
   @media (--grid-md) {
-    padding-left: 0;
+    padding-inline-start: 0;
   }
 }
 
 .add-comment__picture-wrapper.comment-picture {
-  top: calc(var(--line-height-base) + var(--sp0-5));
+  inset-block-start: calc(var(--line-height-base) + var(--sp0-5));
 }
 
 .comment-picture__image {
   position: absolute;
-  left: 0;
+  inset-inline-start: 0;
   overflow: hidden;
   width: var(--sp2);
   height: var(--sp2);
@@ -116,7 +125,7 @@
 
   .indented & {
     @media (--grid-md) {
-      left: calc(-1 * var(--sp4));
+      inset-inline-start: calc(-1 * var(--sp4));
       width: var(--sp2);
       height: var(--sp2);
     }
@@ -136,8 +145,10 @@
     /* @TODO: create image-style for profile's avatar to have image squared by default. */
     @media all and (-ms-high-contrast: active), (-ms-high-contrast: none) {
       position: absolute;
+      /* stylelint-disable csstools/use-logical */
       top: 50%;
       left: 50%;
+      /* stylelint-enable csstools/use-logical */
       width: 100%;
       height: auto;
       transform: translate(-50%, -50%);
@@ -145,7 +156,7 @@
   }
 
   @media (--grid-md) {
-    left: calc(-1 * var(--sp5));
+    inset-inline-start: calc(-1 * var(--sp5));
     width: var(--sp3);
     height: var(--sp3);
   }
@@ -162,7 +173,7 @@
 }
 
 .comment__author {
-  margin-right: var(--sp);
+  margin-inline-end: var(--sp);
   font-family: var(--font-sans);
   font-size: 16px;
   font-weight: 700;
@@ -182,30 +193,35 @@
 }
 
 .indented {
-  margin-left: var(--comment-indentation);
+  margin-inline-start: var(--comment-indentation);
 
   > .comment:not(:last-of-type):not(.has-children):before {
     position: absolute;
-    top: var(--sp2); /* Comment's padding-top */
-    left: calc(-1 * var(--comment-indentation) - var(--sp));
+    inset-block-start: var(--sp2);
+    inset-inline-start: calc(-1 * var(--comment-indentation) - var(--sp)); /* Comment's padding-top */
     width: 0;
     height: 100%;
     content: "";
-    border-left: solid 1px var(--color--gray-80);
+    border-inline-start: solid 1px var(--color--gray-80);
 
     @media (--md) {
-      left: calc(-1 * var(--comment-indentation--md) + var(--sp));
+      inset-inline-start: calc(-1 * var(--comment-indentation--md) + var(--sp));
     }
   }
 
   @media (--md) {
-    margin-left: var(--comment-indentation--md);
+    margin-inline-start: var(--comment-indentation--md);
   }
 }
 
 .show-hide-btn {
-  margin: var(--sp2) 0 0 var(--sp3);
-  padding: 0;
+  margin-block-start: var(--sp2);
+  margin-block-end: 0;
+  margin-inline-start: var(--sp3);
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   cursor: pointer;
   color: var(--color--gray-10);
   border: 0;
@@ -224,6 +240,6 @@
   }
 
   @media (--grid-md) {
-    margin-left: 0;
+    margin-inline-start: 0;
   }
 }
diff --git a/css/components/container-inline.module.css b/css/components/container-inline.module.css
index 3c96146..806276c 100644
--- a/css/components/container-inline.module.css
+++ b/css/components/container-inline.module.css
@@ -15,19 +15,13 @@
   display: inline-block;
 }
 
-.form-items-inline { /* 2px */
-}
-
-[dir] .form-items-inline {
+.form-items-inline {
   margin-top: -0.125em;
-  margin-bottom: -0.125em;
+  margin-bottom: -0.125em; /* 2px */
 }
 
 .form-items-inline > .form-item {
   display: inline-block;
-}
-
-[dir] .form-items-inline > .form-item {
   margin-top: 0.125em;
   margin-bottom: 0.125em;
 }
diff --git a/css/components/container-inline.module.pcss.css b/css/components/container-inline.module.pcss.css
index 1de39bb..f6d46f1 100644
--- a/css/components/container-inline.module.pcss.css
+++ b/css/components/container-inline.module.pcss.css
@@ -9,12 +9,10 @@
 }
 
 .form-items-inline {
-  margin-top: -0.125em; /* 2px */
-  margin-bottom: -0.125em;
+  margin-block: -0.125em; /* 2px */
 }
 
 .form-items-inline > .form-item {
   display: inline-block;
-  margin-top: 0.125em;
-  margin-bottom: 0.125em;
+  margin-block: 0.125em;
 }
diff --git a/css/components/details.css b/css/components/details.css
index a0a4a4a..e37c838 100644
--- a/css/components/details.css
+++ b/css/components/details.css
@@ -78,12 +78,9 @@
 
 .olivero-details {
   display: block;
-  color: inherit;
-}
-
-[dir] .olivero-details {
   margin-top: 18px;
   margin-bottom: 18px;
+  color: inherit;
   border: 1px solid #e7edf1;
   border-radius: 2px;
   box-shadow: 0 1px 4px #d7e1e8;
@@ -91,9 +88,28 @@
 
 /* Details summary styles */
 
+[dir="ltr"] .olivero-details__summary {
+  padding-left: 36px;
+}
+
+[dir="rtl"] .olivero-details__summary {
+  padding-right: 36px;
+}
+
+[dir="ltr"] .olivero-details__summary {
+  padding-right: 18px;
+}
+
+[dir="rtl"] .olivero-details__summary {
+  padding-left: 18px;
+}
+
 .olivero-details__summary {
   position: relative;
+  padding-top: 18px;
+  padding-bottom: 18px;
   list-style: none;
+  cursor: pointer;
   transition: background-color
 0.12s
 ease-in-out;
@@ -102,26 +118,24 @@ ease-in-out;
   -ms-hyphens: auto;
   hyphens: auto;
   color: inherit;
+  background-color: #f7f9fa;
   font-size: 1.125rem;
   font-weight: 700;
   line-height: 1.125rem;
 }
 
-[dir] .olivero-details__summary {
-  cursor: pointer;
-  background-color: #f7f9fa;
-}
+/* Arrow icon */
 
-[dir=ltr] .olivero-details__summary {
-  padding: 18px 18px 18px 36px;
+[dir="ltr"] .olivero-details__summary:before,[dir="ltr"] 
+.collapse-processed > .olivero-details__summary .details-title:before {
+  left: 13.5px;
 }
 
-[dir=rtl] .olivero-details__summary {
-  padding: 18px 36px 18px 18px;
+[dir="rtl"] .olivero-details__summary:before,[dir="rtl"] 
+.collapse-processed > .olivero-details__summary .details-title:before {
+  right: 13.5px;
 }
 
-/* Arrow icon */
-
 .olivero-details__summary:before,
 .collapse-processed > .olivero-details__summary .details-title:before {
   position: absolute;
@@ -131,26 +145,16 @@ ease-in-out;
   height: 18px;
   content: "";
   transition: 0.2s ease;
-}
-
-[dir] .olivero-details__summary:before, [dir] .collapse-processed > .olivero-details__summary .details-title:before {
   transform: rotate(0);
   background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M5.2109375,1.3144531 3.7890625,2.7226562 9.0917969,8.0761719 3.7890625,13.429688 5.2109375,14.837891 11.908203,8.0761719Z' fill='%23313637'/%3E%3C/svg%3E");
   background-repeat: no-repeat;
   background-position: 50% 50%;
 }
 
-[dir=ltr] .olivero-details__summary:before, [dir=ltr] .collapse-processed > .olivero-details__summary .details-title:before {
-  left: 13.5px;
-}
-
-[dir=rtl] .olivero-details__summary:before, [dir=rtl] .collapse-processed > .olivero-details__summary .details-title:before {
-  right: 13.5px;
-}
-
 @media screen and (-ms-high-contrast: active) {
 
-[dir] .olivero-details__summary:before, [dir] .collapse-processed > .olivero-details__summary .details-title:before {
+.olivero-details__summary:before,
+.collapse-processed > .olivero-details__summary .details-title:before {
     background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M5.2109375,1.3144531 3.7890625,2.7226562 9.0917969,8.0761719 3.7890625,13.429688 5.2109375,14.837891 11.908203,8.0761719Z' fill='%23ffffff'/%3E%3C/svg%3E")
 }
   }
@@ -161,27 +165,16 @@ ease-in-out;
 .collapse-processed > .olivero-details__summary .details-title:after {
   position: absolute;
   top: -1px;
+  right: -1px;
   bottom: -1px;
+  left: -1px;
   content: "";
   pointer-events: none;
   opacity: 0;
-}
-
-[dir] .olivero-details__summary:after, [dir] .collapse-processed > .olivero-details__summary .details-title:after {
   border-radius: 2px;
   box-shadow: inset 0 0 0 2px #53b0eb;
 }
 
-[dir=ltr] .olivero-details__summary:after, [dir=ltr] .collapse-processed > .olivero-details__summary .details-title:after {
-  right: -1px;
-  left: -1px;
-}
-
-[dir=rtl] .olivero-details__summary:after, [dir=rtl] .collapse-processed > .olivero-details__summary .details-title:after {
-  left: -1px;
-  right: -1px;
-}
-
 /* Hide the marker on Chrome */
 
 .olivero-details__summary::-webkit-details-marker {
@@ -196,7 +189,7 @@ ease-in-out;
 
 /* Details summary, hover state */
 
-[dir] .olivero-details__summary:hover {
+.olivero-details__summary:hover {
   background-color: #e7edf1;
 }
 
@@ -211,14 +204,11 @@ ease-in-out;
 
 /* Rotate arrow icon of the details summary, when details expanded */
 
-[dir=ltr] .olivero-details[open] > .olivero-details__summary::before, [dir=ltr] .collapse-processed[open] > .olivero-details__summary .details-title::before {
+.olivero-details[open] > .olivero-details__summary::before,
+.collapse-processed[open] > .olivero-details__summary .details-title::before {
   transform: rotate(90deg);
 }
 
-[dir=rtl] .olivero-details[open] > .olivero-details__summary::before, [dir=rtl] .collapse-processed[open] > .olivero-details__summary .details-title::before {
-  transform: rotate(-90deg);
-}
-
 /**
  * Safari (at least version 12.1) cannot handle details summary arrow
  * icon transition properly.
@@ -248,8 +238,25 @@ ease-in-out;
 
 /* Collapse processed for non-supporting browsers like IE or Edge */
 
-[dir] .collapse-processed > .olivero-details__summary {
-  padding: 0;
+[dir="ltr"] .collapse-processed > .olivero-details__summary {
+  padding-left: 0;
+}
+
+[dir="rtl"] .collapse-processed > .olivero-details__summary {
+  padding-right: 0;
+}
+
+[dir="ltr"] .collapse-processed > .olivero-details__summary {
+  padding-right: 0;
+}
+
+[dir="rtl"] .collapse-processed > .olivero-details__summary {
+  padding-left: 0;
+}
+
+.collapse-processed > .olivero-details__summary {
+  padding-top: 0;
+  padding-bottom: 0;
 }
 
 .collapse-processed > .olivero-details__summary:before {
@@ -260,75 +267,88 @@ ease-in-out;
     content: none;
   }
 
+[dir="ltr"] .collapse-processed > .olivero-details__summary .details-title {
+  padding-left: 36px;
+}
+
+[dir="rtl"] .collapse-processed > .olivero-details__summary .details-title {
+  padding-right: 36px;
+}
+
+[dir="ltr"] .collapse-processed > .olivero-details__summary .details-title {
+  padding-right: 18px;
+}
+
+[dir="rtl"] .collapse-processed > .olivero-details__summary .details-title {
+  padding-left: 18px;
+}
+
 .collapse-processed > .olivero-details__summary .details-title {
   position: relative;
   display: block;
+  padding-top: 18px;
+  padding-bottom: 18px;
   transition: background-color
 0.12s
 ease-in-out;
   text-decoration: none;
   color: inherit;
-}
-
-[dir] .collapse-processed > .olivero-details__summary .details-title {
   background-color: #f7f9fa;
 }
 
-[dir=ltr] .collapse-processed > .olivero-details__summary .details-title {
-  padding: 18px 18px 18px 36px;
-}
-
-[dir=rtl] .collapse-processed > .olivero-details__summary .details-title {
-  padding: 18px 36px 18px 18px;
-}
-
 .collapse-processed > .olivero-details__summary .details-title:focus {
   outline: none;
 }
 
-[dir] .collapse-processed > .olivero-details__summary .details-title:hover {
+.collapse-processed > .olivero-details__summary .details-title:hover {
   background-color: #e7edf1;
 }
 
 @media screen and (-ms-high-contrast: active) {
   .collapse-processed > .olivero-details__summary .details-title::after {
     top: -5px;
-    bottom: -5px;
-  }
-  [dir] .collapse-processed > .olivero-details__summary .details-title::after {
-    border: 2px dotted;
-  }
-  [dir=ltr] .collapse-processed > .olivero-details__summary .details-title::after {
     right: -5px;
+    bottom: -5px;
     left: -5px;
-  }
-  [dir=rtl] .collapse-processed > .olivero-details__summary .details-title::after {
-    left: -5px;
-    right: -5px;
+    border: 2px dotted;
   }
 }
 
 /* Details content wrapper */
 
-[dir] .olivero-details__wrapper {
+.olivero-details__wrapper {
   margin: 18px;
 }
 
 @media (min-width: 1000px) {
 
-[dir] .olivero-details__wrapper {
-    margin: 27px 36px
+[dir="ltr"] .olivero-details__wrapper {
+    margin-left: 36px;
+  }
+
+[dir="rtl"] .olivero-details__wrapper {
+    margin-right: 36px;
+  }
+
+[dir="ltr"] .olivero-details__wrapper {
+    margin-right: 36px;
+  }
+
+[dir="rtl"] .olivero-details__wrapper {
+    margin-left: 36px;
+  }
+
+.olivero-details__wrapper {
+    margin-top: 27px;
+    margin-bottom: 27px
 }
   }
 
 /* Description */
 
 .olivero-details__description {
+  margin-bottom: 18px;
   color: #313637;
   font-size: 0.8125rem;
   line-height: 1.125rem;
 }
-
-[dir] .olivero-details__description {
-  margin-bottom: 18px;
-}
diff --git a/css/components/details.pcss.css b/css/components/details.pcss.css
index bddc9e2..45d7dfa 100644
--- a/css/components/details.pcss.css
+++ b/css/components/details.pcss.css
@@ -12,8 +12,7 @@
 
 .olivero-details {
   display: block;
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp1);
+  margin-block: var(--sp1);
   color: inherit;
   border: var(--details-border-width) solid var(--color--gray-80);
   border-radius: var(--border-radius-base);
@@ -23,7 +22,9 @@
 /* Details summary styles */
 .olivero-details__summary {
   position: relative;
-  padding: var(--sp1) var(--sp1) var(--sp1) var(--sp2);
+  padding-block: var(--sp1);
+  padding-inline-start: var(--sp2);
+  padding-inline-end: var(--sp1);
   list-style: none;
   cursor: pointer;
   transition: var(--details-summary-transition);
@@ -40,8 +41,8 @@
 .olivero-details__summary:before,
 .collapse-processed > .olivero-details__summary .details-title:before {
   position: absolute;
-  top: var(--sp1);
-  left: var(--sp0-75);
+  inset-block-start: var(--sp1);
+  inset-inline-start: var(--sp0-75);
   display: inline-block;
   width: var(--sp1);
   height: var(--sp1);
@@ -61,10 +62,7 @@
 .olivero-details__summary:after,
 .collapse-processed > .olivero-details__summary .details-title:after {
   position: absolute;
-  top: calc(var(--details-border-width) * -1);
-  right: calc(var(--details-border-width) * -1);
-  bottom: calc(var(--details-border-width) * -1);
-  left: calc(var(--details-border-width) * -1);
+  inset: calc(var(--details-border-width) * -1);
   content: "";
   pointer-events: none;
   opacity: 0;
@@ -128,7 +126,9 @@
 
 /* Collapse processed for non-supporting browsers like IE or Edge */
 .collapse-processed > .olivero-details__summary {
-  padding: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
 
   &:before {
     content: none;
@@ -142,7 +142,9 @@
 .collapse-processed > .olivero-details__summary .details-title {
   position: relative;
   display: block;
-  padding: var(--sp1) var(--sp1) var(--sp1) var(--sp2);
+  padding-block: var(--sp1) ;
+  padding-inline-start: var(--sp2);
+  padding-inline-end: var(--sp1);
   transition: var(--details-summary-transition);
   text-decoration: none;
   color: inherit;
@@ -159,10 +161,7 @@
 
 @media screen and (-ms-high-contrast: active) {
   .collapse-processed > .olivero-details__summary .details-title::after {
-    top: -5px;
-    right: -5px;
-    bottom: -5px;
-    left: -5px;
+    inset: -5px;
     border: 2px dotted;
   }
 }
@@ -172,13 +171,16 @@
   margin: var(--sp1);
 
   @media (--lg) {
-    margin: var(--sp1-5) var(--sp2);
+    margin-block-start: var(--sp1-5);
+    margin-block-end: var(--sp1-5);
+    margin-inline-start: var(--sp2);
+    margin-inline-end: var(--sp2);
   }
 }
 
 /* Description */
 .olivero-details__description {
-  margin-bottom: var(--sp1);
+  margin-block-end: var(--sp1);
   color: var(--color--gray-10);
   font-size: var(--font-size-xs);
   line-height: var(--line-height-s);
diff --git a/css/components/dropbutton.css b/css/components/dropbutton.css
index 40fb8c2..4e362d4 100644
--- a/css/components/dropbutton.css
+++ b/css/components/dropbutton.css
@@ -76,16 +76,40 @@
   /* Form */
 }
 
-[dir] .dropbutton {
-  background-color: #0d77b5;
+[dir="ltr"] .dropbutton {
+  border-top-left-radius: 2px;
+}
+
+[dir="rtl"] .dropbutton {
+  border-top-right-radius: 2px;
+}
+
+[dir="ltr"] .dropbutton {
+  border-top-right-radius: 0;
+}
+
+[dir="rtl"] .dropbutton {
+  border-top-left-radius: 0;
+}
+
+[dir="ltr"] .dropbutton {
+  border-bottom-left-radius: 2px;
+}
+
+[dir="rtl"] .dropbutton {
+  border-bottom-right-radius: 2px;
+}
+
+[dir="ltr"] .dropbutton {
+  border-bottom-right-radius: 0;
 }
 
-[dir=ltr] .dropbutton {
-  border-radius: 2px 0 0 2px;
+[dir="rtl"] .dropbutton {
+  border-bottom-left-radius: 0;
 }
 
-[dir=rtl] .dropbutton {
-  border-radius: 0 2px 2px 0;
+.dropbutton {
+  background-color: #0d77b5;
 }
 
 .js .dropbutton-widget .dropbutton {
@@ -97,24 +121,62 @@
   line-height: 1.125rem;
 }
 
-.dropbutton-action a {
-    text-decoration: none;
-    color: #fff;
-  }
+[dir="ltr"] .dropbutton-action a {
+    padding-left: 18px;
+}
 
-[dir] .dropbutton-action a {
-    padding: 4.5px 18px;
-  }
+[dir="rtl"] .dropbutton-action a {
+    padding-right: 18px;
+}
 
-[dir=ltr] .dropbutton-action a {
-  border-radius: 2px 0 0 2px;
-  }
+[dir="ltr"] .dropbutton-action a {
+    padding-right: 18px;
+}
+
+[dir="rtl"] .dropbutton-action a {
+    padding-left: 18px;
+}
+
+[dir="ltr"] .dropbutton-action a {
+    border-top-left-radius: 2px;
+}
+
+[dir="rtl"] .dropbutton-action a {
+    border-top-right-radius: 2px;
+}
+
+[dir="ltr"] .dropbutton-action a {
+    border-top-right-radius: 0;
+}
+
+[dir="rtl"] .dropbutton-action a {
+    border-top-left-radius: 0;
+}
+
+[dir="ltr"] .dropbutton-action a {
+    border-bottom-left-radius: 2px;
+}
+
+[dir="rtl"] .dropbutton-action a {
+    border-bottom-right-radius: 2px;
+}
+
+[dir="ltr"] .dropbutton-action a {
+    border-bottom-right-radius: 0;
+}
 
-[dir=rtl] .dropbutton-action a {
-    border-radius: 0 2px 2px 0;
+[dir="rtl"] .dropbutton-action a {
+    border-bottom-left-radius: 0;
+}
+
+.dropbutton-action a {
+    padding-top: 4.5px;
+    padding-bottom: 4.5px;
+    text-decoration: none;
+    color: #fff;
   }
 
-[dir] .dropbutton-action a:hover {
+.dropbutton-action a:hover {
       background-color: #2494db;
     }
 
@@ -123,9 +185,6 @@
 solid
 #53b0eb;
       outline-offset: 2px;
-    }
-
-[dir] .dropbutton-action a:focus {
       background-color: #2494db;
       box-shadow: var(--shadow-focusable-with-outline);
     }
@@ -136,62 +195,103 @@ solid
 #53b0eb;
       }
 
-[dir] .dropbutton-toggle {
-  background-color: #0d77b5;
-}
-
-[dir=ltr] .dropbutton-toggle {
+[dir="ltr"] .dropbutton-toggle {
   border-left: 1px solid #fff;
-  border-radius: 0 2px 2px 0;
 }
 
-[dir=rtl] .dropbutton-toggle {
+[dir="rtl"] .dropbutton-toggle {
   border-right: 1px solid #fff;
-  border-radius: 2px 0 0 2px;
 }
 
-[dir] .dropbutton-toggle:hover {
+[dir="ltr"] .dropbutton-toggle {
+  border-top-left-radius: 0;
+}
+
+[dir="rtl"] .dropbutton-toggle {
+  border-top-right-radius: 0;
+}
+
+[dir="ltr"] .dropbutton-toggle {
+  border-top-right-radius: 2px;
+}
+
+[dir="rtl"] .dropbutton-toggle {
+  border-top-left-radius: 2px;
+}
+
+[dir="ltr"] .dropbutton-toggle {
+  border-bottom-left-radius: 0;
+}
+
+[dir="rtl"] .dropbutton-toggle {
+  border-bottom-right-radius: 0;
+}
+
+[dir="ltr"] .dropbutton-toggle {
+  border-bottom-right-radius: 2px;
+}
+
+[dir="rtl"] .dropbutton-toggle {
+  border-bottom-left-radius: 2px;
+}
+
+.dropbutton-toggle {
+  background-color: #0d77b5;
+}
+
+.dropbutton-toggle:hover {
     background-color: #2494db;
   }
 
-[dir=ltr] .dropbutton-toggle button {
-  border-radius: 0 2px 2px 0;
-  }
+[dir="ltr"] .dropbutton-toggle button {
+    border-top-left-radius: 0;
+}
 
-[dir=rtl] .dropbutton-toggle button {
-    border-radius: 2px 0 0 2px;
-  }
+[dir="rtl"] .dropbutton-toggle button {
+    border-top-right-radius: 0;
+}
+
+[dir="ltr"] .dropbutton-toggle button {
+    border-top-right-radius: 2px;
+}
+
+[dir="rtl"] .dropbutton-toggle button {
+    border-top-left-radius: 2px;
+}
+
+[dir="ltr"] .dropbutton-toggle button {
+    border-bottom-left-radius: 0;
+}
+
+[dir="rtl"] .dropbutton-toggle button {
+    border-bottom-right-radius: 0;
+}
+
+[dir="ltr"] .dropbutton-toggle button {
+    border-bottom-right-radius: 2px;
+}
+
+[dir="rtl"] .dropbutton-toggle button {
+    border-bottom-left-radius: 2px;
+}
 
 .dropbutton-toggle button:focus {
       outline: 2px
 solid
 #53b0eb;
       outline-offset: 2px;
-    }
-
-[dir] .dropbutton-toggle button:focus {
       background-color: #2494db;
       box-shadow: var(--shadow-focusable-with-outline);
     }
 
-[dir] .dropbutton-arrow {
-  border-top-color: #fff;
-}
-
-[dir=ltr] .dropbutton-arrow {
-  right: 0;
-  left: 0;
-  margin-right: auto;
-  margin-left: auto;
-}
-
-[dir=rtl] .dropbutton-arrow {
+.dropbutton-arrow {
   left: 0;
   right: 0;
   margin-left: auto;
   margin-right: auto;
+  border-top-color: #fff;
 }
 
-[dir] .dropbutton-multiple.open .dropbutton-arrow {
+.dropbutton-multiple.open .dropbutton-arrow {
     border-bottom-color: #fff;
   }
diff --git a/css/components/dropbutton.pcss.css b/css/components/dropbutton.pcss.css
index 35d37a5..b7c0042 100644
--- a/css/components/dropbutton.pcss.css
+++ b/css/components/dropbutton.pcss.css
@@ -6,7 +6,10 @@
 @import "../base/variables.pcss.css";
 
 .dropbutton {
-  border-radius: var(--border-radius) 0 0 var(--border-radius);
+  border-start-start-radius: var(--border-radius-base);
+  border-start-end-radius: 0;
+  border-end-start-radius: var(--border-radius-base);
+  border-end-end-radius: 0;
   background-color: var(--color--blue-20);
 
   .js .dropbutton-widget & {
@@ -19,10 +22,15 @@
   line-height: var(--line-height-s);
 
   a {
-    padding: var(--sp0-25) var(--sp1);
+    padding-block: var(--sp0-25);
+    padding-inline-start: var(--sp1);
+    padding-inline-end: var(--sp1);
     text-decoration: none;
     color: var(--color--white);
-    border-radius: var(--border-radius) 0 0 var(--border-radius);
+    border-start-start-radius: var(--border-radius);
+    border-start-end-radius: 0;
+    border-end-start-radius: var(--border-radius);
+    border-end-end-radius: 0;
 
     &:hover {
       background-color: var(--color--blue-50);
@@ -42,8 +50,11 @@
 }
 
 .dropbutton-toggle {
-  border-left: 1px solid var(--color--white);
-  border-radius: 0 var(--border-radius) var(--border-radius) 0;
+  border-inline-start: 1px solid var(--color--white);
+  border-start-start-radius: 0;
+  border-start-end-radius: var(--border-radius-base);
+  border-end-start-radius: 0;
+  border-end-end-radius: var(--border-radius-base);
   background-color: var(--color--blue-20);
 
   &:hover {
@@ -51,7 +62,10 @@
   }
 
   button {
-    border-radius: 0 var(--border-radius) var(--border-radius) 0;
+    border-start-start-radius: 0;
+    border-start-end-radius: var(--border-radius-base);
+    border-end-start-radius: 0;
+    border-end-end-radius: var(--border-radius-base);
 
     &:focus {
       outline: var(--outline--base);
@@ -63,10 +77,8 @@
 }
 
 .dropbutton-arrow {
-  right: 0;
-  left: 0;
-  margin-right: auto;
-  margin-left: auto;
+  inset-inline: 0;
+  margin-inline: auto;
   border-top-color: var(--color--white);
 
   .dropbutton-multiple.open & {
diff --git a/css/components/embedded-media.css b/css/components/embedded-media.css
index f39a9eb..c8c2658 100644
--- a/css/components/embedded-media.css
+++ b/css/components/embedded-media.css
@@ -76,12 +76,31 @@
   /* Form */
 }
 
-[dir] figure {
+figure {
   background: #f7f9fa;
 }
 
+[dir="ltr"] figcaption {
+  padding-left: 9px;
+}
+
+[dir="rtl"] figcaption {
+  padding-right: 9px;
+}
+
+[dir="ltr"] figcaption {
+  padding-right: 9px;
+}
+
+[dir="rtl"] figcaption {
+  padding-left: 9px;
+}
+
 figcaption {
+  padding-top: 9px;
+  padding-bottom: 9px;
   color: #313637;
+  background: #f7f9fa;
   font-family: "Lora"
 ,
 "georgia"
@@ -92,168 +111,253 @@ serif;
   line-height: 1.125rem;
 }
 
-[dir] figcaption {
-  padding: 9px;
-  background: #f7f9fa;
-}
-
 @media (min-width: 500px) {
 
-[dir] figcaption {
-    padding: 18px
+[dir="ltr"] figcaption {
+    padding-left: 18px;
+  }
+
+[dir="rtl"] figcaption {
+    padding-right: 18px;
+  }
+
+[dir="ltr"] figcaption {
+    padding-right: 18px;
+  }
+
+[dir="rtl"] figcaption {
+    padding-left: 18px;
+  }
+
+figcaption {
+    padding-top: 18px;
+    padding-bottom: 18px
 }
   }
 
-.align-right { /* Override core's align.module.css. */
-  max-width: 100%;
+[dir="ltr"] .align-right {
+  margin-left: 0;
+}
+
+[dir="rtl"] .align-right {
+  margin-right: 0;
+}
+
+[dir="ltr"] .align-right {
+  margin-right: 0;
+}
+
+[dir="rtl"] .align-right {
+  margin-left: 0;
 }
 
-[dir] .align-right {
-  float: none;
-  margin: 54px 0;
+.align-right {
+  float: none; /* Override core's align.module.css. */
+  max-width: 100%;
+  margin-top: 54px;
+  margin-bottom: 54px;
 }
 
 /* Pull out of grid if nested in content narrow layout. */
 
 @media (min-width: 700px) {
 
-[dir=ltr] .layout--content-narrow .align-right, [dir=ltr] .layout--pass--content-narrow > * .align-right {
-    margin-right: calc(-1*((100vw - 504px)/14 + 36px))
+[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
+  .layout--pass--content-narrow > * .align-right {
+      margin-right: calc(-1*((100vw - 504px)/14 + 36px));
   }
 
-[dir=rtl] .layout--content-narrow .align-right, [dir=rtl] .layout--pass--content-narrow > * .align-right {
-      margin-left: calc(-1*((100vw - 504px)/14 + 36px))
+[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
+  .layout--pass--content-narrow > * .align-right {
+      margin-left: calc(-1*((100vw - 504px)/14 + 36px));
   }
     }
 
 @media (min-width: 1000px) {
 
-[dir=ltr] .layout--content-narrow .align-right, [dir=ltr] .layout--pass--content-narrow > * .align-right {
-    margin-right: calc(-2*((100vw - 519px)/14 + 36px))
+[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
+  .layout--pass--content-narrow > * .align-right {
+      margin-right: calc(-2*((100vw - 519px)/14 + 36px));
   }
 
-[dir=rtl] .layout--content-narrow .align-right, [dir=rtl] .layout--pass--content-narrow > * .align-right {
-      margin-left: calc(-2*((100vw - 519px)/14 + 36px))
+[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
+  .layout--pass--content-narrow > * .align-right {
+      margin-left: calc(-2*((100vw - 519px)/14 + 36px));
   }
     }
 
 @media (min-width: 1200px) {
 
-[dir=ltr] .layout--content-narrow .align-right, [dir=ltr] .layout--pass--content-narrow > * .align-right {
-    margin-right: calc(-3*((100vw - 645px)/14 + 36px))
+[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
+  .layout--pass--content-narrow > * .align-right {
+      margin-right: calc(-3*((100vw - 645px)/14 + 36px));
   }
 
-[dir=rtl] .layout--content-narrow .align-right, [dir=rtl] .layout--pass--content-narrow > * .align-right {
-      margin-left: calc(-3*((100vw - 645px)/14 + 36px))
+[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
+  .layout--pass--content-narrow > * .align-right {
+      margin-left: calc(-3*((100vw - 645px)/14 + 36px));
   }
     }
 
 @media (min-width: 1440px) {
 
-[dir=ltr] .layout--content-narrow .align-right, [dir=ltr] .layout--pass--content-narrow > * .align-right {
-    margin-right: -281.57143px
+[dir="ltr"] .layout--content-narrow .align-right,[dir="ltr"] 
+  .layout--pass--content-narrow > * .align-right {
+      margin-right: -281.57143px;
   }
 
-[dir=rtl] .layout--content-narrow .align-right, [dir=rtl] .layout--pass--content-narrow > * .align-right {
-      margin-left: -281.57143px
+[dir="rtl"] .layout--content-narrow .align-right,[dir="rtl"] 
+  .layout--pass--content-narrow > * .align-right {
+      margin-left: -281.57143px;
   }
     }
 
 @media (min-width: 700px) {
 
+[dir="ltr"] .align-right {
+    float: right;
+  }
+
+[dir="rtl"] .align-right {
+    float: left;
+  }
+
+[dir="ltr"] .align-right {
+    margin-left: 18px;
+  }
+
+[dir="rtl"] .align-right {
+    margin-right: 18px;
+  }
+
+[dir="ltr"] .align-right {
+    margin-right: 0;
+  }
+
+[dir="rtl"] .align-right {
+    margin-left: 0;
+  }
+
 .align-right {
-    max-width: 50%
+    max-width: 50%;
+    margin-top: 18px;
+    margin-bottom: 18px
+}
+  }
+
+[dir="ltr"] .align-left {
+  margin-left: 0;
 }
 
-[dir=ltr] .align-right {
-    float: right;
-    margin: 18px 0 18px 18px
+[dir="rtl"] .align-left {
+  margin-right: 0;
 }
 
-[dir=rtl] .align-right {
-    float: left;
-    margin: 18px 18px 18px 0
+[dir="ltr"] .align-left {
+  margin-right: 0;
 }
-  }
 
-.align-left { /* Override core's align.module.css. */
-  max-width: 100%;
+[dir="rtl"] .align-left {
+  margin-left: 0;
 }
 
-[dir] .align-left {
-  float: none;
-  margin: 54px 0;
+.align-left {
+  float: none; /* Override core's align.module.css. */
+  max-width: 100%;
+  margin-top: 54px;
+  margin-bottom: 54px;
 }
 
 /* Pull out of grid if nested in content narrow layout. */
 
 @media (min-width: 700px) {
 
-[dir=ltr] .layout--content-narrow .align-left, [dir=ltr] .layout--pass--content-narrow > * .align-left {
-    margin-left: calc(-1*((100vw - 504px)/14 + 36px))
+[dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] 
+  .layout--pass--content-narrow > * .align-left {
+      margin-left: calc(-1*((100vw - 504px)/14 + 36px));
   }
 
-[dir=rtl] .layout--content-narrow .align-left, [dir=rtl] .layout--pass--content-narrow > * .align-left {
-      margin-right: calc(-1*((100vw - 504px)/14 + 36px))
+[dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] 
+  .layout--pass--content-narrow > * .align-left {
+      margin-right: calc(-1*((100vw - 504px)/14 + 36px));
   }
     }
 
 @media (min-width: 1000px) {
 
-[dir=ltr] .layout--content-narrow .align-left, [dir=ltr] .layout--pass--content-narrow > * .align-left {
-    margin-left: calc(-1*((100vw - 519px)/14 + 36px))
+[dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] 
+  .layout--pass--content-narrow > * .align-left {
+      margin-left: calc(-1*((100vw - 519px)/14 + 36px));
   }
 
-[dir=rtl] .layout--content-narrow .align-left, [dir=rtl] .layout--pass--content-narrow > * .align-left {
-      margin-right: calc(-1*((100vw - 519px)/14 + 36px))
+[dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] 
+  .layout--pass--content-narrow > * .align-left {
+      margin-right: calc(-1*((100vw - 519px)/14 + 36px));
   }
     }
 
 @media (min-width: 1200px) {
 
-[dir=ltr] .layout--content-narrow .align-left, [dir=ltr] .layout--pass--content-narrow > * .align-left {
-    margin-left: calc(-1*((100vw - 645px)/14 + 36px))
+[dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] 
+  .layout--pass--content-narrow > * .align-left {
+      margin-left: calc(-1*((100vw - 645px)/14 + 36px));
   }
 
-[dir=rtl] .layout--content-narrow .align-left, [dir=rtl] .layout--pass--content-narrow > * .align-left {
-      margin-right: calc(-1*((100vw - 645px)/14 + 36px))
+[dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] 
+  .layout--pass--content-narrow > * .align-left {
+      margin-right: calc(-1*((100vw - 645px)/14 + 36px));
   }
     }
 
 @media (min-width: 1440px) {
 
-[dir=ltr] .layout--content-narrow .align-left, [dir=ltr] .layout--pass--content-narrow > * .align-left {
-    margin-left: -93.85714px
+[dir="ltr"] .layout--content-narrow .align-left,[dir="ltr"] 
+  .layout--pass--content-narrow > * .align-left {
+      margin-left: -93.85714px;
   }
 
-[dir=rtl] .layout--content-narrow .align-left, [dir=rtl] .layout--pass--content-narrow > * .align-left {
-      margin-right: -93.85714px
+[dir="rtl"] .layout--content-narrow .align-left,[dir="rtl"] 
+  .layout--pass--content-narrow > * .align-left {
+      margin-right: -93.85714px;
   }
     }
 
 @media (min-width: 700px) {
 
-.align-left {
-    max-width: 50% /* Extra right margins in case of aligning next to lists. */
-}
-
-[dir=ltr] .align-left {
+[dir="ltr"] .align-left {
     float: left;
-    margin: 18px 36px 18px 0
-}
+  }
 
-[dir=rtl] .align-left {
+[dir="rtl"] .align-left {
     float: right;
-    margin: 18px 0 18px 36px
-}
   }
 
-[dir=ltr] .align-center img, [dir=ltr] .align-center video, [dir=ltr] .align-center audio {
-  margin-right: auto;
-  margin-left: auto;
+[dir="ltr"] .align-left {
+    margin-left: 0;
+  }
+
+[dir="rtl"] .align-left {
+    margin-right: 0;
+  }
+
+[dir="ltr"] .align-left {
+    margin-right: 36px;
+  }
+
+[dir="rtl"] .align-left {
+    margin-left: 36px;
+  }
+
+.align-left {
+    max-width: 50%;
+    margin-top: 18px;
+    margin-bottom: 18px /* Extra right margins in case of aligning next to lists. */
 }
+  }
 
-[dir=rtl] .align-center img, [dir=rtl] .align-center video, [dir=rtl] .align-center audio {
+.align-center img,
+.align-center video,
+.align-center audio {
   margin-left: auto;
   margin-right: auto;
 }
diff --git a/css/components/embedded-media.pcss.css b/css/components/embedded-media.pcss.css
index b037ad9..ebd8825 100644
--- a/css/components/embedded-media.pcss.css
+++ b/css/components/embedded-media.pcss.css
@@ -10,7 +10,9 @@ figure {
 }
 
 figcaption {
-  padding: var(--sp0-5);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp0-5);
+  padding-inline-end: var(--sp0-5);
   color: var(--color--gray-10);
   background: var(--color--gray-95);
   font-family: var(--font-serif);
@@ -19,79 +21,91 @@ figcaption {
   line-height: var(--sp);
 
   @media (--sm) {
-    padding: var(--sp);
+    padding-block: var(--sp);
+    padding-inline-start: var(--sp);
+    padding-inline-end: var(--sp);
   }
 }
 
 .align-right {
   float: none; /* Override core's align.module.css. */
   max-width: 100%;
-  margin: var(--sp3) 0;
+  margin-block: var(--sp3);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 
   /* Pull out of grid if nested in content narrow layout. */
   .layout--content-narrow &,
   .layout--pass--content-narrow > * & {
     @media (--grid-md) {
-      margin-right: calc(-1 * ((var(--grid-col-width--md) + var(--grid-gap--md))));
+      margin-inline-end: calc(-1 * ((var(--grid-col-width--md) + var(--grid-gap--md))));
     }
 
     @media (--lg) {
-      margin-right: calc(-2 * ((var(--grid-col-width--lg) + var(--grid-gap--lg))));
+      margin-inline-end: calc(-2 * ((var(--grid-col-width--lg) + var(--grid-gap--lg))));
     }
 
     @media (--nav) {
-      margin-right: calc(-3 * ((var(--grid-col-width--nav) + var(--grid-gap--nav))));
+      margin-inline-end: calc(-3 * ((var(--grid-col-width--nav) + var(--grid-gap--nav))));
     }
 
     @media (--grid-max) {
-      margin-right: calc(-3 * ((var(--grid-col-width--max) + var(--grid-gap--max))));
+      margin-inline-end: calc(-3 * ((var(--grid-col-width--max) + var(--grid-gap--max))));
     }
   }
 
   @media (--grid-md) {
-    float: right;
+    float: inline-end;
     max-width: 50%;
-    margin: var(--sp) 0 var(--sp) var(--sp);
+    margin-block-start: var(--sp);
+    margin-block-end: var(--sp);
+    margin-inline-start: var(--sp);
+    margin-inline-end: 0;
   }
 }
 
 .align-left {
   float: none; /* Override core's align.module.css. */
   max-width: 100%;
-  margin: var(--sp3) 0;
+  margin-block-start: var(--sp3);
+  margin-block-end: var(--sp3);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 
   /* Pull out of grid if nested in content narrow layout. */
   .layout--content-narrow &,
   .layout--pass--content-narrow > * & {
     @media (--grid-md) {
-      margin-left: calc(-1 * ((var(--grid-col-width--md) + var(--grid-gap--md))));
+      margin-inline-start: calc(-1 * ((var(--grid-col-width--md) + var(--grid-gap--md))));
     }
 
     @media (--lg) {
-      margin-left: calc(-1 * ((var(--grid-col-width--lg) + var(--grid-gap--lg))));
+      margin-inline-start: calc(-1 * ((var(--grid-col-width--lg) + var(--grid-gap--lg))));
     }
 
     @media (--nav) {
-      margin-left: calc(-1 * ((var(--grid-col-width--nav) + var(--grid-gap--nav))));
+      margin-inline-start: calc(-1 * ((var(--grid-col-width--nav) + var(--grid-gap--nav))));
     }
 
     @media (--grid-max) {
-      margin-left: calc(-1 * ((var(--grid-col-width--max) + var(--grid-gap--max))));
+      margin-inline-start: calc(-1 * ((var(--grid-col-width--max) + var(--grid-gap--max))));
     }
   }
 
   @media (--grid-md) {
-    float: left;
+    float: inline-start;
     max-width: 50%;
-    margin: var(--sp) var(--sp2) var(--sp) 0; /* Extra right margins in case of aligning next to lists. */
+    margin-block-start: var(--sp);
+    margin-block-end: var(--sp);
+    margin-inline-start: 0;
+    margin-inline-end: var(--sp2); /* Extra right margins in case of aligning next to lists. */
   }
 }
 
 .align-center img,
 .align-center video,
 .align-center audio {
-  margin-right: auto;
-  margin-left: auto;
+  margin-inline: auto;
 }
 
 .media-oembed-content {
diff --git a/css/components/feed.css b/css/components/feed.css
index 62ffe91..2fca8d6 100644
--- a/css/components/feed.css
+++ b/css/components/feed.css
@@ -94,6 +94,14 @@
   font-weight: 600;
 }
 
+[dir="ltr"] .feed-icon__icon {
+  margin-left: 9px;
+}
+
+[dir="rtl"] .feed-icon__icon {
+  margin-right: 9px;
+}
+
 .feed-icon__icon {
   display: flex;
   flex-shrink: 0;
@@ -102,20 +110,9 @@
   width: 27px;
   height: 27px;
   color: #fff;
-}
-
-[dir] .feed-icon__icon {
   background-color: #2494db;
 }
 
-[dir=ltr] .feed-icon__icon {
-  margin-left: 9px;
-}
-
-[dir=rtl] .feed-icon__icon {
-  margin-right: 9px;
-}
-
 .feed-icon__icon svg {
     vertical-align: top;
     fill: currentColor;
diff --git a/css/components/feed.pcss.css b/css/components/feed.pcss.css
index 3de1ca5..af59757 100644
--- a/css/components/feed.pcss.css
+++ b/css/components/feed.pcss.css
@@ -30,7 +30,7 @@
   justify-content: center;
   width: var(--sp1-5);
   height: var(--sp1-5);
-  margin-left: var(--sp0-5);
+  margin-inline-start: var(--sp0-5);
   color: var(--color--white);
   background-color: var(--color--blue-50);
 
diff --git a/css/components/field-image.css b/css/components/field-image.css
index 4d31c69..cfa7d38 100644
--- a/css/components/field-image.css
+++ b/css/components/field-image.css
@@ -76,72 +76,86 @@
   /* Form */
 }
 
-[dir] .page-node-type-article .field--name-field-image {
-    margin: 9px 0 36px;
-  }
+[dir="ltr"] .page-node-type-article .field--name-field-image {
+    margin-left: 0;
+}
 
-@media (min-width: 700px) {
+[dir="rtl"] .page-node-type-article .field--name-field-image {
+    margin-right: 0;
+}
+
+[dir="ltr"] .page-node-type-article .field--name-field-image {
+    margin-right: 0;
+}
+
+[dir="rtl"] .page-node-type-article .field--name-field-image {
+    margin-left: 0;
+}
 
 .page-node-type-article .field--name-field-image {
-      width: calc(14*(100vw - 504px)/14 + 468px)
+    margin-top: 9px;
+    margin-bottom: 36px;
   }
 
-[dir] .page-node-type-article .field--name-field-image {
-      margin-top: 36px;
-      margin-bottom: 72px
+@media (min-width: 700px) {
+
+[dir="ltr"] .page-node-type-article .field--name-field-image {
+      margin-left: calc(-1*((100vw - 504px)/14 + 36px));
   }
 
-[dir=ltr] .page-node-type-article .field--name-field-image {
-    margin-left: calc(-1*((100vw - 504px)/14 + 36px))
+[dir="rtl"] .page-node-type-article .field--name-field-image {
+      margin-right: calc(-1*((100vw - 504px)/14 + 36px));
   }
 
-[dir=rtl] .page-node-type-article .field--name-field-image {
-      margin-right: calc(-1*((100vw - 504px)/14 + 36px))
+.page-node-type-article .field--name-field-image {
+      width: calc(14*(100vw - 504px)/14 + 468px);
+      margin-top: 36px;
+      margin-bottom: 72px
   }
     }
 
 @media (min-width: 1000px) {
 
-.page-node-type-article .field--name-field-image {
-      width: calc(12*(100vw - 519px)/14 + 396px)
+[dir="ltr"] .page-node-type-article .field--name-field-image {
+      margin-left: calc(-1*((100vw - 519px)/14 + 36px));
   }
 
-[dir=ltr] .page-node-type-article .field--name-field-image {
-    margin-left: calc(-1*((100vw - 519px)/14 + 36px))
+[dir="rtl"] .page-node-type-article .field--name-field-image {
+      margin-right: calc(-1*((100vw - 519px)/14 + 36px));
   }
 
-[dir=rtl] .page-node-type-article .field--name-field-image {
-      margin-right: calc(-1*((100vw - 519px)/14 + 36px))
+.page-node-type-article .field--name-field-image {
+      width: calc(12*(100vw - 519px)/14 + 396px)
   }
     }
 
 @media (min-width: 1200px) {
 
-.page-node-type-article .field--name-field-image {
-      width: calc(12*(100vw - 645px)/14 + 396px)
+[dir="ltr"] .page-node-type-article .field--name-field-image {
+      margin-left: calc(-1*((100vw - 645px)/14 + 36px));
   }
 
-[dir=ltr] .page-node-type-article .field--name-field-image {
-    margin-left: calc(-1*((100vw - 645px)/14 + 36px))
+[dir="rtl"] .page-node-type-article .field--name-field-image {
+      margin-right: calc(-1*((100vw - 645px)/14 + 36px));
   }
 
-[dir=rtl] .page-node-type-article .field--name-field-image {
-      margin-right: calc(-1*((100vw - 645px)/14 + 36px))
+.page-node-type-article .field--name-field-image {
+      width: calc(12*(100vw - 645px)/14 + 396px)
   }
     }
 
 @media (min-width: 1440px) {
 
-.page-node-type-article .field--name-field-image {
-      width: 1090.28571px
+[dir="ltr"] .page-node-type-article .field--name-field-image {
+      margin-left: -93.85714px;
   }
 
-[dir=ltr] .page-node-type-article .field--name-field-image {
-    margin-left: -93.85714px
+[dir="rtl"] .page-node-type-article .field--name-field-image {
+      margin-right: -93.85714px;
   }
 
-[dir=rtl] .page-node-type-article .field--name-field-image {
-      margin-right: -93.85714px
+.page-node-type-article .field--name-field-image {
+      width: 1090.28571px
   }
     }
 
diff --git a/css/components/field-image.pcss.css b/css/components/field-image.pcss.css
index 6d17557..75e5d91 100644
--- a/css/components/field-image.pcss.css
+++ b/css/components/field-image.pcss.css
@@ -7,28 +7,30 @@
 
 .page-node-type-article {
   .field--name-field-image {
-    margin: var(--sp0-5) 0 var(--sp2);
+    margin-block-start: var(--sp0-5);
+    margin-block-end: var(--sp2);
+    margin-inline-start: 0;
+    margin-inline-end: 0;
 
     @media (--grid-md) {
       width: calc(14 * var(--grid-col-width--md) + 13 * var(--grid-gap--md));
-      margin-top: var(--sp2);
-      margin-bottom: var(--sp4);
-      margin-left: calc(-1 * ((var(--grid-col-width--md) + var(--grid-gap--md))));
+      margin-block: var(--sp2) var(--sp4);
+      margin-inline-start: calc(-1 * ((var(--grid-col-width--md) + var(--grid-gap--md))));
     }
 
     @media (--lg) {
       width: calc(12 * var(--grid-col-width--lg) + 11 * var(--grid-gap--lg));
-      margin-left: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg)));
+      margin-inline-start: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg)));
     }
 
     @media (--nav) {
       width: calc(12 * var(--grid-col-width--nav) + 11 * var(--grid-gap--nav));
-      margin-left: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav)));
+      margin-inline-start: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav)));
     }
 
     @media (--grid-max) {
       width: calc(12 * var(--grid-col-width--max) + 11 * var(--grid-gap--max));
-      margin-left: calc(-1 * (var(--grid-col-width--max) + var(--grid-gap--max)));
+      margin-inline-start: calc(-1 * (var(--grid-col-width--max) + var(--grid-gap--max)));
     }
   }
 
diff --git a/css/components/field.css b/css/components/field.css
index 751a234..487db4d 100644
--- a/css/components/field.css
+++ b/css/components/field.css
@@ -76,7 +76,7 @@
   /* Form */
 }
 
-[dir] .field:not(:last-child) {
+.field:not(:last-child) {
   margin-bottom: 36px;
 }
 
@@ -84,19 +84,25 @@
   font-weight: bold;
 }
 
-[dir=ltr] .field--label-inline .field__label, [dir=ltr] .field--label-inline .field__items {
+[dir="ltr"] .field--label-inline .field__label,[dir="ltr"] 
+.field--label-inline .field__items {
   float: left;
 }
 
-[dir=rtl] .field--label-inline .field__label, [dir=rtl] .field--label-inline .field__items {
+[dir="rtl"] .field--label-inline .field__label,[dir="rtl"] 
+.field--label-inline .field__items {
   float: right;
 }
 
-[dir=ltr] .field--label-inline .field__label, [dir=ltr] .field--label-inline > .field__item, [dir=ltr] .field--label-inline .field__items {
+[dir="ltr"] .field--label-inline .field__label,[dir="ltr"] 
+.field--label-inline > .field__item,[dir="ltr"] 
+.field--label-inline .field__items {
   padding-right: 0.5em;
 }
 
-[dir=rtl] .field--label-inline .field__label, [dir=rtl] .field--label-inline > .field__item, [dir=rtl] .field--label-inline .field__items {
+[dir="rtl"] .field--label-inline .field__label,[dir="rtl"] 
+.field--label-inline > .field__item,[dir="rtl"] 
+.field--label-inline .field__items {
   padding-left: 0.5em;
 }
 
diff --git a/css/components/field.pcss.css b/css/components/field.pcss.css
index 96a0bcd..26a1631 100644
--- a/css/components/field.pcss.css
+++ b/css/components/field.pcss.css
@@ -6,7 +6,7 @@
 @import "../base/variables.pcss.css";
 
 .field:not(:last-child) {
-  margin-bottom: var(--sp2);
+  margin-block-end: var(--sp2);
 }
 
 .field__label {
@@ -15,13 +15,13 @@
 
 .field--label-inline .field__label,
 .field--label-inline .field__items {
-  float: left;
+  float: inline-start;
 }
 
 .field--label-inline .field__label,
 .field--label-inline > .field__item,
 .field--label-inline .field__items {
-  padding-right: 0.5em;
+  padding-inline-end: 0.5em;
 }
 
 .field--label-inline .field__label::after {
diff --git a/css/components/fieldset.css b/css/components/fieldset.css
index 71ba130..90932de 100644
--- a/css/components/fieldset.css
+++ b/css/components/fieldset.css
@@ -76,14 +76,45 @@
   /* Form */
 }
 
+[dir="ltr"] .fieldset {
+  margin-left: 0;
+}
+
+[dir="rtl"] .fieldset {
+  margin-right: 0;
+}
+
+[dir="ltr"] .fieldset {
+  margin-right: 0;
+}
+
+[dir="rtl"] .fieldset {
+  margin-left: 0;
+}
+
+[dir="ltr"] .fieldset {
+  padding-left: 0;
+}
+
+[dir="rtl"] .fieldset {
+  padding-right: 0;
+}
+
+[dir="ltr"] .fieldset {
+  padding-right: 0;
+}
+
+[dir="rtl"] .fieldset {
+  padding-left: 0;
+}
+
 .fieldset {
   min-width: 0;
+  margin-top: 18px;
+  margin-bottom: 18px;
+  padding-top: 0;
+  padding-bottom: 0;
   color: inherit;
-}
-
-[dir] .fieldset {
-  margin: 18px 0;
-  padding: 0;
   border: 2px solid #7e96a7;
   border-radius: 2px;
   background-color: #fff;
@@ -92,9 +123,6 @@
 .fieldset--group {
   width: 100%;
   color: inherit;
-}
-
-[dir] .fieldset--group {
   border: 0;
   border-radius: 0;
   background: none;
@@ -110,40 +138,34 @@ _:-ms-fullscreen,
   width: 100%;
 }
 
+[dir="ltr"] .fieldset__legend {
+  float: left;
+}
+
+[dir="rtl"] .fieldset__legend {
+  float: right;
+}
+
 .fieldset__legend {
   width: 100%;
+  margin-bottom: 18px;
   color: inherit;
+  background-color: #7e96a7;
   font-size: 1.125rem;
   font-weight: 700;
   line-height: 1.6875rem;
 }
 
-[dir] .fieldset__legend {
-  margin-bottom: 18px;
-  background-color: #7e96a7;
-}
-
-[dir=ltr] .fieldset__legend {
-  float: left;
-}
-
-[dir=rtl] .fieldset__legend {
-  float: right;
-}
-
-[dir] .fieldset__legend .fieldset__label.form-required:after {
+.fieldset__legend .fieldset__label.form-required:after {
         background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23ffffff'/%3E%3C/svg%3E%0A");
       }
 
 .fieldset__legend--composite {
-  color: inherit;
-}
-
-[dir] .fieldset__legend--composite {
   margin-top: 2px;
+  color: inherit;
 }
 
-[dir] .fieldset__legend--invisible {
+.fieldset__legend--invisible {
   margin: 0;
 }
 
@@ -151,79 +173,141 @@ _:-ms-fullscreen,
   color: inherit;
 }
 
+[dir="ltr"] .fieldset__label {
+  padding-left: 18px;
+}
+
+[dir="rtl"] .fieldset__label {
+  padding-right: 18px;
+}
+
+[dir="ltr"] .fieldset__label {
+  padding-right: 18px;
+}
+
+[dir="rtl"] .fieldset__label {
+  padding-left: 18px;
+}
+
 .fieldset__label {
   display: block;
+  padding-top: 9px;
+  padding-bottom: 9px;
   color: #fff;
   line-height: 1.125rem;
 }
 
-[dir] .fieldset__label {
-  padding: 9px 18px;
-}
-
 .fieldset__label.is-disabled {
   color: #7e96a7;
 }
 
 .fieldset__description {
-  font-size: 0.8125rem;
-  line-height: 1.125rem;
-}
-
-[dir] .fieldset__description {
   margin-top: 9px;
   margin-bottom: 9px;
+  font-size: 0.8125rem;
+  line-height: 1.125rem;
 }
 
 .fieldset__description.is-disabled {
   color: var(--input--disabled-fg-color);
 }
 
-.fieldset__error-message {
-  color: #e33f1e;
-  font-size: 0.875rem;
-  line-height: 1.125rem;
+[dir="ltr"] .fieldset__error-message {
+  padding-left: 27px;
+}
+
+[dir="rtl"] .fieldset__error-message {
+  padding-right: 27px;
 }
 
-[dir] .fieldset__error-message {
+.fieldset__error-message {
   margin-top: 9px;
   margin-bottom: 9px;
+  color: #e33f1e;
   background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
   background-repeat: no-repeat;
+  background-position: left top; /* LTR */
   background-size: 18px 18px;
+  font-size: 0.875rem;
+  line-height: 1.125rem;
 }
 
-[dir=ltr] .fieldset__error-message {
-  padding-left: 27px;
-  background-position: left top;
-}
-
-[dir=rtl] .fieldset__error-message {
-  padding-right: 27px;
-  background-position: right top;
-}
+[dir="rtl"] .fieldset__error-message {
+    background-position: left top;
+  }
 
 @media screen and (-ms-high-contrast: active) {
 
-[dir] .fieldset__error-message {
+.fieldset__error-message {
     background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E")
 }
   }
 
-[dir] .fieldset__legend--visible ~ .fieldset__wrapper {
+[dir="ltr"] .fieldset__legend--visible ~ .fieldset__wrapper {
+  padding-left: 18px;
+}
+
+[dir="rtl"] .fieldset__legend--visible ~ .fieldset__wrapper {
+  padding-right: 18px;
+}
+
+[dir="ltr"] .fieldset__legend--visible ~ .fieldset__wrapper {
+  padding-right: 18px;
+}
+
+[dir="rtl"] .fieldset__legend--visible ~ .fieldset__wrapper {
+  padding-left: 18px;
+}
+
+.fieldset__legend--visible ~ .fieldset__wrapper {
   margin-top: 0;
-  padding: 18px;
+  padding-top: 18px;
+  padding-bottom: 18px;
 }
 
-[dir] .fieldset--group .fieldset__legend--visible ~ .fieldset__wrapper {
+.fieldset--group .fieldset__legend--visible ~ .fieldset__wrapper {
     border: 2px solid #7e96a7;
     border-radius: 2px;
   }
 
-[dir] .fieldset__wrapper--group {
-  margin: 0;
+[dir="ltr"] .fieldset__wrapper--group {
+  margin-left: 0;
+}
+
+[dir="rtl"] .fieldset__wrapper--group {
+  margin-right: 0;
+}
+
+[dir="ltr"] .fieldset__wrapper--group {
+  margin-right: 0;
+}
+
+[dir="rtl"] .fieldset__wrapper--group {
+  margin-left: 0;
+}
+
+.fieldset__wrapper--group {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+[dir="ltr"] .fieldset__wrapper > .container-inline {
+  padding-left: 0;
+}
+
+[dir="rtl"] .fieldset__wrapper > .container-inline {
+  padding-right: 0;
+}
+
+[dir="ltr"] .fieldset__wrapper > .container-inline {
+  padding-right: 0;
+}
+
+[dir="rtl"] .fieldset__wrapper > .container-inline {
+  padding-left: 0;
 }
 
-[dir] .fieldset__wrapper > .container-inline {
-  padding: 0;
+.fieldset__wrapper > .container-inline {
+  padding-top: 0;
+  padding-bottom: 0;
 }
diff --git a/css/components/fieldset.pcss.css b/css/components/fieldset.pcss.css
index c7d519f..af59952 100644
--- a/css/components/fieldset.pcss.css
+++ b/css/components/fieldset.pcss.css
@@ -7,8 +7,12 @@
 
 .fieldset {
   min-width: 0;
-  margin: var(--sp1) 0;
-  padding: 0;
+  margin-block: var(--sp1);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   color: inherit;
   border: var(--form-element-border-size-base) solid var(--color--gray-30);
   border-radius: var(--border-radius-base);
@@ -33,9 +37,9 @@ _:-ms-fullscreen,
 }
 
 .fieldset__legend {
-  float: left;
+  float: inline-start;
   width: 100%;
-  margin-bottom: var(--sp1);
+  margin-block-end: var(--sp1);
   color: inherit;
   background-color: var(--color--gray-30);
   font-size: var(--font-size-l);
@@ -52,7 +56,7 @@ _:-ms-fullscreen,
 }
 
 .fieldset__legend--composite {
-  margin-top: 2px;
+  margin-block-start: 2px;
   color: inherit;
 }
 
@@ -66,7 +70,9 @@ _:-ms-fullscreen,
 
 .fieldset__label {
   display: block;
-  padding: var(--sp0-5) var(--sp1);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp1);
+  padding-inline-end: var(--sp1);
   color: var(--color--white);
   line-height: var(--line-height-s);
 }
@@ -76,8 +82,7 @@ _:-ms-fullscreen,
 }
 
 .fieldset__description {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
   font-size: var(--font-size-xs);
   line-height: var(--line-height-s);
 }
@@ -87,25 +92,30 @@ _:-ms-fullscreen,
 }
 
 .fieldset__error-message {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
-  padding-left: var(--sp1-5);
+  margin-block: var(--sp0-5);
+  padding-inline-start: var(--sp1-5);
   color: var(--color--red);
   background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
   background-repeat: no-repeat;
-  background-position: left top;
+  background-position: left top; /* LTR */
   background-size: var(--sp1) var(--sp1);
   font-size: var(--font-size-s);
   line-height: var(--line-height-s);
 
+  [dir="rtl"] & {
+    background-position: left top;
+  }
+
   @media screen and (-ms-high-contrast: active) {
     background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
   }
 }
 
 .fieldset__legend--visible ~ .fieldset__wrapper {
-  margin-top: 0;
-  padding: var(--sp);
+  margin-block-start: 0;
+  padding-block: var(--sp);
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
 
   .fieldset--group & {
     border: var(--form-element-border-size-base) solid var(--color--gray-30);
@@ -114,9 +124,13 @@ _:-ms-fullscreen,
 }
 
 .fieldset__wrapper--group {
-  margin: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 }
 
 .fieldset__wrapper > .container-inline {
-  padding: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
 }
diff --git a/css/components/footer.css b/css/components/footer.css
index 47ad2a5..6a14f13 100644
--- a/css/components/footer.css
+++ b/css/components/footer.css
@@ -81,37 +81,30 @@
   color: #9ea0a1;
 
   /* @todo - #0c0d0e and #171e23 aren't currently variables */
+  background: linear-gradient(180deg, #0c0d0e 0%, #171e23 100%);
 }
 
-[dir=ltr] .site-footer {
-  background: linear-gradient(180deg, #0c0d0e 0%, #171e23 100%);
+[dir="ltr"] .site-footer .menu {
+    margin-left: 0;
 }
 
-[dir=rtl] .site-footer {
-  background: linear-gradient(-180deg, #0c0d0e 0%, #171e23 100%);
+[dir="rtl"] .site-footer .menu {
+    margin-right: 0;
 }
 
 .site-footer .menu {
     list-style: none;
   }
 
-[dir=ltr] .site-footer .menu {
-  margin-left: 0;
-  }
-
-[dir=rtl] .site-footer .menu {
-    margin-right: 0;
-  }
-
-[dir=ltr] .site-footer .menu ul {
-  margin-left: 18px;
-    }
+[dir="ltr"] .site-footer .menu ul {
+      margin-left: 18px;
+}
 
-[dir=rtl] .site-footer .menu ul {
+[dir="rtl"] .site-footer .menu ul {
       margin-right: 18px;
-    }
+}
 
-[dir] .site-footer .menu li {
+.site-footer .menu li {
       margin-bottom: 9px;
     }
 
@@ -125,10 +118,10 @@
     }
 
 @media (min-width: 1200px) {
-    [dir=ltr] body:not(.is-always-mobile-nav) .site-footer {
-    border-left: solid 90px #000;
-    }
-    [dir=rtl] body:not(.is-always-mobile-nav) .site-footer {
+    [dir="ltr"] body:not(.is-always-mobile-nav) .site-footer {
+      border-left: solid 90px #000;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .site-footer {
       border-right: solid 90px #000;
-    }
+  }
   }
diff --git a/css/components/footer.pcss.css b/css/components/footer.pcss.css
index ba3cc2d..d2f1a59 100644
--- a/css/components/footer.pcss.css
+++ b/css/components/footer.pcss.css
@@ -13,15 +13,15 @@
   background: linear-gradient(180deg, #0c0d0e 0%, #171e23 100%);
 
   .menu {
-    margin-left: 0;
+    margin-inline-start: 0;
     list-style: none;
 
     ul {
-      margin-left: var(--sp);
+      margin-inline-start: var(--sp);
     }
 
     li {
-      margin-bottom: var(--sp0-5);
+      margin-block-end: var(--sp0-5);
     }
   }
 
@@ -36,7 +36,7 @@
 
   @media (--nav) {
     body:not(.is-always-mobile-nav) & {
-      border-left: solid var(--content-left) var(--color--black);
+      border-inline-start: solid var(--content-left) var(--color--black);
     }
   }
 }
diff --git a/css/components/form-boolean.css b/css/components/form-boolean.css
index 687a967..4d73638 100644
--- a/css/components/form-boolean.css
+++ b/css/components/form-boolean.css
@@ -82,27 +82,21 @@ input[type="radio"] {
   width: 27px;
   height: 27px;
   vertical-align: text-bottom;
-  -webkit-appearance: none;
-  -moz-appearance: none;
-  appearance: none;
-}
-
-[dir] input[type="checkbox"], [dir] input[type="radio"] {
   border: 2px solid #7e96a7;
   border-radius: 2px;
   background-color: #f7f9fa;
   background-repeat: no-repeat;
   background-position: 50% 50%;
   background-size: 18px 18px;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
 }
 
 input[type="checkbox"]:focus, input[type="radio"]:focus {
     outline: 6px
 dashed
 transparent;
-  }
-
-[dir] input[type="checkbox"]:focus, [dir] input[type="radio"]:focus {
     box-shadow: 0
 0
 0
@@ -128,7 +122,7 @@ input[type="checkbox"]:focus, input[type="radio"]:focus {
   }
     }
 
-[dir] input[type="checkbox"]:hover, [dir] input[type="radio"]:hover {
+input[type="checkbox"]:hover, input[type="radio"]:hover {
     border-color: #53b0eb;
   }
 
@@ -136,104 +130,99 @@ input[type="checkbox"][disabled], input[type="radio"][disabled] {
     opacity: 0.3;
   }
 
-.form-type--boolean input[type="checkbox"], .form-type--boolean input[type="radio"] {
-    position: relative;
-    top: 9px;
-  }
+[dir="ltr"] .form-type--boolean input[type="checkbox"],[dir="ltr"]  .form-type--boolean input[type="radio"] {
+    float: left;
+}
 
-[dir] .form-type--boolean input[type="checkbox"], [dir] .form-type--boolean input[type="radio"] {
-    transform: translateY(-50%);
-  }
+[dir="rtl"] .form-type--boolean input[type="checkbox"],[dir="rtl"]  .form-type--boolean input[type="radio"] {
+    float: right;
+}
 
-[dir=ltr] .form-type--boolean input[type="checkbox"], [dir=ltr] .form-type--boolean input[type="radio"] {
-  float: left;
-  margin-left: -36px;
-  }
+[dir="ltr"] .form-type--boolean input[type="checkbox"],[dir="ltr"]  .form-type--boolean input[type="radio"] {
+    margin-left: -36px;
+}
 
-[dir=rtl] .form-type--boolean input[type="checkbox"], [dir=rtl] .form-type--boolean input[type="radio"] {
-    float: right;
+[dir="rtl"] .form-type--boolean input[type="checkbox"],[dir="rtl"]  .form-type--boolean input[type="radio"] {
     margin-right: -36px;
+}
+
+.form-type--boolean input[type="checkbox"], .form-type--boolean input[type="radio"] {
+    position: relative;
+    /* stylelint-disable-next-line csstools/use-logical */
+    top: 9px;
+    transform: translateY(-50%);
   }
 
 .form-type--boolean.form-no-label input[type="checkbox"], .form-type--boolean.form-no-label input[type="radio"] {
     position: static;
-  }
-
-[dir] .form-type--boolean.form-no-label input[type="checkbox"], [dir] .form-type--boolean.form-no-label input[type="radio"] {
     float: none;
-    transform: none;
-  }
-
-[dir=ltr] .form-type--boolean.form-no-label input[type="checkbox"], [dir=ltr] .form-type--boolean.form-no-label input[type="radio"] {
-  margin-right: 0;
-  margin-left: 0;
-  }
-
-[dir=rtl] .form-type--boolean.form-no-label input[type="checkbox"], [dir=rtl] .form-type--boolean.form-no-label input[type="radio"] {
     margin-left: 0;
     margin-right: 0;
+    transform: none;
   }
 
-[dir] input[type="checkbox"].error, [dir] input[type="radio"].error {
+input[type="checkbox"].error, input[type="radio"].error {
     border-color: #e33f1e;
   }
 
 /* Specific pseudo-element to apply red borders for IE11 bool elements in case of error */
 
-[dir] input[type="checkbox"].error::-ms-check, [dir] input[type="radio"].error::-ms-check {
+input[type="checkbox"].error::-ms-check, input[type="radio"].error::-ms-check {
     border: 1px solid #e33f1e;
   }
 
-[dir] input[type="checkbox"]:checked {
+input[type="checkbox"]:checked {
     background-image: url("data:image/svg+xml,%3Csvg width='18' height='14' viewBox='0 0 18 14' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%232494DB' d='M14.8232 0.176777C14.9209 0.0791457 15.0791 0.0791455 15.1768 0.176777L16.9445 1.94454C17.0422 2.04217 17.0422 2.20047 16.9445 2.2981L6.23744 13.0052C6.13981 13.1028 5.98151 13.1028 5.88388 13.0052L0.176777 7.2981C0.0791456 7.20047 0.0791456 7.04218 0.176777 6.94454L1.94454 5.17678C2.04217 5.07915 2.20047 5.07915 2.2981 5.17678L5.88388 8.76256C5.98151 8.86019 6.13981 8.86019 6.23744 8.76256L14.8232 0.176777Z'/%3E%3C/svg%3E%0A");
   }
 
-[dir] input[type="radio"] {
+input[type="radio"] {
   border-radius: 50%;
 }
 
-[dir] input[type="radio"]:checked {
+input[type="radio"]:checked {
     background-image: url("data:image/svg+xml,%3Csvg width='17' height='17' viewBox='0 0 17 17' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8.5' cy='8.5' r='8.5' fill='%232494DB'/%3E%3C/svg%3E%0A");
     background-size: 17px 17px;
   }
 
-[dir] .form-type--boolean {
-  clear: both;
-}
-
-[dir=ltr] .form-type--boolean {
+[dir="ltr"] .form-type--boolean {
   margin-left: 36px;
 }
 
-[dir=rtl] .form-type--boolean {
+[dir="rtl"] .form-type--boolean {
   margin-right: 36px;
 }
 
-[dir=ltr] .form-type--boolean.form-no-label {
-  margin-left: 0;
-  }
+.form-type--boolean {
+  clear: both;
+}
 
-[dir=rtl] .form-type--boolean.form-no-label {
+[dir="ltr"] .form-type--boolean.form-no-label {
+    margin-left: 0;
+}
+
+[dir="rtl"] .form-type--boolean.form-no-label {
     margin-right: 0;
-  }
+}
 
-[dir] .form-boolean-group .form-type--boolean {
+.form-boolean-group .form-type--boolean {
     margin-top: 18px;
     margin-bottom: 18px;
   }
 
-[dir=ltr] .container-inline .form-boolean-group .form-type--boolean:not(:last-child) {
-  margin-right: 18px;
-      }
+[dir="ltr"] .container-inline .form-boolean-group .form-type--boolean:not(:last-child) {
+        margin-right: 18px;
+}
 
-[dir=rtl] .container-inline .form-boolean-group .form-type--boolean:not(:last-child) {
+[dir="rtl"] .container-inline .form-boolean-group .form-type--boolean:not(:last-child) {
         margin-left: 18px;
-      }
+}
 
-[dir=ltr] .form-type--boolean .form-item__description, [dir=ltr] .form-type--boolean .form-item--error-message {
-  margin-left: -36px;
-  }
+[dir="ltr"] .form-type--boolean .form-item__description,[dir="ltr"] 
+  .form-type--boolean .form-item--error-message {
+    margin-left: -36px;
+}
 
-[dir=rtl] .form-type--boolean .form-item__description, [dir=rtl] .form-type--boolean .form-item--error-message {
+[dir="rtl"] .form-type--boolean .form-item__description,[dir="rtl"] 
+  .form-type--boolean .form-item--error-message {
     margin-right: -36px;
-  }
+}
diff --git a/css/components/form-boolean.pcss.css b/css/components/form-boolean.pcss.css
index 8325c9f..d747605 100644
--- a/css/components/form-boolean.pcss.css
+++ b/css/components/form-boolean.pcss.css
@@ -42,17 +42,17 @@ input[type="radio"] {
 
   .form-type--boolean & {
     position: relative;
+    /* stylelint-disable-next-line csstools/use-logical */
     top: var(--sp0-5);
-    float: left;
-    margin-left: calc(var(--sp2) * -1);
+    float: inline-start;
+    margin-inline-start: calc(var(--sp2) * -1);
     transform: translateY(-50%);
   }
 
   .form-type--boolean.form-no-label & {
     position: static;
     float: none;
-    margin-right: 0;
-    margin-left: 0;
+    margin-inline: 0;
     transform: none;
   }
 
@@ -83,25 +83,24 @@ input[type="radio"] {
 
 .form-type--boolean {
   clear: both;
-  margin-left: var(--sp2);
+  margin-inline-start: var(--sp2);
 
   &.form-no-label {
-    margin-left: 0;
+    margin-inline-start: 0;
   }
 
   .form-boolean-group & {
-    margin-top: var(--sp1);
-    margin-bottom: var(--sp1);
+    margin-block: var(--sp1);
 
     &:not(:last-child) {
       .container-inline & {
-        margin-right: var(--sp);
+        margin-inline-end: var(--sp);
       }
     }
   }
 
   .form-item__description,
   .form-item--error-message {
-    margin-left: calc(var(--sp2) * -1);
+    margin-inline-start: calc(var(--sp2) * -1);
   }
 }
diff --git a/css/components/form-select.css b/css/components/form-select.css
index 82cb283..bb0c51f 100644
--- a/css/components/form-select.css
+++ b/css/components/form-select.css
@@ -76,10 +76,63 @@
   /* Form */
 }
 
+[dir="ltr"] select {
+  padding-left: 24px;
+}
+
+[dir="rtl"] select {
+  padding-right: 24px;
+}
+
+[dir="ltr"] select {
+  padding-right: 72px;
+}
+
+[dir="rtl"] select {
+  padding-left: 72px;
+}
+
+[dir="ltr"] select {
+  border-top-left-radius: 0;
+}
+
+[dir="rtl"] select {
+  border-top-right-radius: 0;
+}
+
+[dir="ltr"] select {
+  border-top-right-radius: 2px;
+}
+
+[dir="rtl"] select {
+  border-top-left-radius: 2px;
+}
+
+[dir="ltr"] select {
+  border-bottom-left-radius: 0;
+}
+
+[dir="rtl"] select {
+  border-bottom-right-radius: 0;
+}
+
+[dir="ltr"] select {
+  border-bottom-right-radius: 2px;
+}
+
+[dir="rtl"] select {
+  border-bottom-left-radius: 2px;
+}
+
 select {
   max-width: 100%;
   height: 54px;
+  padding-top: 0;
+  padding-bottom: 0;
   color: #313637;
+  border-width: 2px 0;
+  border-style: solid;
+  border-color: transparent;
   outline: 1px
 solid
 transparent;
@@ -95,49 +148,33 @@ transparent;
 
     @todo - look at inlining some of the SVGs with an eye on CSS filesize.
   */
-  font-family: inherit;
-  font-size: 1rem;
-  line-height: 3.125rem;
-  -webkit-appearance: none;
-  -moz-appearance: none;
-  appearance: none;
-}
-
-[dir] select {
-  border-width: 2px 0;
-  border-style: solid;
-  border-color: transparent;
   background-color: #f7f9fa;
   background-image: url("../../images/chevron-down.svg"), url("../../images/select-chevron-bg-default.svg"), url("../../images/select-chevron-bg-default.svg");
   background-repeat: no-repeat;
-}
-
-[dir=ltr] select {
-  padding: 0 72px 0 24px;
-  border-radius: 0 2px 2px 0;
-  background-position:
+  background-position: /* LTR */
     right 18px center,
     right 0 top -2px,
     left -48px top -2px;
+  font-family: inherit;
+  font-size: 1rem;
+  line-height: 3.125rem;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
 }
 
-[dir=rtl] select {
-  padding: 0 24px 0 72px;
-  border-radius: 2px 0 0 2px;
-  background-position:
-    left 18px center,
-    left 0 top -2px,
-    right -48px top -2px;
-}
+[dir="rtl"] select {
+    background-position:
+      left 18px center,
+      left 0 top -2px,
+      right -48px top -2px;
+  }
 
 select:focus {
+    border-color: #7e96a7;
     outline: 6px
 dashed
 transparent;
-  }
-
-[dir] select:focus {
-    border-color: #7e96a7;
     box-shadow: 0
 0
 0
@@ -163,7 +200,7 @@ select:focus {
   }
     }
 
-[dir] select:hover {
+select:hover {
     border-color: #53b0eb;
     background-image:
       url("../../images/chevron-down.svg"),
@@ -182,7 +219,7 @@ select[disabled] {
     opacity: 0.6;
   }
 
-[dir] select.error {
+select.error {
     border-color: #e33f1e;
     background-image:
       url("../../images/chevron-down.svg"),
@@ -190,38 +227,78 @@ select[disabled] {
       url("../../images/select-chevron-bg-error.svg");
   }
 
+[dir="ltr"] select[multiple] {
+    padding-left: 9px;
+}
+
+[dir="rtl"] select[multiple] {
+    padding-right: 9px;
+}
+
+[dir="ltr"] select[multiple] {
+    padding-right: 9px;
+}
+
+[dir="rtl"] select[multiple] {
+    padding-left: 9px;
+}
+
+[dir="ltr"] select[multiple] {
+    border-right: solid 2px transparent;
+}
+
+[dir="rtl"] select[multiple] {
+    border-left: solid 2px transparent;
+}
+
+[dir="ltr"] select[multiple] {
+    border-left: solid 6px #7e96a7;
+}
+
+[dir="rtl"] select[multiple] {
+    border-right: solid 6px #7e96a7;
+}
+
 select[multiple] {
     height: auto;
-    line-height: 1;
-  }
-
-[dir] select[multiple] {
-    padding: 9px;
+    padding-top: 9px;
+    padding-bottom: 9px;
     border-top: 0;
     border-bottom: 0;
     background-image: none;
     background-repeat: repeat-y;
+    background-position: left -48px top -2px;
+    line-height: 1;
   }
 
-[dir=ltr] select[multiple] {
-  border-right: solid 2px transparent;
-  border-left: solid 6px #7e96a7;
-  background-position: left -48px top -2px;
-  }
+/* Needed by non-Chromium based MS Edge browsers. */
 
-[dir=rtl] select[multiple] {
-    border-left: solid 2px transparent;
-    border-right: solid 6px #7e96a7;
-    background-position: right -48px top -2px;
-  }
+[dir="rtl"] select[multiple] {
+      background-position: right -48px top -2px;
+    }
 
-/* Needed by non-Chromium based MS Edge browsers. */
+[dir="ltr"] select[multiple] option {
+      padding-left: 9px;
+}
 
-[dir] select[multiple] option {
-      padding: 9px;
+[dir="rtl"] select[multiple] option {
+      padding-right: 9px;
+}
+
+[dir="ltr"] select[multiple] option {
+      padding-right: 9px;
+}
+
+[dir="rtl"] select[multiple] option {
+      padding-left: 9px;
+}
+
+select[multiple] option {
+      padding-top: 9px;
+      padding-bottom: 9px;
     }
 
-[dir] select[multiple]:focus {
+select[multiple]:focus {
       border-color: #7e96a7;
       box-shadow:
         0 -2px 0 #7e96a7,
@@ -236,14 +313,14 @@ select[multiple] {
         rgba(83, 176, 235, 0.25);
     }
 
-[dir] select[multiple]:hover {
+select[multiple]:hover {
       border-color: #53b0eb;
       box-shadow:
         0 -2px 0 #53b0eb,
         0 2px 0 #53b0eb;
     }
 
-[dir] select[multiple]:focus:hover {
+select[multiple]:focus:hover {
       box-shadow:
         0 -2px 0 #53b0eb,
         0 2px 0 #53b0eb,
@@ -257,14 +334,14 @@ select[multiple] {
         rgba(83, 176, 235, 0.25);
     }
 
-[dir] select[multiple].error {
+select[multiple].error {
       border-color: #e33f1e;
       box-shadow:
         0 -2px 0 #e33f1e,
         0 2px 0 #e33f1e;
     }
 
-[dir] select[multiple].error:focus {
+select[multiple].error:focus {
         box-shadow:
           0 -2px 0 #e33f1e,
           0 2px 0 #e33f1e,
@@ -278,28 +355,31 @@ select[multiple] {
           rgba(83, 176, 235, 0.25);
       }
 
+[dir="ltr"] select.form-element--small {
+    padding-left: 19.5px;
+    padding-right: 58.5px;
+}
+
+[dir="rtl"] select.form-element--small {
+    padding-right: 19.5px;
+    padding-left: 58.5px;
+}
+
 select.form-element--small {
     height: 45px;
+    background-position: right 13.5px center, right -10px top -2px, left -48px top -2px;
     line-height: 2.5625rem;
   }
 
-[dir=ltr] select.form-element--small {
-  padding-right: 58.5px;
-  padding-left: 19.5px;
-  background-position: right 13.5px center, right -10px top -2px, left -48px top -2px;
-  }
-
-[dir=rtl] select.form-element--small {
-    padding-left: 58.5px;
-    padding-right: 19.5px;
-    background-position: left 13.5px center, left -10px top -2px, right -48px top -2px;
-  }
+[dir="rtl"] select.form-element--small {
+      background-position: left 13.5px center, right -10px top -2px, left -48px top -2px;
+    }
 
 /* Necessary for IE11 to show chevron. */
 
 @media screen and (-ms-high-contrast: active) {
 
-[dir] select {
+select {
     background-image: url("../../images/chevron-down.svg")
 }
   }
diff --git a/css/components/form-select.pcss.css b/css/components/form-select.pcss.css
index e59255b..653b3b1 100644
--- a/css/components/form-select.pcss.css
+++ b/css/components/form-select.pcss.css
@@ -18,12 +18,17 @@
 select {
   max-width: 100%;
   height: var(--form-element-select-height);
-  padding: 0 calc(var(--sp1) + var(--form-element-select-border-size-right)) 0 calc(var(--sp1) + var(--form-element-border-size-left));
+  padding-block: 0;
+  padding-inline-start: calc(var(--sp1) + var(--form-element-border-size-left));
+  padding-inline-end: calc(var(--sp1) + var(--form-element-select-border-size-right));
   color: var(--color--gray-10);
   border-width: var(--form-element-border-size-base) 0;
   border-style: solid;
   border-color: transparent;
-  border-radius: 0 var(--border-radius-base) var(--border-radius-base) 0;
+  border-start-start-radius: 0;
+  border-start-end-radius: var(--border-radius-base);
+  border-end-start-radius: 0;
+  border-end-end-radius: var(--border-radius-base);
   outline: var(--outline--thin);
   /*
     Couple of notes here:
@@ -40,7 +45,7 @@ select {
   background-color: var(--color--gray-95);
   background-image: var(--form-element-select-icon), var(--form-element-select-bg), var(--form-element-select-bg);
   background-repeat: no-repeat;
-  background-position:
+  background-position: /* LTR */
     right var(--sp1) center,
     right 0 top calc(-1 * var(--form-element-border-size-base)),
     left -48px top calc(-1 * var(--form-element-border-size-base));
@@ -49,6 +54,13 @@ select {
   line-height: calc(var(--form-element-select-height) - 2 * var(--form-element-border-size-base));
   appearance: none;
 
+  [dir="rtl"] & {
+    background-position:
+      left var(--sp1) center,
+      left 0 top calc(-1 * var(--form-element-border-size-base)),
+      right -48px top calc(-1 * var(--form-element-border-size-base));
+  }
+
   &:focus {
     border-color: var(--color--gray-30);
     outline: var(--outline--thick);
@@ -87,18 +99,26 @@ select {
 
   &[multiple] {
     height: auto;
-    padding: var(--sp0-5);
-    border-top: 0;
-    border-right: solid 2px transparent;
-    border-bottom: 0;
-    border-left: solid 6px var(--color--gray-30);
+    padding-block: var(--sp0-5);
+    padding-inline-start: var(--sp0-5);
+    padding-inline-end: var(--sp0-5);
+    border-block-start: 0;
+    border-inline-end: solid 2px transparent;
+    border-block-end: 0;
+    border-inline-start: solid 6px var(--color--gray-30);
     background-image: none;
     background-repeat: repeat-y;
     background-position: left -48px top calc(-1 * var(--form-element-border-size-base));
     line-height: 1; /* Needed by non-Chromium based MS Edge browsers. */
 
+    [dir="rtl"] & {
+      background-position: right -48px top calc(-1 * var(--form-element-border-size-base));
+    }
+
     option {
-      padding: var(--sp0-5);
+      padding-block: var(--sp0-5);
+      padding-inline-start: var(--sp0-5);
+      padding-inline-end: var(--sp0-5);
     }
 
     &:focus {
@@ -152,10 +172,13 @@ select {
 
   &.form-element--small {
     height: var(--form-element-select-height--small);
-    padding-right: calc(var(--form-element-select-height--small) + var(--sp0-75));
-    padding-left: calc(var(--sp0-75) + var(--form-element-border-size-left));
+    padding-inline: calc(var(--sp0-75) + var(--form-element-border-size-left)) calc(var(--form-element-select-height--small) + var(--sp0-75));
     background-position: right var(--sp0-75) center, right -10px top -2px, left -48px top -2px;
     line-height: calc(var(--form-element-select-height--small) - 2 * var(--form-element-border-size-base));
+
+    [dir="rtl"] & {
+      background-position: left var(--sp0-75) center, right -10px top -2px, left -48px top -2px;
+    }
   }
 
   /* Necessary for IE11 to show chevron. */
diff --git a/css/components/form-text.css b/css/components/form-text.css
index a92e838..f6a6ae1 100644
--- a/css/components/form-text.css
+++ b/css/components/form-text.css
@@ -76,6 +76,222 @@
   /* Form */
 }
 
+[dir="ltr"] [type="color"],[dir="ltr"] 
+[type="date"],[dir="ltr"] 
+[type="datetime-local"],[dir="ltr"] 
+[type="email"],[dir="ltr"] 
+[type="file"],[dir="ltr"] 
+[type="month"],[dir="ltr"] 
+[type="number"],[dir="ltr"] 
+[type="password"],[dir="ltr"] 
+[type="search"],[dir="ltr"] 
+[type="tel"],[dir="ltr"] 
+[type="text"],[dir="ltr"] 
+[type="time"],[dir="ltr"] 
+[type="url"],[dir="ltr"] 
+[type="week"],[dir="ltr"] 
+textarea {
+  padding-left: 24px;
+}
+
+[dir="rtl"] [type="color"],[dir="rtl"] 
+[type="date"],[dir="rtl"] 
+[type="datetime-local"],[dir="rtl"] 
+[type="email"],[dir="rtl"] 
+[type="file"],[dir="rtl"] 
+[type="month"],[dir="rtl"] 
+[type="number"],[dir="rtl"] 
+[type="password"],[dir="rtl"] 
+[type="search"],[dir="rtl"] 
+[type="tel"],[dir="rtl"] 
+[type="text"],[dir="rtl"] 
+[type="time"],[dir="rtl"] 
+[type="url"],[dir="rtl"] 
+[type="week"],[dir="rtl"] 
+textarea {
+  padding-right: 24px;
+}
+
+[dir="ltr"] [type="color"],[dir="ltr"] 
+[type="date"],[dir="ltr"] 
+[type="datetime-local"],[dir="ltr"] 
+[type="email"],[dir="ltr"] 
+[type="file"],[dir="ltr"] 
+[type="month"],[dir="ltr"] 
+[type="number"],[dir="ltr"] 
+[type="password"],[dir="ltr"] 
+[type="search"],[dir="ltr"] 
+[type="tel"],[dir="ltr"] 
+[type="text"],[dir="ltr"] 
+[type="time"],[dir="ltr"] 
+[type="url"],[dir="ltr"] 
+[type="week"],[dir="ltr"] 
+textarea {
+  padding-right: 20px;
+}
+
+[dir="rtl"] [type="color"],[dir="rtl"] 
+[type="date"],[dir="rtl"] 
+[type="datetime-local"],[dir="rtl"] 
+[type="email"],[dir="rtl"] 
+[type="file"],[dir="rtl"] 
+[type="month"],[dir="rtl"] 
+[type="number"],[dir="rtl"] 
+[type="password"],[dir="rtl"] 
+[type="search"],[dir="rtl"] 
+[type="tel"],[dir="rtl"] 
+[type="text"],[dir="rtl"] 
+[type="time"],[dir="rtl"] 
+[type="url"],[dir="rtl"] 
+[type="week"],[dir="rtl"] 
+textarea {
+  padding-left: 20px;
+}
+
+[dir="ltr"] [type="color"],[dir="ltr"] 
+[type="date"],[dir="ltr"] 
+[type="datetime-local"],[dir="ltr"] 
+[type="email"],[dir="ltr"] 
+[type="file"],[dir="ltr"] 
+[type="month"],[dir="ltr"] 
+[type="number"],[dir="ltr"] 
+[type="password"],[dir="ltr"] 
+[type="search"],[dir="ltr"] 
+[type="tel"],[dir="ltr"] 
+[type="text"],[dir="ltr"] 
+[type="time"],[dir="ltr"] 
+[type="url"],[dir="ltr"] 
+[type="week"],[dir="ltr"] 
+textarea {
+  border-top-left-radius: 0;
+}
+
+[dir="rtl"] [type="color"],[dir="rtl"] 
+[type="date"],[dir="rtl"] 
+[type="datetime-local"],[dir="rtl"] 
+[type="email"],[dir="rtl"] 
+[type="file"],[dir="rtl"] 
+[type="month"],[dir="rtl"] 
+[type="number"],[dir="rtl"] 
+[type="password"],[dir="rtl"] 
+[type="search"],[dir="rtl"] 
+[type="tel"],[dir="rtl"] 
+[type="text"],[dir="rtl"] 
+[type="time"],[dir="rtl"] 
+[type="url"],[dir="rtl"] 
+[type="week"],[dir="rtl"] 
+textarea {
+  border-top-right-radius: 0;
+}
+
+[dir="ltr"] [type="color"],[dir="ltr"] 
+[type="date"],[dir="ltr"] 
+[type="datetime-local"],[dir="ltr"] 
+[type="email"],[dir="ltr"] 
+[type="file"],[dir="ltr"] 
+[type="month"],[dir="ltr"] 
+[type="number"],[dir="ltr"] 
+[type="password"],[dir="ltr"] 
+[type="search"],[dir="ltr"] 
+[type="tel"],[dir="ltr"] 
+[type="text"],[dir="ltr"] 
+[type="time"],[dir="ltr"] 
+[type="url"],[dir="ltr"] 
+[type="week"],[dir="ltr"] 
+textarea {
+  border-top-right-radius: 2px;
+}
+
+[dir="rtl"] [type="color"],[dir="rtl"] 
+[type="date"],[dir="rtl"] 
+[type="datetime-local"],[dir="rtl"] 
+[type="email"],[dir="rtl"] 
+[type="file"],[dir="rtl"] 
+[type="month"],[dir="rtl"] 
+[type="number"],[dir="rtl"] 
+[type="password"],[dir="rtl"] 
+[type="search"],[dir="rtl"] 
+[type="tel"],[dir="rtl"] 
+[type="text"],[dir="rtl"] 
+[type="time"],[dir="rtl"] 
+[type="url"],[dir="rtl"] 
+[type="week"],[dir="rtl"] 
+textarea {
+  border-top-left-radius: 2px;
+}
+
+[dir="ltr"] [type="color"],[dir="ltr"] 
+[type="date"],[dir="ltr"] 
+[type="datetime-local"],[dir="ltr"] 
+[type="email"],[dir="ltr"] 
+[type="file"],[dir="ltr"] 
+[type="month"],[dir="ltr"] 
+[type="number"],[dir="ltr"] 
+[type="password"],[dir="ltr"] 
+[type="search"],[dir="ltr"] 
+[type="tel"],[dir="ltr"] 
+[type="text"],[dir="ltr"] 
+[type="time"],[dir="ltr"] 
+[type="url"],[dir="ltr"] 
+[type="week"],[dir="ltr"] 
+textarea {
+  border-bottom-left-radius: 0;
+}
+
+[dir="rtl"] [type="color"],[dir="rtl"] 
+[type="date"],[dir="rtl"] 
+[type="datetime-local"],[dir="rtl"] 
+[type="email"],[dir="rtl"] 
+[type="file"],[dir="rtl"] 
+[type="month"],[dir="rtl"] 
+[type="number"],[dir="rtl"] 
+[type="password"],[dir="rtl"] 
+[type="search"],[dir="rtl"] 
+[type="tel"],[dir="rtl"] 
+[type="text"],[dir="rtl"] 
+[type="time"],[dir="rtl"] 
+[type="url"],[dir="rtl"] 
+[type="week"],[dir="rtl"] 
+textarea {
+  border-bottom-right-radius: 0;
+}
+
+[dir="ltr"] [type="color"],[dir="ltr"] 
+[type="date"],[dir="ltr"] 
+[type="datetime-local"],[dir="ltr"] 
+[type="email"],[dir="ltr"] 
+[type="file"],[dir="ltr"] 
+[type="month"],[dir="ltr"] 
+[type="number"],[dir="ltr"] 
+[type="password"],[dir="ltr"] 
+[type="search"],[dir="ltr"] 
+[type="tel"],[dir="ltr"] 
+[type="text"],[dir="ltr"] 
+[type="time"],[dir="ltr"] 
+[type="url"],[dir="ltr"] 
+[type="week"],[dir="ltr"] 
+textarea {
+  border-bottom-right-radius: 2px;
+}
+
+[dir="rtl"] [type="color"],[dir="rtl"] 
+[type="date"],[dir="rtl"] 
+[type="datetime-local"],[dir="rtl"] 
+[type="email"],[dir="rtl"] 
+[type="file"],[dir="rtl"] 
+[type="month"],[dir="rtl"] 
+[type="number"],[dir="rtl"] 
+[type="password"],[dir="rtl"] 
+[type="search"],[dir="rtl"] 
+[type="tel"],[dir="rtl"] 
+[type="text"],[dir="rtl"] 
+[type="time"],[dir="rtl"] 
+[type="url"],[dir="rtl"] 
+[type="week"],[dir="rtl"] 
+textarea {
+  border-bottom-left-radius: 2px;
+}
+
 [type="color"],
 [type="date"],
 [type="datetime-local"],
@@ -93,10 +309,16 @@
 textarea {
   max-width: 100%;
   min-height: 54px;
+  padding-top: 13px;
+  padding-bottom: 13px;
   color: #313637;
+  border-width: 2px 0;
+  border-style: solid;
+  border-color: transparent;
   outline: 1px
 solid
 transparent;
+  background: linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa; /* LTR */
   font-family: inherit;
   font-size: 1rem;
   line-height: 1.5rem;
@@ -105,40 +327,18 @@ transparent;
   appearance: none;
 }
 
-[dir] [type="color"], [dir] [type="date"], [dir] [type="datetime-local"], [dir] [type="email"], [dir] [type="file"], [dir] [type="month"], [dir] [type="number"], [dir] [type="password"], [dir] [type="search"], [dir] [type="tel"], [dir] [type="text"], [dir] [type="time"], [dir] [type="url"], [dir] [type="week"], [dir] textarea {
-  border-width: 2px 0;
-  border-style: solid;
-  border-color: transparent;
-}
-
-[dir=ltr] [type="color"], [dir=ltr] [type="date"], [dir=ltr] [type="datetime-local"], [dir=ltr] [type="email"], [dir=ltr] [type="file"], [dir=ltr] [type="month"], [dir=ltr] [type="number"], [dir=ltr] [type="password"], [dir=ltr] [type="search"], [dir=ltr] [type="tel"], [dir=ltr] [type="text"], [dir=ltr] [type="time"], [dir=ltr] [type="url"], [dir=ltr] [type="week"], [dir=ltr] textarea {
-  padding:
-    13px
-    20px
-    13px
-    24px;
-  border-radius: 0 2px 2px 0;
-  background: linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
-}
-
-[dir=rtl] [type="color"], [dir=rtl] [type="date"], [dir=rtl] [type="datetime-local"], [dir=rtl] [type="email"], [dir=rtl] [type="file"], [dir=rtl] [type="month"], [dir=rtl] [type="number"], [dir=rtl] [type="password"], [dir=rtl] [type="search"], [dir=rtl] [type="tel"], [dir=rtl] [type="text"], [dir=rtl] [type="time"], [dir=rtl] [type="url"], [dir=rtl] [type="week"], [dir=rtl] textarea {
-  padding:
-    13px
-    24px
-    13px
-    20px;
-  border-radius: 2px 0 0 2px;
-  background: linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
-}
+[dir="rtl"] [type="color"], [dir="rtl"] [type="date"], [dir="rtl"] [type="datetime-local"], [dir="rtl"] [type="email"], [dir="rtl"] [type="file"], [dir="rtl"] [type="month"], [dir="rtl"] [type="number"], [dir="rtl"] [type="password"], [dir="rtl"] [type="search"], [dir="rtl"] [type="tel"], [dir="rtl"] [type="text"], [dir="rtl"] [type="time"], [dir="rtl"] [type="url"], [dir="rtl"] [type="week"], [dir="rtl"] textarea {
+    background: linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%) #f7f9fa;
+  }
 
 [type="color"]:focus, [type="date"]:focus, [type="datetime-local"]:focus, [type="email"]:focus, [type="file"]:focus, [type="month"]:focus, [type="number"]:focus, [type="password"]:focus, [type="search"]:focus, [type="tel"]:focus, [type="text"]:focus, [type="time"]:focus, [type="url"]:focus, [type="week"]:focus, textarea:focus {
+    border-color: #7e96a7;
     outline: 6px
 dashed
 transparent;
-  }
-
-[dir] [type="color"]:focus, [dir] [type="date"]:focus, [dir] [type="datetime-local"]:focus, [dir] [type="email"]:focus, [dir] [type="file"]:focus, [dir] [type="month"]:focus, [dir] [type="number"]:focus, [dir] [type="password"]:focus, [dir] [type="search"]:focus, [dir] [type="tel"]:focus, [dir] [type="text"]:focus, [dir] [type="time"]:focus, [dir] [type="url"]:focus, [dir] [type="week"]:focus, [dir] textarea:focus {
-    border-color: #7e96a7;
+    background: /* LTR */
+      linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%),
+      linear-gradient(to left, #7e96a7 2px, transparent 2px, transparent 100%) #f7f9fa;
     box-shadow: 0
 0
 0
@@ -157,13 +357,11 @@ transparent;
 rgba(83, 176, 235, 0.25);
   }
 
-[dir=ltr] [type="color"]:focus, [dir=ltr] [type="date"]:focus, [dir=ltr] [type="datetime-local"]:focus, [dir=ltr] [type="email"]:focus, [dir=ltr] [type="file"]:focus, [dir=ltr] [type="month"]:focus, [dir=ltr] [type="number"]:focus, [dir=ltr] [type="password"]:focus, [dir=ltr] [type="search"]:focus, [dir=ltr] [type="tel"]:focus, [dir=ltr] [type="text"]:focus, [dir=ltr] [type="time"]:focus, [dir=ltr] [type="url"]:focus, [dir=ltr] [type="week"]:focus, [dir=ltr] textarea:focus {
-  background: linear-gradient(to right, #7e96a7 6px, transparent 6px, transparent 100%), linear-gradient(to left, #7e96a7 2px, transparent 2px, transparent 100%) #f7f9fa;
-  }
-
-[dir=rtl] [type="color"]:focus, [dir=rtl] [type="date"]:focus, [dir=rtl] [type="datetime-local"]:focus, [dir=rtl] [type="email"]:focus, [dir=rtl] [type="file"]:focus, [dir=rtl] [type="month"]:focus, [dir=rtl] [type="number"]:focus, [dir=rtl] [type="password"]:focus, [dir=rtl] [type="search"]:focus, [dir=rtl] [type="tel"]:focus, [dir=rtl] [type="text"]:focus, [dir=rtl] [type="time"]:focus, [dir=rtl] [type="url"]:focus, [dir=rtl] [type="week"]:focus, [dir=rtl] textarea:focus {
-    background: linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%), linear-gradient(to right, #7e96a7 2px, transparent 2px, transparent 100%) #f7f9fa;
-  }
+[dir="rtl"] [type="color"]:focus, [dir="rtl"] [type="date"]:focus, [dir="rtl"] [type="datetime-local"]:focus, [dir="rtl"] [type="email"]:focus, [dir="rtl"] [type="file"]:focus, [dir="rtl"] [type="month"]:focus, [dir="rtl"] [type="number"]:focus, [dir="rtl"] [type="password"]:focus, [dir="rtl"] [type="search"]:focus, [dir="rtl"] [type="tel"]:focus, [dir="rtl"] [type="text"]:focus, [dir="rtl"] [type="time"]:focus, [dir="rtl"] [type="url"]:focus, [dir="rtl"] [type="week"]:focus, [dir="rtl"] textarea:focus {
+      background:
+        linear-gradient(to left, #7e96a7 6px, transparent 6px, transparent 100%),
+        linear-gradient(to right, #7e96a7 2px, transparent 2px, transparent 100%) #f7f9fa;
+    }
 
 @supports (outline-style: double) {
 
@@ -172,17 +370,18 @@ rgba(83, 176, 235, 0.25);
   }
     }
 
-[dir] [type="color"]:hover, [dir] [type="date"]:hover, [dir] [type="datetime-local"]:hover, [dir] [type="email"]:hover, [dir] [type="file"]:hover, [dir] [type="month"]:hover, [dir] [type="number"]:hover, [dir] [type="password"]:hover, [dir] [type="search"]:hover, [dir] [type="tel"]:hover, [dir] [type="text"]:hover, [dir] [type="time"]:hover, [dir] [type="url"]:hover, [dir] [type="week"]:hover, [dir] textarea:hover {
+[type="color"]:hover, [type="date"]:hover, [type="datetime-local"]:hover, [type="email"]:hover, [type="file"]:hover, [type="month"]:hover, [type="number"]:hover, [type="password"]:hover, [type="search"]:hover, [type="tel"]:hover, [type="text"]:hover, [type="time"]:hover, [type="url"]:hover, [type="week"]:hover, textarea:hover {
     border-color: #53b0eb;
+    background: /* LTR */
+      linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%),
+      linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
   }
 
-[dir=ltr] [type="color"]:hover, [dir=ltr] [type="date"]:hover, [dir=ltr] [type="datetime-local"]:hover, [dir=ltr] [type="email"]:hover, [dir=ltr] [type="file"]:hover, [dir=ltr] [type="month"]:hover, [dir=ltr] [type="number"]:hover, [dir=ltr] [type="password"]:hover, [dir=ltr] [type="search"]:hover, [dir=ltr] [type="tel"]:hover, [dir=ltr] [type="text"]:hover, [dir=ltr] [type="time"]:hover, [dir=ltr] [type="url"]:hover, [dir=ltr] [type="week"]:hover, [dir=ltr] textarea:hover {
-  background: linear-gradient(to right, #53b0eb 6px, transparent 6px, transparent 100%), linear-gradient(to left, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
-  }
-
-[dir=rtl] [type="color"]:hover, [dir=rtl] [type="date"]:hover, [dir=rtl] [type="datetime-local"]:hover, [dir=rtl] [type="email"]:hover, [dir=rtl] [type="file"]:hover, [dir=rtl] [type="month"]:hover, [dir=rtl] [type="number"]:hover, [dir=rtl] [type="password"]:hover, [dir=rtl] [type="search"]:hover, [dir=rtl] [type="tel"]:hover, [dir=rtl] [type="text"]:hover, [dir=rtl] [type="time"]:hover, [dir=rtl] [type="url"]:hover, [dir=rtl] [type="week"]:hover, [dir=rtl] textarea:hover {
-    background: linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%), linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
-  }
+[dir="rtl"] [type="color"]:hover, [dir="rtl"] [type="date"]:hover, [dir="rtl"] [type="datetime-local"]:hover, [dir="rtl"] [type="email"]:hover, [dir="rtl"] [type="file"]:hover, [dir="rtl"] [type="month"]:hover, [dir="rtl"] [type="number"]:hover, [dir="rtl"] [type="password"]:hover, [dir="rtl"] [type="search"]:hover, [dir="rtl"] [type="tel"]:hover, [dir="rtl"] [type="text"]:hover, [dir="rtl"] [type="time"]:hover, [dir="rtl"] [type="url"]:hover, [dir="rtl"] [type="week"]:hover, [dir="rtl"] textarea:hover {
+      background:
+        linear-gradient(to left, #53b0eb 6px, transparent 6px, transparent 100%),
+        linear-gradient(to right, #53b0eb 2px, transparent 2px, transparent 100%) #f7f9fa;
+    }
 
 [type="color"]::-ms-clear, [type="date"]::-ms-clear, [type="datetime-local"]::-ms-clear, [type="email"]::-ms-clear, [type="file"]::-ms-clear, [type="month"]::-ms-clear, [type="number"]::-ms-clear, [type="password"]::-ms-clear, [type="search"]::-ms-clear, [type="tel"]::-ms-clear, [type="text"]::-ms-clear, [type="time"]::-ms-clear, [type="url"]::-ms-clear, [type="week"]::-ms-clear, textarea::-ms-clear {
     display: none;
@@ -190,33 +389,30 @@ rgba(83, 176, 235, 0.25);
 
 [type="color"][disabled], [type="date"][disabled], [type="datetime-local"][disabled], [type="email"][disabled], [type="file"][disabled], [type="month"][disabled], [type="number"][disabled], [type="password"][disabled], [type="search"][disabled], [type="tel"][disabled], [type="text"][disabled], [type="time"][disabled], [type="url"][disabled], [type="week"][disabled], textarea[disabled] {
     color: #7e96a7;
-  }
-
-[dir] [type="color"][disabled], [dir] [type="date"][disabled], [dir] [type="datetime-local"][disabled], [dir] [type="email"][disabled], [dir] [type="file"][disabled], [dir] [type="month"][disabled], [dir] [type="number"][disabled], [dir] [type="password"][disabled], [dir] [type="search"][disabled], [dir] [type="tel"][disabled], [dir] [type="text"][disabled], [dir] [type="time"][disabled], [dir] [type="url"][disabled], [dir] [type="week"][disabled], [dir] textarea[disabled] {
     border-color: transparent;
+    background: linear-gradient(to right, #d7e1e8 6px, transparent 6px, transparent 100%) #f7f9fa;
   }
 
-[dir=ltr] [type="color"][disabled], [dir=ltr] [type="date"][disabled], [dir=ltr] [type="datetime-local"][disabled], [dir=ltr] [type="email"][disabled], [dir=ltr] [type="file"][disabled], [dir=ltr] [type="month"][disabled], [dir=ltr] [type="number"][disabled], [dir=ltr] [type="password"][disabled], [dir=ltr] [type="search"][disabled], [dir=ltr] [type="tel"][disabled], [dir=ltr] [type="text"][disabled], [dir=ltr] [type="time"][disabled], [dir=ltr] [type="url"][disabled], [dir=ltr] [type="week"][disabled], [dir=ltr] textarea[disabled] {
-  background: linear-gradient(to right, #d7e1e8 6px, transparent 6px, transparent 100%) #f7f9fa;
-  }
+/* LTR */
 
-[dir=rtl] [type="color"][disabled], [dir=rtl] [type="date"][disabled], [dir=rtl] [type="datetime-local"][disabled], [dir=rtl] [type="email"][disabled], [dir=rtl] [type="file"][disabled], [dir=rtl] [type="month"][disabled], [dir=rtl] [type="number"][disabled], [dir=rtl] [type="password"][disabled], [dir=rtl] [type="search"][disabled], [dir=rtl] [type="tel"][disabled], [dir=rtl] [type="text"][disabled], [dir=rtl] [type="time"][disabled], [dir=rtl] [type="url"][disabled], [dir=rtl] [type="week"][disabled], [dir=rtl] textarea[disabled] {
-    background: linear-gradient(to left, #d7e1e8 6px, transparent 6px, transparent 100%) #f7f9fa;
-  }
+[dir="rtl"] [type="color"][disabled], [dir="rtl"] [type="date"][disabled], [dir="rtl"] [type="datetime-local"][disabled], [dir="rtl"] [type="email"][disabled], [dir="rtl"] [type="file"][disabled], [dir="rtl"] [type="month"][disabled], [dir="rtl"] [type="number"][disabled], [dir="rtl"] [type="password"][disabled], [dir="rtl"] [type="search"][disabled], [dir="rtl"] [type="tel"][disabled], [dir="rtl"] [type="text"][disabled], [dir="rtl"] [type="time"][disabled], [dir="rtl"] [type="url"][disabled], [dir="rtl"] [type="week"][disabled], [dir="rtl"] textarea[disabled] {
+      background: linear-gradient(to left, #d7e1e8 6px, transparent 6px, transparent 100%) #f7f9fa;
+    }
 
-[dir] [type="color"].error, [dir] [type="date"].error, [dir] [type="datetime-local"].error, [dir] [type="email"].error, [dir] [type="file"].error, [dir] [type="month"].error, [dir] [type="number"].error, [dir] [type="password"].error, [dir] [type="search"].error, [dir] [type="tel"].error, [dir] [type="text"].error, [dir] [type="time"].error, [dir] [type="url"].error, [dir] [type="week"].error, [dir] textarea.error {
+[type="color"].error, [type="date"].error, [type="datetime-local"].error, [type="email"].error, [type="file"].error, [type="month"].error, [type="number"].error, [type="password"].error, [type="search"].error, [type="tel"].error, [type="text"].error, [type="time"].error, [type="url"].error, [type="week"].error, textarea.error {
     border-color: #e33f1e;
+    background: /* LTR */
+      linear-gradient(to right, #e33f1e 6px, transparent 6px, transparent 100%),
+      linear-gradient(to left, #e33f1e 2px, transparent 2px, transparent 100%) #f7f9fa;
   }
 
-[dir=ltr] [type="color"].error, [dir=ltr] [type="date"].error, [dir=ltr] [type="datetime-local"].error, [dir=ltr] [type="email"].error, [dir=ltr] [type="file"].error, [dir=ltr] [type="month"].error, [dir=ltr] [type="number"].error, [dir=ltr] [type="password"].error, [dir=ltr] [type="search"].error, [dir=ltr] [type="tel"].error, [dir=ltr] [type="text"].error, [dir=ltr] [type="time"].error, [dir=ltr] [type="url"].error, [dir=ltr] [type="week"].error, [dir=ltr] textarea.error {
-  background: linear-gradient(to right, #e33f1e 6px, transparent 6px, transparent 100%), linear-gradient(to left, #e33f1e 2px, transparent 2px, transparent 100%) #f7f9fa;
-  }
-
-[dir=rtl] [type="color"].error, [dir=rtl] [type="date"].error, [dir=rtl] [type="datetime-local"].error, [dir=rtl] [type="email"].error, [dir=rtl] [type="file"].error, [dir=rtl] [type="month"].error, [dir=rtl] [type="number"].error, [dir=rtl] [type="password"].error, [dir=rtl] [type="search"].error, [dir=rtl] [type="tel"].error, [dir=rtl] [type="text"].error, [dir=rtl] [type="time"].error, [dir=rtl] [type="url"].error, [dir=rtl] [type="week"].error, [dir=rtl] textarea.error {
-    background: linear-gradient(to left, #e33f1e 6px, transparent 6px, transparent 100%), linear-gradient(to right, #e33f1e 2px, transparent 2px, transparent 100%) #f7f9fa;
-  }
+[dir="rtl"] [type="color"].error, [dir="rtl"] [type="date"].error, [dir="rtl"] [type="datetime-local"].error, [dir="rtl"] [type="email"].error, [dir="rtl"] [type="file"].error, [dir="rtl"] [type="month"].error, [dir="rtl"] [type="number"].error, [dir="rtl"] [type="password"].error, [dir="rtl"] [type="search"].error, [dir="rtl"] [type="tel"].error, [dir="rtl"] [type="text"].error, [dir="rtl"] [type="time"].error, [dir="rtl"] [type="url"].error, [dir="rtl"] [type="week"].error, [dir="rtl"] textarea.error {
+      background:
+        linear-gradient(to left, #e33f1e 6px, transparent 6px, transparent 100%),
+        linear-gradient(to right, #e33f1e 2px, transparent 2px, transparent 100%) #f7f9fa;
+    }
 
-[dir] [type="color"].error:focus, [dir] [type="date"].error:focus, [dir] [type="datetime-local"].error:focus, [dir] [type="email"].error:focus, [dir] [type="file"].error:focus, [dir] [type="month"].error:focus, [dir] [type="number"].error:focus, [dir] [type="password"].error:focus, [dir] [type="search"].error:focus, [dir] [type="tel"].error:focus, [dir] [type="text"].error:focus, [dir] [type="time"].error:focus, [dir] [type="url"].error:focus, [dir] [type="week"].error:focus, [dir] textarea.error:focus {
+[type="color"].error:focus, [type="date"].error:focus, [type="datetime-local"].error:focus, [type="email"].error:focus, [type="file"].error:focus, [type="month"].error:focus, [type="number"].error:focus, [type="password"].error:focus, [type="search"].error:focus, [type="tel"].error:focus, [type="text"].error:focus, [type="time"].error:focus, [type="url"].error:focus, [type="week"].error:focus, textarea.error:focus {
       box-shadow: 0
 0
 0
@@ -235,20 +431,47 @@ rgba(83, 176, 235, 0.25);
 rgba(83, 176, 235, 0.25);
     }
 
+[dir="ltr"] [type="color"].form-element--small,[dir="ltr"]  [type="date"].form-element--small,[dir="ltr"]  [type="datetime-local"].form-element--small,[dir="ltr"]  [type="email"].form-element--small,[dir="ltr"]  [type="file"].form-element--small,[dir="ltr"]  [type="month"].form-element--small,[dir="ltr"]  [type="number"].form-element--small,[dir="ltr"]  [type="password"].form-element--small,[dir="ltr"]  [type="search"].form-element--small,[dir="ltr"]  [type="tel"].form-element--small,[dir="ltr"]  [type="text"].form-element--small,[dir="ltr"]  [type="time"].form-element--small,[dir="ltr"]  [type="url"].form-element--small,[dir="ltr"]  [type="week"].form-element--small,[dir="ltr"]  textarea.form-element--small {
+    padding-left: 19.5px;
+}
+
+[dir="rtl"] [type="color"].form-element--small,[dir="rtl"]  [type="date"].form-element--small,[dir="rtl"]  [type="datetime-local"].form-element--small,[dir="rtl"]  [type="email"].form-element--small,[dir="rtl"]  [type="file"].form-element--small,[dir="rtl"]  [type="month"].form-element--small,[dir="rtl"]  [type="number"].form-element--small,[dir="rtl"]  [type="password"].form-element--small,[dir="rtl"]  [type="search"].form-element--small,[dir="rtl"]  [type="tel"].form-element--small,[dir="rtl"]  [type="text"].form-element--small,[dir="rtl"]  [type="time"].form-element--small,[dir="rtl"]  [type="url"].form-element--small,[dir="rtl"]  [type="week"].form-element--small,[dir="rtl"]  textarea.form-element--small {
+    padding-right: 19.5px;
+}
+
+[dir="ltr"] [type="color"].form-element--small,[dir="ltr"]  [type="date"].form-element--small,[dir="ltr"]  [type="datetime-local"].form-element--small,[dir="ltr"]  [type="email"].form-element--small,[dir="ltr"]  [type="file"].form-element--small,[dir="ltr"]  [type="month"].form-element--small,[dir="ltr"]  [type="number"].form-element--small,[dir="ltr"]  [type="password"].form-element--small,[dir="ltr"]  [type="search"].form-element--small,[dir="ltr"]  [type="tel"].form-element--small,[dir="ltr"]  [type="text"].form-element--small,[dir="ltr"]  [type="time"].form-element--small,[dir="ltr"]  [type="url"].form-element--small,[dir="ltr"]  [type="week"].form-element--small,[dir="ltr"]  textarea.form-element--small {
+    padding-right: 15.5px;
+}
+
+[dir="rtl"] [type="color"].form-element--small,[dir="rtl"]  [type="date"].form-element--small,[dir="rtl"]  [type="datetime-local"].form-element--small,[dir="rtl"]  [type="email"].form-element--small,[dir="rtl"]  [type="file"].form-element--small,[dir="rtl"]  [type="month"].form-element--small,[dir="rtl"]  [type="number"].form-element--small,[dir="rtl"]  [type="password"].form-element--small,[dir="rtl"]  [type="search"].form-element--small,[dir="rtl"]  [type="tel"].form-element--small,[dir="rtl"]  [type="text"].form-element--small,[dir="rtl"]  [type="time"].form-element--small,[dir="rtl"]  [type="url"].form-element--small,[dir="rtl"]  [type="week"].form-element--small,[dir="rtl"]  textarea.form-element--small {
+    padding-left: 15.5px;
+}
+
 [type="color"].form-element--small, [type="date"].form-element--small, [type="datetime-local"].form-element--small, [type="email"].form-element--small, [type="file"].form-element--small, [type="month"].form-element--small, [type="number"].form-element--small, [type="password"].form-element--small, [type="search"].form-element--small, [type="tel"].form-element--small, [type="text"].form-element--small, [type="time"].form-element--small, [type="url"].form-element--small, [type="week"].form-element--small, textarea.form-element--small {
     min-height: 45px;
+    padding-top: 8.5px;
+    padding-bottom: 8.5px;
   }
 
-[dir=ltr] [type="color"].form-element--small, [dir=ltr] [type="date"].form-element--small, [dir=ltr] [type="datetime-local"].form-element--small, [dir=ltr] [type="email"].form-element--small, [dir=ltr] [type="file"].form-element--small, [dir=ltr] [type="month"].form-element--small, [dir=ltr] [type="number"].form-element--small, [dir=ltr] [type="password"].form-element--small, [dir=ltr] [type="search"].form-element--small, [dir=ltr] [type="tel"].form-element--small, [dir=ltr] [type="text"].form-element--small, [dir=ltr] [type="time"].form-element--small, [dir=ltr] [type="url"].form-element--small, [dir=ltr] [type="week"].form-element--small, [dir=ltr] textarea.form-element--small {
-  padding: 8.5px 15.5px 8.5px 19.5px;
-  }
+/* Ensure that date field isn't larger than other fields. */
 
-[dir=rtl] [type="color"].form-element--small, [dir=rtl] [type="date"].form-element--small, [dir=rtl] [type="datetime-local"].form-element--small, [dir=rtl] [type="email"].form-element--small, [dir=rtl] [type="file"].form-element--small, [dir=rtl] [type="month"].form-element--small, [dir=rtl] [type="number"].form-element--small, [dir=rtl] [type="password"].form-element--small, [dir=rtl] [type="search"].form-element--small, [dir=rtl] [type="tel"].form-element--small, [dir=rtl] [type="text"].form-element--small, [dir=rtl] [type="time"].form-element--small, [dir=rtl] [type="url"].form-element--small, [dir=rtl] [type="week"].form-element--small, [dir=rtl] textarea.form-element--small {
-    padding: 8.5px 19.5px 8.5px 15.5px;
-  }
+[dir="ltr"] [type="date"]::-webkit-datetime-edit-fields-wrapper {
+    padding-left: 0;
+}
 
-/* Ensure that date field isn't larger than other fields. */
+[dir="rtl"] [type="date"]::-webkit-datetime-edit-fields-wrapper {
+    padding-right: 0;
+}
+
+[dir="ltr"] [type="date"]::-webkit-datetime-edit-fields-wrapper {
+    padding-right: 0;
+}
+
+[dir="rtl"] [type="date"]::-webkit-datetime-edit-fields-wrapper {
+    padding-left: 0;
+}
 
-[dir] [type="date"]::-webkit-datetime-edit-fields-wrapper {
-    padding: 0;
+[type="date"]::-webkit-datetime-edit-fields-wrapper {
+    padding-top: 0;
+    padding-bottom: 0;
   }
diff --git a/css/components/form-text.pcss.css b/css/components/form-text.pcss.css
index c020413..2dde759 100644
--- a/css/components/form-text.pcss.css
+++ b/css/components/form-text.pcss.css
@@ -22,29 +22,42 @@
 textarea {
   max-width: 100%;
   min-height: var(--sp3);
-  padding:
-    calc((var(--sp3) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2)
-    calc(var(--sp1) + var(--form-element-border-size-base))
-    calc((var(--sp3) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2)
-    calc(var(--sp1) + var(--form-element-border-size-left));
+  padding-block: calc((var(--sp3) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2);
+  padding-inline-start: calc(var(--sp1) + var(--form-element-border-size-left));
+  padding-inline-end: calc(var(--sp1) + var(--form-element-border-size-base));
   color: var(--color--gray-10);
   border-width: var(--form-element-border-size-base) 0;
   border-style: solid;
   border-color: transparent;
-  border-radius: 0 var(--border-radius-base) var(--border-radius-base) 0;
+  border-start-start-radius: 0;
+  border-start-end-radius: var(--border-radius-base);
+  border-end-start-radius: 0;
+  border-end-end-radius: var(--border-radius-base);
   outline: var(--outline--thin);
-  background: linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95);
+  background: linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); /* LTR */
   font-family: inherit;
   font-size: var(--font-size-base);
   line-height: calc(var(--font-size-base) * 1.5);
   appearance: none;
 
+  [dir="rtl"] & {
+    background: linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95);
+  }
+
   &:focus {
     border-color: var(--color--gray-30);
     outline: var(--outline--thick);
-    background: linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+    background: /* LTR */
+      linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+      linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
     box-shadow: var(--shadow-focusable);
 
+    [dir="rtl"] & {
+      background:
+        linear-gradient(to left, var(--color--gray-30) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+        linear-gradient(to right, var(--color--gray-30) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+    }
+
     @supports (outline-style: double) {
       outline-style: double;
     }
@@ -52,7 +65,15 @@ textarea {
 
   &:hover {
     border-color: var(--color--blue-70);
-    background: linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+    background: /* LTR */
+      linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+      linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+
+    [dir="rtl"] & {
+      background:
+        linear-gradient(to left, var(--color--blue-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+        linear-gradient(to right, var(--color--blue-70) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+    }
   }
 
   &::-ms-clear {
@@ -62,12 +83,24 @@ textarea {
   &[disabled] {
     color: var(--color--gray-30);
     border-color: transparent;
-    background: linear-gradient(to right, var(--color--gray-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95);
+    background: linear-gradient(to right, var(--color--gray-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95); /* LTR */
+
+    [dir="rtl"] & {
+      background: linear-gradient(to left, var(--color--gray-70) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%) var(--color--gray-95);
+    }
   }
 
   &.error {
     border-color: var(--color--red);
-    background: linear-gradient(to right, var(--color--red) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%), linear-gradient(to left, var(--color--red) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+    background: /* LTR */
+      linear-gradient(to right, var(--color--red) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+      linear-gradient(to left, var(--color--red) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+
+    [dir="rtl"] & {
+      background:
+        linear-gradient(to left, var(--color--red) var(--form-element-border-size-left), transparent var(--form-element-border-size-left), transparent 100%),
+        linear-gradient(to right, var(--color--red) var(--form-element-border-size-base), transparent var(--form-element-border-size-base), transparent 100%) var(--color--gray-95);
+    }
 
     &:focus {
       box-shadow: var(--shadow-focusable);
@@ -76,13 +109,17 @@ textarea {
 
   &.form-element--small {
     min-height: var(--sp2-5);
-    padding: calc((var(--sp2-5) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2) calc(var(--sp0-75) + var(--form-element-border-size-base)) calc((var(--sp2-5) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2) calc(var(--sp0-75) + var(--form-element-border-size-left));
+    padding-block: calc((var(--sp2-5) - (var(--font-size-base) * 1.5) - (var(--form-element-border-size-base) * 2)) / 2);
+    padding-inline-start: calc(var(--sp0-75) + var(--form-element-border-size-left));
+    padding-inline-end: calc(var(--sp0-75) + var(--form-element-border-size-base));
   }
 }
 
 [type="date"] {
   /* Ensure that date field isn't larger than other fields. */
   &::-webkit-datetime-edit-fields-wrapper {
-    padding: 0;
+    padding-block: 0;
+    padding-inline-start: 0;
+    padding-inline-end: 0;
   }
 }
diff --git a/css/components/form.css b/css/components/form.css
index a1b974d..06005f5 100644
--- a/css/components/form.css
+++ b/css/components/form.css
@@ -94,29 +94,27 @@
  * General form item.
  */
 
-[dir] .form-item {
+.form-item {
   margin-top: 18px;
   margin-bottom: 18px;
 }
 
 .form-item__label--multiple-value-form {
+  margin-top: 0;
+  margin-bottom: 0;
   font-size: inherit;
   font-weight: inherit;
   line-height: inherit;
 }
 
-[dir] .form-item__label--multiple-value-form {
-  margin-top: 0;
-  margin-bottom: 0;
-}
-
 /**
  * When a table row or a container-inline has a single form item, prevent it
  * from adding unnecessary extra spacing.
  * If it has multiple form items, allow spacing between them, overriding Classy.
  */
 
-[dir] tr .form-item, [dir] .container-inline .form-item {
+tr .form-item,
+.container-inline .form-item {
   margin-top: 9px;
   margin-bottom: 9px;
 }
@@ -127,35 +125,29 @@
 
 .form-item__label {
   display: table;
+  margin-top: 9px;
+  margin-bottom: 9px;
   font-size: 1.125rem;
   font-weight: 700;
 }
 
-[dir] .form-item__label {
-  margin-top: 9px;
-  margin-bottom: 9px;
+[dir="ltr"] .container-inline .form-item__label {
+    margin-right: 1em;
 }
 
-[dir=ltr] .container-inline .form-item__label {
-  margin-right: 1em;
-  }
-
-[dir=rtl] .container-inline .form-item__label {
+[dir="rtl"] .container-inline .form-item__label {
     margin-left: 1em;
-  }
+}
 
 .form-item__label--multiple-value-form {
+  margin-top: 0;
+  margin-bottom: 0;
   font-size: inherit;
   font-weight: inherit;
   line-height: inherit;
 }
 
-[dir] .form-item__label--multiple-value-form {
-  margin-top: 0;
-  margin-bottom: 0;
-}
-
-[dir] .form-item__label[for] {
+.form-item__label[for] {
   cursor: pointer;
 }
 
@@ -167,11 +159,8 @@
 /* Label states. */
 
 .form-item__label.is-disabled {
-  color: #afb8be;
-}
-
-[dir] .form-item__label.is-disabled {
   cursor: default;
+  color: #afb8be;
 }
 
 /* Form required star icon */
@@ -182,30 +171,21 @@
   display: inline-block;
   width: 0.5rem;
   height: 0.5rem;
+  margin-left: 0.3em;
+  margin-right: 0.3em;
   content: "";
   vertical-align: text-top;
   /* Use a background image to prevent screen readers from announcing the text. */
-}
-
-[dir] .form-item__label.form-required::after, [dir] .fieldset__label.form-required::after, [dir] .required-mark::after {
   background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%232494DB'/%3E%3C/svg%3E%0A");
   background-repeat: no-repeat;
   background-size: 0.5rem 0.5rem;
 }
 
-[dir=ltr] .form-item__label.form-required::after, [dir=ltr] .fieldset__label.form-required::after, [dir=ltr] .required-mark::after {
-  margin-right: 0.3em;
-  margin-left: 0.3em;
-}
-
-[dir=rtl] .form-item__label.form-required::after, [dir=rtl] .fieldset__label.form-required::after, [dir=rtl] .required-mark::after {
-  margin-left: 0.3em;
-  margin-right: 0.3em;
-}
-
 @media screen and (-ms-high-contrast: active) {
 
-[dir] .form-item__label.form-required::after, [dir] .fieldset__label.form-required::after, [dir] .required-mark::after {
+.form-item__label.form-required::after,
+.fieldset__label.form-required::after,
+.required-mark::after {
     background-image: url("data:image/svg+xml,%3Csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23ffffff'/%3E%3C/svg%3E%0A")
 }
   }
@@ -215,16 +195,13 @@
  */
 
 .form-item__description {
-  font-size: 0.875rem;
-  line-height: 1.125rem;
-}
-
-[dir] .form-item__description {
   margin-top: 9px;
   margin-bottom: 9px;
+  font-size: 0.875rem;
+  line-height: 1.125rem;
 }
 
-[dir] .field-multiple-table + .form-item__description {
+.field-multiple-table + .form-item__description {
   margin-top: 0;
 }
 
@@ -232,33 +209,33 @@
  * Error message (Inline form errors).
  */
 
-.form-item--error-message {
-  color: #e33f1e;
-  font-size: 0.875rem;
-  line-height: 1.125rem;
+[dir="ltr"] .form-item--error-message {
+  padding-left: 27px;
 }
 
-[dir] .form-item--error-message {
+[dir="rtl"] .form-item--error-message {
+  padding-right: 27px;
+}
+
+.form-item--error-message {
   margin-top: 9px;
   margin-bottom: 9px;
+  color: #e33f1e;
   background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
   background-repeat: no-repeat;
+  background-position: left top; /* LTR */
   background-size: 18px 18px;
+  font-size: 0.875rem;
+  line-height: 1.125rem;
 }
 
-[dir=ltr] .form-item--error-message {
-  padding-left: 27px;
-  background-position: left top;
-}
-
-[dir=rtl] .form-item--error-message {
-  padding-right: 27px;
-  background-position: right top;
-}
+[dir="rtl"] .form-item--error-message {
+    background-position: right top;
+  }
 
 @media screen and (-ms-high-contrast: active) {
 
-[dir] .form-item--error-message {
+.form-item--error-message {
     background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E")
 }
   }
@@ -271,14 +248,12 @@
   display: flex;
   flex-wrap: wrap;
   align-items: flex-start;
-}
-
-[dir] .form-actions {
   margin-top: 9px;
   margin-bottom: 9px;
 }
 
-[dir] .form-actions .button, [dir] .form-actions .action-link {
+.form-actions .button,
+.form-actions .action-link {
   margin-top: 9px;
   margin-bottom: 9px;
 }
@@ -306,11 +281,15 @@
   min-width: 1px;
 }
 
-[dir=ltr] .form-item--editor-format .form-item__label, [dir=ltr] .form-item--editor-format .form-item__prefix, [dir=ltr] .form-item--editor-format .form-item__suffix {
+[dir="ltr"] .form-item--editor-format .form-item__label,[dir="ltr"] 
+.form-item--editor-format .form-item__prefix,[dir="ltr"] 
+.form-item--editor-format .form-item__suffix {
   margin-right: 9px;
 }
 
-[dir=rtl] .form-item--editor-format .form-item__label, [dir=rtl] .form-item--editor-format .form-item__prefix, [dir=rtl] .form-item--editor-format .form-item__suffix {
+[dir="rtl"] .form-item--editor-format .form-item__label,[dir="rtl"] 
+.form-item--editor-format .form-item__prefix,[dir="rtl"] 
+.form-item--editor-format .form-item__suffix {
   margin-left: 9px;
 }
 
diff --git a/css/components/form.pcss.css b/css/components/form.pcss.css
index 5227895..2cdd20c 100644
--- a/css/components/form.pcss.css
+++ b/css/components/form.pcss.css
@@ -18,13 +18,11 @@
  * General form item.
  */
 .form-item {
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp1);
+  margin-block: var(--sp1);
 }
 
 .form-item__label--multiple-value-form {
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
   font-size: inherit;
   font-weight: inherit;
   line-height: inherit;
@@ -37,8 +35,7 @@
  */
 tr .form-item,
 .container-inline .form-item {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
 }
 
 /**
@@ -46,19 +43,17 @@ tr .form-item,
  */
 .form-item__label {
   display: table;
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
   font-size: var(--font-size-l);
   font-weight: 700;
 
   .container-inline & {
-    margin-right: 1em;
+    margin-inline-end: 1em;
   }
 }
 
 .form-item__label--multiple-value-form {
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
   font-size: inherit;
   font-weight: inherit;
   line-height: inherit;
@@ -86,8 +81,7 @@ tr .form-item,
   display: inline-block;
   width: 0.5rem;
   height: 0.5rem;
-  margin-right: 0.3em;
-  margin-left: 0.3em;
+  margin-inline: 0.3em;
   content: "";
   vertical-align: text-top;
   /* Use a background image to prevent screen readers from announcing the text. */
@@ -104,31 +98,33 @@ tr .form-item,
  * Form item description.
  */
 .form-item__description {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
   font-size: var(--font-size-s);
   line-height: var(--line-height-s);
 }
 
 .field-multiple-table + .form-item__description {
-  margin-top: 0;
+  margin-block-start: 0;
 }
 
 /**
  * Error message (Inline form errors).
  */
 .form-item--error-message {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
-  padding-left: var(--sp1-5);
+  margin-block: var(--sp0-5);
+  padding-inline-start: var(--sp1-5);
   color: var(--color--red);
   background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23E33F1E' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
   background-repeat: no-repeat;
-  background-position: left top;
+  background-position: left top; /* LTR */
   background-size: var(--sp1) var(--sp1);
   font-size: var(--font-size-s);
   line-height: var(--line-height-s);
 
+  [dir="rtl"] & {
+    background-position: right top;
+  }
+
   @media screen and (-ms-high-contrast: active) {
     background-image: url("data:image/svg+xml,%3Csvg width='18' height='18' viewBox='0 0 18 18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23ffffff' d='M9 0C4.03125 0 0 4.03125 0 9C0 13.9688 4.03125 18 9 18C13.9687 18 18 13.9688 18 9C18 4.03125 13.9687 0 9 0ZM10.5 14.6133C10.5 14.8242 10.3359 15 10.1367 15H7.88672C7.67578 15 7.5 14.8242 7.5 14.6133V12.3867C7.5 12.1758 7.67578 12 7.88672 12H10.1367C10.3359 12 10.5 12.1758 10.5 12.3867V14.6133ZM10.4766 10.582C10.4648 10.7461 10.2891 10.875 10.0781 10.875H7.91016C7.6875 10.875 7.51172 10.7461 7.51172 10.582L7.3125 3.30469C7.3125 3.22266 7.34766 3.14063 7.42969 3.09375C7.5 3.03516 7.60547 3 7.71094 3H10.2891C10.3945 3 10.5 3.03516 10.5703 3.09375C10.6523 3.14063 10.6875 3.22266 10.6875 3.30469L10.4766 10.582Z'/%3E%3C/svg%3E");
   }
@@ -141,14 +137,12 @@ tr .form-item,
   display: flex;
   flex-wrap: wrap;
   align-items: flex-start;
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
 }
 
 .form-actions .button,
 .form-actions .action-link {
-  margin-top: var(--sp0-5);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp0-5);
 }
 
 .form-actions .ajax-progress--throbber {
@@ -175,7 +169,7 @@ tr .form-item,
 .form-item--editor-format .form-item__label,
 .form-item--editor-format .form-item__prefix,
 .form-item--editor-format .form-item__suffix {
-  margin-right: var(--sp0-5);
+  margin-inline-end: var(--sp0-5);
 }
 
 .form-item--editor-format .form-item__description,
diff --git a/css/components/header-buttons-mobile.css b/css/components/header-buttons-mobile.css
index db22f18..ab6c703 100644
--- a/css/components/header-buttons-mobile.css
+++ b/css/components/header-buttons-mobile.css
@@ -76,35 +76,35 @@
   /* Form */
 }
 
-[dir] .mobile-buttons {
-  margin-top: 9px;
-}
-
-[dir=ltr] .mobile-buttons {
+[dir="ltr"] .mobile-buttons {
   margin-left: auto;
 }
 
-[dir=rtl] .mobile-buttons {
+[dir="rtl"] .mobile-buttons {
   margin-right: auto;
 }
 
+.mobile-buttons {
+  margin-top: 9px;
+}
+
 @media (min-width: 500px) {
 
-[dir] .mobile-buttons {
+.mobile-buttons {
     margin-top: 36px
 }
   }
 
 @media (min-width: 700px) {
 
-[dir] .mobile-buttons {
+.mobile-buttons {
     margin-top: 72px
 }
   }
 
 @media (min-width: 1200px) {
 
-[dir] .mobile-buttons {
+.mobile-buttons {
     margin-top: 108px
 }
 
diff --git a/css/components/header-buttons-mobile.pcss.css b/css/components/header-buttons-mobile.pcss.css
index 8079271..f6d352b 100644
--- a/css/components/header-buttons-mobile.pcss.css
+++ b/css/components/header-buttons-mobile.pcss.css
@@ -6,19 +6,19 @@
 @import "../base/variables.pcss.css";
 
 .mobile-buttons {
-  margin-top: var(--sp0-5);
-  margin-left: auto;
+  margin-block-start: var(--sp0-5);
+  margin-inline-start: auto;
 
   @media (--sm) {
-    margin-top: var(--sp2);
+    margin-block-start: var(--sp2);
   }
 
   @media (--md) {
-    margin-top: var(--sp4);
+    margin-block-start: var(--sp4);
   }
 
   @media (--nav) {
-    margin-top: var(--sp6);
+    margin-block-start: var(--sp6);
 
     body:not(.is-always-mobile-nav) & {
       display: none;
diff --git a/css/components/header-navigation.css b/css/components/header-navigation.css
index 427a33d..c5f677f 100644
--- a/css/components/header-navigation.css
+++ b/css/components/header-navigation.css
@@ -76,6 +76,30 @@
   /* Form */
 }
 
+[dir="ltr"] .header-nav {
+  right: 0;
+}
+
+[dir="rtl"] .header-nav {
+  left: 0;
+}
+
+[dir="ltr"] .header-nav {
+  padding-left: 18px;
+}
+
+[dir="rtl"] .header-nav {
+  padding-right: 18px;
+}
+
+[dir="ltr"] .header-nav {
+  padding-right: 18px;
+}
+
+[dir="rtl"] .header-nav {
+  padding-left: 18px;
+}
+
 .header-nav {
   position: fixed;
   z-index: 5; /* appear above overlay */
@@ -89,37 +113,27 @@
   width: 100%;
   max-width: 500px;
   height: 100%;
-  transition: all 0.2s; /* Create room for the "close" button. */
-}
-
-[dir] .header-nav {
-  padding: 0 18px 18px;
-  border-top: solid #fff 54px;
+  padding-top: 0;
+  padding-bottom: 18px;
+  transition: all 0.2s;
+  transform: translateX(101%);
+  border-top: solid #fff 54px; /* Create room for the "close" button. */
   background-color: #fff;
   box-shadow: 0 0 72px rgba(0, 0, 0, 0.1);
 }
 
-[dir=ltr] .header-nav {
-  right: 0;
-  transform: translateX(101%);
-}
-
-[dir=rtl] .header-nav {
-  left: 0;
-  transform: translateX(-101%);
-}
+[dir="rtl"] .header-nav {
+    transform: translateX(-101%);
+  }
 
 /* Toolbar is fixed, and tray is vertical. */
 
-[dir] body.toolbar-vertical .header-nav {
+body.toolbar-vertical .header-nav {
     border-top-width: 93px;
   }
 
 .header-nav.is-active {
     visibility: visible;
-  }
-
-[dir] .header-nav.is-active {
     transform: translateX(0);
   }
 
@@ -133,43 +147,38 @@
 @media (min-width: 500px) {
 
 .header-nav {
+    border-top-width: 90px
 
     /* Toolbar is fixed, and tray is vertical. */
 }
-
-[dir] .header-nav {
-    border-top-width: 90px
-}
-    [dir] body.toolbar-vertical .header-nav {
+    body.toolbar-vertical .header-nav {
       border-top-width: 129px;
     }
   }
 
 @media (min-width: 700px) {
 
-.header-nav {
-
-    /* Toolbar is fixed, and tray is vertical or toolbar is horizontal and tray is closed. */
+[dir="ltr"] .header-nav {
+    padding-left: 54px;
+  }
 
-    /* Toolbar is horizontal fixed, and tray is open. */
-}
+[dir="rtl"] .header-nav {
+    padding-right: 54px;
+  }
 
-[dir] .header-nav {
+.header-nav {
     padding-bottom: 54px;
     border-top-width: 126px
-}
 
-[dir=ltr] .header-nav {
-    padding-left: 54px
-}
+    /* Toolbar is fixed, and tray is vertical or toolbar is horizontal and tray is closed. */
 
-[dir=rtl] .header-nav {
-    padding-right: 54px
+    /* Toolbar is horizontal fixed, and tray is open. */
 }
-    [dir] body.toolbar-vertical .header-nav, [dir] body.toolbar-horizontal.toolbar-fixed .header-nav {
+    body.toolbar-vertical .header-nav,
+    body.toolbar-horizontal.toolbar-fixed .header-nav {
       border-top-width: 165px;
     }
-    [dir] body.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav {
+    body.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav {
       border-top-width: 205px;
     }
   }
@@ -191,6 +200,18 @@
 
     /* Toolbar is horizontal fixed, and tray is open. */
 }
+    [dir="ltr"] body:not(.is-always-mobile-nav) .header-nav {
+      padding-left: 0;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .header-nav {
+      padding-right: 0;
+  }
+    [dir="ltr"] body:not(.is-always-mobile-nav) .header-nav {
+      padding-right: 0;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .header-nav {
+      padding-left: 0;
+  }
     body:not(.is-always-mobile-nav) .header-nav {
       position: static;
       display: flex;
@@ -203,61 +224,60 @@
       justify-content: flex-end;
       max-width: none;
       height: 108px;
-      transition: transform 0.2s;
-    }
-    [dir] body:not(.is-always-mobile-nav) .header-nav {
       margin-top: auto;
-      padding: 0;
+      padding-top: 0;
+      padding-bottom: 0;
+      transition: transform 0.2s;
       transform: none;
       border-top: 0;
       box-shadow: none;
     }
 
+    [dir="ltr"] body.is-always-mobile-nav .header-nav {
+      left: 100vw;
+      right: auto;
+  }
+
+    [dir="rtl"] body.is-always-mobile-nav .header-nav {
+      right: 100vw;
+      left: auto;
+  }
+
+    [dir="ltr"] body.is-always-mobile-nav .header-nav {
+      padding-right: 18px;
+  }
+
+    [dir="rtl"] body.is-always-mobile-nav .header-nav {
+      padding-left: 18px;
+  }
+
     body.is-always-mobile-nav .header-nav {
       overflow: auto;
       max-width: calc(7*((100vw - 645px)/14 + 36px));
       transition: transform 0.2s, visibility 0.2s;
-    }
-
-    [dir] body.is-always-mobile-nav .header-nav {
       border-top-width: 198px;
     }
 
-    [dir=ltr] body.is-always-mobile-nav .header-nav {
-    right: auto;
-    left: 100vw;
-    padding-right: 18px;
-    }
-
-    [dir=rtl] body.is-always-mobile-nav .header-nav {
-      left: auto;
-      right: 100vw;
-      padding-left: 18px;
-    }
-
-      [dir=ltr] body.is-always-mobile-nav .header-nav.is-active {
-    transform: translateX(-100%);
-      }
-
-      [dir=rtl] body.is-always-mobile-nav .header-nav.is-active {
-        transform: translateX(100%);
+      body.is-always-mobile-nav .header-nav.is-active {
+        transform: translateX(-100%);
       }
-    [dir] body.is-always-mobile-nav.toolbar-vertical .header-nav, [dir] body.is-always-mobile-nav.toolbar-horizontal.toolbar-fixed .header-nav {
+    body.is-always-mobile-nav.toolbar-vertical .header-nav,
+    body.is-always-mobile-nav.toolbar-horizontal.toolbar-fixed .header-nav {
       border-top-width: 237px;
     }
-    [dir] body.is-always-mobile-nav.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav {
+    body.is-always-mobile-nav.toolbar-horizontal.toolbar-fixed.toolbar-tray-open .header-nav {
       border-top-width: 277px;
     }
   }
 
 @media (min-width: 1440px) {
+    [dir="ltr"] body.is-always-mobile-nav .header-nav {
+      padding-right: calc(100vw - 1422px);
+  }
+    [dir="rtl"] body.is-always-mobile-nav .header-nav {
+      padding-left: calc(100vw - 1422px);
+  }
     body.is-always-mobile-nav .header-nav {
       max-width: calc(100vw - 783px);
     }
-    [dir=ltr] body.is-always-mobile-nav .header-nav {
-    padding-right: calc(100vw - 1422px);
-    }
-    [dir=rtl] body.is-always-mobile-nav .header-nav {
-      padding-left: calc(100vw - 1422px);
-    }
   }
diff --git a/css/components/header-navigation.pcss.css b/css/components/header-navigation.pcss.css
index 12e30ad..8efa8e2 100644
--- a/css/components/header-navigation.pcss.css
+++ b/css/components/header-navigation.pcss.css
@@ -8,8 +8,8 @@
 .header-nav {
   position: fixed;
   z-index: 5; /* appear above overlay */
-  top: 0;
-  right: 0;
+  inset-block-start: 0;
+  inset-inline-end: 0;
   visibility: hidden;
   overflow: auto;
   /* Ensure that header nav not use additional space and force
@@ -19,13 +19,19 @@
   width: 100%;
   max-width: var(--mobile-nav-width);
   height: 100%;
-  padding: 0 var(--sp) var(--sp);
+  padding-block: 0 var(--sp);
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
   transition: all 0.2s;
   transform: translateX(101%);
-  border-top: solid var(--color--white) var(--sp3); /* Create room for the "close" button. */
+  border-block-start: solid var(--color--white) var(--sp3); /* Create room for the "close" button. */
   background-color: var(--color--white);
   box-shadow: 0 0 72px rgba(0, 0, 0, 0.1);
 
+  [dir="rtl"] & {
+    transform: translateX(-101%);
+  }
+
   /* Toolbar is fixed, and tray is vertical. */
   body.toolbar-vertical & {
     border-top-width: calc(var(--toolbar-height) + var(--sp3));
@@ -50,8 +56,8 @@
   }
 
   @media (--md) {
-    padding-bottom: var(--sp3);
-    padding-left: var(--sp3);
+    padding-block-end: var(--sp3);
+    padding-inline-start: var(--sp3);
     border-top-width: var(--sp7);
 
     /* Toolbar is fixed, and tray is vertical or toolbar is horizontal and tray is closed. */
@@ -81,20 +87,21 @@
       justify-content: flex-end;
       max-width: none;
       height: var(--header-height-wide-when-fixed);
-      margin-top: auto;
-      padding: 0;
+      margin-block-start: auto;
+      padding-block: 0;
+      padding-inline-start: 0;
+      padding-inline-end: 0;
       transition: transform 0.2s;
       transform: none;
-      border-top: 0;
+      border-block-start: 0;
       box-shadow: none;
     }
 
     body.is-always-mobile-nav & {
-      right: auto;
-      left: 100vw;
+      inset-inline: 100vw auto;
       overflow: auto;
       max-width: calc((7 * (var(--grid-col-width--nav) + var(--grid-gap--nav))));
-      padding-right: var(--sp);
+      padding-inline-end: var(--sp);
       transition: transform 0.2s, visibility 0.2s;
       border-top-width: var(--sp11);
 
@@ -118,7 +125,7 @@
   @media (--grid-max) {
     body.is-always-mobile-nav & {
       max-width: calc(100vw - (var(--max-width) + var(--content-left)) + ((7 * (var(--grid-col-width--max) + var(--grid-gap--max)))));
-      padding-right: calc(100vw - (var(--max-width) + var(--content-left) - var(--sp)));
+      padding-inline-end: calc(100vw - (var(--max-width) + var(--content-left) - var(--sp)));
     }
   }
 }
diff --git a/css/components/header-search-narrow.css b/css/components/header-search-narrow.css
index a97cd68..c96fd99 100644
--- a/css/components/header-search-narrow.css
+++ b/css/components/header-search-narrow.css
@@ -76,19 +76,11 @@
   /* Form */
 }
 
-[dir] .search-narrow__wrapper {
-  margin-bottom: 36px;
-  background: #000;
-}
-
-[dir=ltr] .search-narrow__wrapper {
-  margin-right: -18px;
-  margin-left: -18px;
-}
-
-[dir=rtl] .search-narrow__wrapper {
+.search-narrow__wrapper {
   margin-left: -18px;
   margin-right: -18px;
+  margin-bottom: 36px;
+  background: #000;
 }
 
 .search-narrow__wrapper form {
@@ -97,54 +89,55 @@
 
 .search-narrow__wrapper .form-item {
     flex-grow: 1;
-  }
-
-[dir] .search-narrow__wrapper .form-item {
     margin: 0;
   }
 
-[dir] .search-narrow__wrapper .form-actions {
+.search-narrow__wrapper .form-actions {
     margin: 0;
   }
 
-.search-narrow__wrapper input[type="search"] {
+[dir="ltr"] [dir] .search-narrow__wrapper input[type="search"] {
+    padding-left: 18px;
+}
+
+[dir="rtl"] [dir] .search-narrow__wrapper input[type="search"] {
+    padding-right: 18px;
+}
+
+[dir="ltr"] [dir] .search-narrow__wrapper input[type="search"] {
+    padding-right: 18px;
+}
+
+[dir="rtl"] [dir] .search-narrow__wrapper input[type="search"] {
+    padding-left: 18px;
+}
+
+[dir] .search-narrow__wrapper input[type="search"] {
     width: calc(100% + 36px);
     height: 54px;
+    padding-top: 0;
+    padding-bottom: 0;
     transition: background-size 0.4s;
-    color: #fff; /* Two values are needed for IE11 support. */
-    font-family: serif;
-    font-size: 1rem;
-    -webkit-appearance: none;
-  }
-
-[dir] .search-narrow__wrapper input[type="search"] {
-    padding: 0 18px;
+    color: #fff;
     border: solid 1px transparent;
     background-color: transparent;
-    background-image: linear-gradient(#2494db, #2494db);
+    background-image: linear-gradient(#2494db, #2494db); /* Two values are needed for IE11 support. */
     background-repeat: no-repeat;
+    background-position: bottom left; /* LTR */
     background-size: 0% 5px;
     box-shadow: none;
+    font-family: serif;
+    font-size: 1rem;
+    -webkit-appearance: none;
   }
 
-[dir=ltr] .search-narrow__wrapper input[type="search"] {
-  background-position: bottom left;
-  }
-
-[dir=rtl] .search-narrow__wrapper input[type="search"] {
-    background-position: bottom right;
-  }
-
-.search-narrow__wrapper input[type="search"]::-ms-clear {
+[dir] .search-narrow__wrapper input[type="search"]::-ms-clear {
       width: 40px;
       opacity: 0.5;
     }
 
-.search-narrow__wrapper input[type="search"]:focus {
-      outline: 0;
-    }
-
 [dir] .search-narrow__wrapper input[type="search"]:focus {
+      outline: 0;
       background-size: 100% 5px;
     }
 
@@ -162,11 +155,64 @@
 
 @media (min-width: 700px) {
 
+[dir="ltr"] [dir] .search-narrow__wrapper input[type="search"] {
+      padding-left: 36px;
+  }
+
+[dir="rtl"] [dir] .search-narrow__wrapper input[type="search"] {
+      padding-right: 36px;
+  }
+
+[dir="ltr"] [dir] .search-narrow__wrapper input[type="search"] {
+      padding-right: 36px;
+  }
+
+[dir="rtl"] [dir] .search-narrow__wrapper input[type="search"] {
+      padding-left: 36px;
+  }
+
 [dir] .search-narrow__wrapper input[type="search"] {
-      padding: 36px
+      padding-top: 36px;
+      padding-bottom: 36px
   }
     }
 
+[dir="rtl"] .search-narrow__wrapper input[type="search"] {
+    background-position: bottom right;
+  }
+
+[dir="ltr"] .search-narrow__wrapper .search-form__submit {
+    margin-left: 0;
+}
+
+[dir="rtl"] .search-narrow__wrapper .search-form__submit {
+    margin-right: 0;
+}
+
+[dir="ltr"] .search-narrow__wrapper .search-form__submit {
+    margin-right: 0;
+}
+
+[dir="rtl"] .search-narrow__wrapper .search-form__submit {
+    margin-left: 0;
+}
+
+[dir="ltr"] .search-narrow__wrapper .search-form__submit {
+    padding-left: 0;
+}
+
+[dir="rtl"] .search-narrow__wrapper .search-form__submit {
+    padding-right: 0;
+}
+
+[dir="ltr"] .search-narrow__wrapper .search-form__submit {
+    padding-right: 0;
+}
+
+[dir="rtl"] .search-narrow__wrapper .search-form__submit {
+    padding-left: 0;
+}
+
 .search-narrow__wrapper .search-form__submit {
     position: relative;
     overflow: hidden;
@@ -174,11 +220,10 @@
     align-self: stretch;
     width: 54px;
     height: auto;
-  }
-
-[dir] .search-narrow__wrapper .search-form__submit {
-    margin: 0;
-    padding: 0;
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-top: 0;
+    padding-bottom: 0;
     cursor: pointer;
     border-color: transparent;
     background-color: transparent;
@@ -189,6 +234,14 @@
       images or SVGs that are nested directly within a <button> element, so we add a <span>.
     */
 
+[dir="ltr"] .search-narrow__wrapper .search-form__submit .icon--search {
+      left: 0;
+}
+
+[dir="rtl"] .search-narrow__wrapper .search-form__submit .icon--search {
+      right: 0;
+}
+
 .search-narrow__wrapper .search-form__submit .icon--search {
       position: absolute;
       top: 0;
@@ -196,22 +249,19 @@
       width: 100%; /* Width of the SVG background image. */
       height: 100%;
       pointer-events: none;
-    }
-
-[dir] .search-narrow__wrapper .search-form__submit .icon--search {
       background-image: url("../../images/search--white.svg");
       background-repeat: no-repeat;
       background-position: center;
       background-size: auto;
     }
 
-[dir=ltr] .search-narrow__wrapper .search-form__submit .icon--search {
-  left: 0;
-    }
+[dir="ltr"] .search-narrow__wrapper .search-form__submit .icon--search:after {
+        left: 0;
+}
 
-[dir=rtl] .search-narrow__wrapper .search-form__submit .icon--search {
-      right: 0;
-    }
+[dir="rtl"] .search-narrow__wrapper .search-form__submit .icon--search:after {
+        right: 0;
+}
 
 .search-narrow__wrapper .search-form__submit .icon--search:after {
         position: absolute;
@@ -220,38 +270,27 @@
         height: 0;
         content: "";
         transition: transform 0.2s;
-      }
-
-[dir] .search-narrow__wrapper .search-form__submit .icon--search:after {
         transform: scaleX(0);
+        transform-origin: left;
         border-top: solid 5px #2494db;
       }
 
-[dir=ltr] .search-narrow__wrapper .search-form__submit .icon--search:after {
-  left: 0;
-  transform-origin: left;
-      }
-
-[dir=rtl] .search-narrow__wrapper .search-form__submit .icon--search:after {
-        right: 0;
-        transform-origin: right;
-      }
+[dir="rtl"] .search-narrow__wrapper .search-form__submit .icon--search:after {
+          transform-origin: right;
+        }
 
 .search-narrow__wrapper .search-form__submit:focus {
       outline: 0;
-    }
-
-[dir] .search-narrow__wrapper .search-form__submit:focus {
       box-shadow: none;
     }
 
-[dir] .search-narrow__wrapper .search-form__submit:focus span:after {
+.search-narrow__wrapper .search-form__submit:focus span:after {
         transform: scaleX(1);
       }
 
 @media screen and (-ms-high-contrast: active) {
 
-[dir] .search-narrow__wrapper .search-form__submit:focus {
+.search-narrow__wrapper .search-form__submit:focus {
         border-bottom-width: 9px
     }
 
@@ -280,8 +319,6 @@
         clip: auto;
         width: auto;
         height: auto;
-      }
-      [dir] .search-narrow__wrapper .search-form__submit .visually-hidden {
         text-align: center;
       }
       .search-narrow__wrapper .search-form__submit .icon--search {
@@ -293,12 +330,7 @@
 
 @media (min-width: 500px) {
 
-[dir=ltr] .search-narrow__wrapper {
-    margin-right: 0;
-    margin-left: 0
-}
-
-[dir=rtl] .search-narrow__wrapper {
+.search-narrow__wrapper {
     margin-left: 0;
     margin-right: 0
 }
diff --git a/css/components/header-search-narrow.pcss.css b/css/components/header-search-narrow.pcss.css
index ab3c8ae..3436606 100644
--- a/css/components/header-search-narrow.pcss.css
+++ b/css/components/header-search-narrow.pcss.css
@@ -6,9 +6,8 @@
 @import "../base/variables.pcss.css";
 
 .search-narrow__wrapper {
-  margin-right: calc(-1 * var(--sp));
-  margin-bottom: var(--sp2);
-  margin-left: calc(-1 * var(--sp));
+  margin-inline: calc(-1 * var(--sp));
+  margin-block-end: var(--sp2);
   background: var(--color--black);
 
   form {
@@ -24,17 +23,19 @@
     margin: 0;
   }
 
-  input[type="search"] {
+  [dir] & input[type="search"] {
     width: calc(100% + var(--sp2));
     height: calc(3 * var(--sp));
-    padding: 0 var(--sp);
+    padding-block: 0;
+    padding-inline-start: var(--sp);
+    padding-inline-end: var(--sp);
     transition: background-size 0.4s;
     color: var(--color--white);
     border: solid 1px transparent;
     background-color: transparent;
     background-image: linear-gradient(var(--color--blue-50), var(--color--blue-50)); /* Two values are needed for IE11 support. */
     background-repeat: no-repeat;
-    background-position: bottom left;
+    background-position: bottom left; /* LTR */
     background-size: 0% 5px;
     box-shadow: none;
     font-family: serif;
@@ -60,18 +61,28 @@
     }
 
     @media (--md) {
-      padding: var(--sp2);
+      padding-block: var(--sp2);
+      padding-inline-start: var(--sp2);
+      padding-inline-end: var(--sp2);
     }
   }
 
+  [dir="rtl"] & input[type="search"] {
+    background-position: bottom right;
+  }
+
   .search-form__submit {
     position: relative;
     overflow: hidden;
     align-self: stretch;
     width: var(--sp3);
     height: auto;
-    margin: 0;
-    padding: 0;
+    margin-block: 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    padding-block: 0;
+    padding-inline-start: 0;
+    padding-inline-end: 0;
     cursor: pointer;
     border-color: transparent;
     background-color: transparent;
@@ -82,8 +93,8 @@
     */
     .icon--search {
       position: absolute;
-      top: 0;
-      left: 0;
+      inset-block-start: 0;
+      inset-inline-start: 0;
       display: block;
       width: 100%; /* Width of the SVG background image. */
       height: 100%;
@@ -95,15 +106,19 @@
 
       &:after {
         position: absolute;
-        bottom: 0;
-        left: 0;
+        inset-block-end: 0;
+        inset-inline-start: 0;
         width: 100%;
         height: 0;
         content: "";
         transition: transform 0.2s;
         transform: scaleX(0);
         transform-origin: left;
-        border-top: solid 5px var(--color--blue-50);
+        border-block-start: solid 5px var(--color--blue-50);
+
+        [dir="rtl"] & {
+          transform-origin: right;
+        }
       }
     }
 
@@ -148,8 +163,7 @@
 
   /* 500px is the width of the primary nav at mobile. */
   @media (min-width: 500px) {
-    margin-right: 0;
-    margin-left: 0;
+    margin-inline: 0;
   }
 
   @media (--nav) {
diff --git a/css/components/header-search-wide.css b/css/components/header-search-wide.css
index 59ca8e5..8d6baa1 100644
--- a/css/components/header-search-wide.css
+++ b/css/components/header-search-wide.css
@@ -82,6 +82,54 @@
   position: static;
 }
 
+[dir="ltr"] .search-wide__wrapper {
+  left: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper {
+  right: 0;
+}
+
+[dir="ltr"] .search-wide__wrapper {
+  margin-left: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper {
+  margin-right: 0;
+}
+
+[dir="ltr"] .search-wide__wrapper {
+  margin-right: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper {
+  margin-left: 0;
+}
+
+[dir="ltr"] .search-wide__wrapper {
+  padding-left: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper {
+  padding-right: 0;
+}
+
+[dir="ltr"] .search-wide__wrapper {
+  padding-right: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper {
+  padding-left: 0;
+}
+
+[dir="ltr"] .search-wide__wrapper {
+  border-left: solid 90px #313637;
+}
+
+[dir="rtl"] .search-wide__wrapper {
+  border-right: solid 90px #313637;
+}
+
 .search-wide__wrapper {
   position: absolute;
   z-index: 1; /* Ensure left border shows above social region in IE11. */
@@ -93,25 +141,14 @@
   max-width: 1570px;
   height: 144px;
   max-height: 0;
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-top: 0;
+  padding-bottom: 0;
   transition: all 0.2s;
-}
-
-[dir] .search-wide__wrapper {
-  margin: 0;
-  padding: 0;
   background: #000;
 }
 
-[dir=ltr] .search-wide__wrapper {
-  left: 0;
-  border-left: solid 90px #313637;
-}
-
-[dir=rtl] .search-wide__wrapper {
-  right: 0;
-  border-right: solid 90px #313637;
-}
-
 .search-wide__wrapper.is-active {
     visibility: visible;
     max-height: 144px;
@@ -131,45 +168,48 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
     grid-column: 1 / 14;
   }
 
-.search-wide__wrapper input[type="search"] {
+[dir="ltr"] [dir] .search-wide__wrapper input[type="search"] {
+    padding-left: 216px;
+}
+
+[dir="rtl"] [dir] .search-wide__wrapper input[type="search"] {
+    padding-right: 216px;
+}
+
+[dir="ltr"] [dir] .search-wide__wrapper input[type="search"] {
+    padding-right: 0;
+}
+
+[dir="rtl"] [dir] .search-wide__wrapper input[type="search"] {
+    padding-left: 0;
+}
+
+[dir] .search-wide__wrapper input[type="search"] {
     width: calc(100% + 36px);
     height: 144px;
+    padding-top: 0;
+    padding-bottom: 0;
     transition: background-size 0.4s;
-    color: #fff; /* Two values are needed for IE11 support. */
-    font-family: serif;
-    font-size: 2rem;
-    -webkit-appearance: none;
-  }
-
-[dir] .search-wide__wrapper input[type="search"] {
+    color: #fff;
     border: solid 1px transparent;
     background-color: transparent;
-    background-image: linear-gradient(#2494db, #2494db);
+    background-image: linear-gradient(#2494db, #2494db); /* Two values are needed for IE11 support. */
     background-repeat: no-repeat;
+    background-position: bottom left; /* LTR */
     background-size: 0% 10px;
     box-shadow: none;
+    font-family: serif;
+    font-size: 2rem;
+    -webkit-appearance: none;
   }
 
-[dir=ltr] .search-wide__wrapper input[type="search"] {
-  padding: 0 0 0 216px;
-  background-position: bottom left;
-  }
-
-[dir=rtl] .search-wide__wrapper input[type="search"] {
-    padding: 0 216px 0 0;
-    background-position: bottom right;
-  }
-
-.search-wide__wrapper input[type="search"]::-ms-clear {
+[dir] .search-wide__wrapper input[type="search"]::-ms-clear {
       width: 40px;
       opacity: 0.5;
     }
 
-.search-wide__wrapper input[type="search"]:focus {
-      outline: 0;
-    }
-
 [dir] .search-wide__wrapper input[type="search"]:focus {
+      outline: 0;
       background-size: 100% 9px;
     }
 
@@ -185,22 +225,52 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
     }
       }
 
-.search-wide__wrapper .form-item-keys {
-    flex-grow: 1;
+[dir="rtl"] .search-wide__wrapper input[type="search"] {
+    background-position: bottom right;
   }
 
-[dir] .search-wide__wrapper .form-item-keys {
+.search-wide__wrapper .form-item-keys {
+    flex-grow: 1;
     margin: 0;
   }
 
 .search-wide__wrapper .form-actions {
     display: flex;
-  }
-
-[dir] .search-wide__wrapper .form-actions {
     margin: 0;
   }
 
+[dir="ltr"] .search-wide__wrapper .search-form__submit {
+    margin-left: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper .search-form__submit {
+    margin-right: 0;
+}
+
+[dir="ltr"] .search-wide__wrapper .search-form__submit {
+    margin-right: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper .search-form__submit {
+    margin-left: 0;
+}
+
+[dir="ltr"] .search-wide__wrapper .search-form__submit {
+    padding-left: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper .search-form__submit {
+    padding-right: 0;
+}
+
+[dir="ltr"] .search-wide__wrapper .search-form__submit {
+    padding-right: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper .search-form__submit {
+    padding-left: 0;
+}
+
 .search-wide__wrapper .search-form__submit {
     position: relative;
     overflow: hidden;
@@ -208,11 +278,10 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
     align-self: stretch;
     width: 100px;
     height: auto;
-  }
-
-[dir] .search-wide__wrapper .search-form__submit {
-    margin: 0;
-    padding: 0;
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-top: 0;
+    padding-bottom: 0;
     cursor: pointer;
     border-color: transparent;
     background-color: transparent;
@@ -223,6 +292,14 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
       images or SVGs that are nested directly within a <button> element, so we add a <span>.
     */
 
+[dir="ltr"] .search-wide__wrapper .search-form__submit .icon--search {
+      right: 0;
+}
+
+[dir="rtl"] .search-wide__wrapper .search-form__submit .icon--search {
+      left: 0;
+}
+
 .search-wide__wrapper .search-form__submit .icon--search {
       position: absolute;
       top: 0;
@@ -230,22 +307,19 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
       width: 24px; /* Width of the SVG background image. */
       height: 100%;
       pointer-events: none;
-    }
-
-[dir] .search-wide__wrapper .search-form__submit .icon--search {
       background-image: url("../../images/search--white.svg");
       background-repeat: no-repeat;
       background-position: center;
       background-size: contain;
     }
 
-[dir=ltr] .search-wide__wrapper .search-form__submit .icon--search {
-  right: 0;
-    }
+[dir="ltr"] .search-wide__wrapper .search-form__submit .icon--search:after {
+        left: 0;
+}
 
-[dir=rtl] .search-wide__wrapper .search-form__submit .icon--search {
-      left: 0;
-    }
+[dir="rtl"] .search-wide__wrapper .search-form__submit .icon--search:after {
+        right: 0;
+}
 
 .search-wide__wrapper .search-form__submit .icon--search:after {
         position: absolute;
@@ -254,38 +328,27 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
         height: 0;
         content: "";
         transition: transform 0.2s;
-      }
-
-[dir] .search-wide__wrapper .search-form__submit .icon--search:after {
         transform: scaleX(0);
+        transform-origin: left;
         border-top: solid 9px #2494db;
       }
 
-[dir=ltr] .search-wide__wrapper .search-form__submit .icon--search:after {
-  left: 0;
-  transform-origin: left;
-      }
-
-[dir=rtl] .search-wide__wrapper .search-form__submit .icon--search:after {
-        right: 0;
-        transform-origin: right;
-      }
+[dir="rtl"] .search-wide__wrapper .search-form__submit .icon--search:after {
+          transform-origin: right;
+        }
 
 .search-wide__wrapper .search-form__submit:focus {
       outline: 0;
-    }
-
-[dir] .search-wide__wrapper .search-form__submit:focus {
       box-shadow: none;
     }
 
-[dir] .search-wide__wrapper .search-form__submit:focus span:after {
+.search-wide__wrapper .search-form__submit:focus span:after {
         transform: scaleX(1);
       }
 
 @media screen and (-ms-high-contrast: active) {
 
-[dir] .search-wide__wrapper .search-form__submit:focus {
+.search-wide__wrapper .search-form__submit:focus {
         border-bottom-width: 9px
     }
 
@@ -307,8 +370,6 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
         clip: auto;
         width: auto;
         height: auto;
-      }
-      [dir] .search-wide__wrapper .search-form__submit .visually-hidden {
         text-align: center;
       }
       .search-wide__wrapper .search-form__submit .icon--search {
@@ -322,18 +383,18 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
     }
   }
 
-.search-wide__container {
-  max-width: 1350px;
-}
-
-[dir=ltr] .search-wide__container {
+[dir="ltr"] .search-wide__container {
   padding-right: 36px;
 }
 
-[dir=rtl] .search-wide__container {
+[dir="rtl"] .search-wide__container {
   padding-left: 36px;
 }
 
+.search-wide__container {
+  max-width: 1350px;
+}
+
 /* Override specificity from container-inline.module.css */
 
 .container-inline .search-wide__container {
@@ -360,23 +421,28 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
   display: none;
   width: 54px;
   height: 108px;
-  -webkit-appearance: none;
-}
-
-[dir] .header-nav__search-button {
   cursor: pointer;
   border: 0;
   background: transparent;
+  -webkit-appearance: none;
 }
 
 .header-nav__search-button:focus {
     outline: 0;
   }
 
-[dir] .header-nav__search-button:focus:after {
+.header-nav__search-button:focus:after {
       transform: scaleX(0.5);
     }
 
+[dir="ltr"] .header-nav__search-button:after {
+    left: 0;
+}
+
+[dir="rtl"] .header-nav__search-button:after {
+    right: 0;
+}
+
 .header-nav__search-button:after {
     position: absolute;
     bottom: 0;
@@ -384,69 +450,54 @@ html:not(.js) .search-block-form:focus-within .search-wide__wrapper {
     height: 0;
     content: "";
     transition: transform 0.2s;
-  }
-
-[dir] .header-nav__search-button:after {
     transform: scaleX(0);
     border-top: solid 9px #2494db;
   }
 
-[dir=ltr] .header-nav__search-button:after {
-  left: 0;
-  }
-
-[dir=rtl] .header-nav__search-button:after {
-    right: 0;
-  }
-
-[dir] .header-nav__search-button[aria-expanded="true"] {
+.header-nav__search-button[aria-expanded="true"] {
     background: #000;
   }
 
 .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:before,
       .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:after {
         position: absolute;
+        /* stylelint-disable csstools/use-logical */
         top: 50%;
+        left: 50%;
+        /* stylelint-enable csstools/use-logical */
         width: 27px;
         height: 0;
         content: "";
-      }
-
-[dir] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:before, [dir] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:after {
         border-top: solid 2px #fff;
       }
 
-[dir=ltr] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:before, [dir=ltr] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:after {
-  left: 50%;
-      }
-
-[dir=rtl] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:before, [dir=rtl] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:after {
-        right: 50%;
-      }
-
-[dir=ltr] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:before {
-  transform: translate(-50%, -50%) rotate(-45deg);
-      }
-
-[dir=rtl] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:before {
-        transform: translate(50%, -50%) rotate(45deg);
+.header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:before {
+        transform: translate(-50%, -50%) rotate(-45deg);
       }
 
-[dir=ltr] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:after {
-  transform: translate(-50%, -50%) rotate(45deg);
-      }
-
-[dir=rtl] .header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:after {
-        transform: translate(50%, -50%) rotate(-45deg);
+.header-nav__search-button[aria-expanded="true"] .header-nav__search-button__close:after {
+        transform: translate(-50%, -50%) rotate(45deg);
       }
 
 .header-nav__search-button[aria-expanded="true"] svg {
       display: none;
     }
 
-[dir] .header-nav__search-button svg {
-    margin: 0 auto;
-  }
+[dir="ltr"] .header-nav__search-button svg {
+    margin-left: auto;
+}
+
+[dir="rtl"] .header-nav__search-button svg {
+    margin-right: auto;
+}
+
+[dir="ltr"] .header-nav__search-button svg {
+    margin-right: auto;
+}
+
+[dir="rtl"] .header-nav__search-button svg {
+    margin-left: auto;
+}
 
 @media (min-width: 1200px) {
     body:not(.is-always-mobile-nav) .header-nav__search-button {
diff --git a/css/components/header-search-wide.pcss.css b/css/components/header-search-wide.pcss.css
index 246e03d..9bb9a56 100644
--- a/css/components/header-search-wide.pcss.css
+++ b/css/components/header-search-wide.pcss.css
@@ -13,8 +13,8 @@
 .search-wide__wrapper {
   position: absolute;
   z-index: 1; /* Ensure left border shows above social region in IE11. */
-  top: 100%;
-  left: 0;
+  inset-block-start: 100%;
+  inset-inline-start: 0;
   display: none;
   visibility: hidden;
   overflow: hidden;
@@ -22,10 +22,14 @@
   max-width: var(--max-bg-color);
   height: var(--sp8);
   max-height: 0;
-  margin: 0;
-  padding: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   transition: all 0.2s;
-  border-left: solid var(--content-left) var(--color--gray-10);
+  border-inline-start: solid var(--content-left) var(--color--gray-10);
   background: var(--color--black);
 
   &.is-active {
@@ -44,17 +48,19 @@
     grid-column: 1 / 14;
   }
 
-  input[type="search"] {
+  [dir] & input[type="search"] {
     width: calc(100% + var(--sp2));
     height: var(--sp8);
-    padding: 0 0 0 var(--sp12);
+    padding-block: 0;
+    padding-inline-start: var(--sp12);
+    padding-inline-end: 0;
     transition: background-size 0.4s;
     color: var(--color--white);
     border: solid 1px transparent;
     background-color: transparent;
     background-image: linear-gradient(var(--color--blue-50), var(--color--blue-50)); /* Two values are needed for IE11 support. */
     background-repeat: no-repeat;
-    background-position: bottom left;
+    background-position: bottom left; /* LTR */
     background-size: 0% 10px;
     box-shadow: none;
     font-family: serif;
@@ -80,6 +86,10 @@
     }
   }
 
+  [dir="rtl"] & input[type="search"] {
+    background-position: bottom right;
+  }
+
   .form-item-keys {
     flex-grow: 1;
     margin: 0;
@@ -96,8 +106,12 @@
     align-self: stretch;
     width: 100px;
     height: auto;
-    margin: 0;
-    padding: 0;
+    margin-block: 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    padding-block: 0;
+    padding-inline-start: 0;
+    padding-inline-end: 0;
     cursor: pointer;
     border-color: transparent;
     background-color: transparent;
@@ -108,8 +122,8 @@
     */
     .icon--search {
       position: absolute;
-      top: 0;
-      right: 0;
+      inset-block-start: 0;
+      inset-inline-end: 0;
       display: block;
       width: 24px; /* Width of the SVG background image. */
       height: 100%;
@@ -121,15 +135,19 @@
 
       &:after {
         position: absolute;
-        bottom: 0;
-        left: 0;
+        inset-block-end: 0;
+        inset-inline-start: 0;
         width: 100%;
         height: 0;
         content: "";
         transition: transform 0.2s;
         transform: scaleX(0);
         transform-origin: left;
-        border-top: solid var(--sp0-5) var(--color--blue-50);
+        border-block-start: solid var(--sp0-5) var(--color--blue-50);
+
+        [dir="rtl"] & {
+          transform-origin: right;
+        }
       }
     }
 
@@ -177,7 +195,7 @@
 
 .search-wide__container {
   max-width: var(--max-width);
-  padding-right: var(--sp2);
+  padding-inline-end: var(--sp2);
 
   /* Override specificity from container-inline.module.css */
   .container-inline & {
@@ -216,14 +234,14 @@
 
   &:after {
     position: absolute;
-    bottom: 0;
-    left: 0;
+    inset-block-end: 0;
+    inset-inline-start: 0;
     width: 100%;
     height: 0;
     content: "";
     transition: transform 0.2s;
     transform: scaleX(0);
-    border-top: solid var(--sp0-5) var(--color--blue-50);
+    border-block-start: solid var(--sp0-5) var(--color--blue-50);
   }
 
   &[aria-expanded="true"] {
@@ -233,12 +251,14 @@
       &:before,
       &:after {
         position: absolute;
+        /* stylelint-disable csstools/use-logical */
         top: 50%;
         left: 50%;
+        /* stylelint-enable csstools/use-logical */
         width: var(--sp1-5);
         height: 0;
         content: "";
-        border-top: solid 2px var(--color--white);
+        border-block-start: solid 2px var(--color--white);
       }
 
       &:before {
@@ -256,7 +276,8 @@
   }
 
   svg {
-    margin: 0 auto;
+    margin-inline-start: auto;
+    margin-inline-end: auto;
   }
 
   @media (--nav) {
diff --git a/css/components/header-site-branding.css b/css/components/header-site-branding.css
index 8bcaaaf..cf43dac 100644
--- a/css/components/header-site-branding.css
+++ b/css/components/header-site-branding.css
@@ -76,31 +76,48 @@
   /* Form */
 }
 
+[dir="ltr"] .site-branding {
+  margin-left: -18px;
+  margin-right: 18px;
+}
+
+[dir="rtl"] .site-branding {
+  margin-right: -18px;
+  margin-left: 18px;
+}
+
+[dir="ltr"] .site-branding {
+  padding-left: 18px;
+}
+
+[dir="rtl"] .site-branding {
+  padding-right: 18px;
+}
+
+[dir="ltr"] .site-branding {
+  padding-right: 18px;
+}
+
+[dir="rtl"] .site-branding {
+  padding-left: 18px;
+}
+
 .site-branding {
   display: flex;
   flex-shrink: 1;
   align-items: flex-end;
   min-width: calc(2*(100vw - 126px)/6 + 54px);
   height: 54px;
+  padding-top: 0;
+  padding-bottom: 9px;
 
   /* @todo - #0d7ab8 isn't currently a variable. */
-}
-
-[dir] .site-branding {
-  padding: 0 18px 9px;
-}
-
-[dir=ltr] .site-branding {
-  margin-right: 18px;
-  margin-left: -18px;
   background-image: linear-gradient(160deg, #2494db 0%, #0d7ab8 78.66%);
 }
 
-[dir=rtl] .site-branding {
-  margin-left: 18px;
-  margin-right: -18px;
-  background-image: linear-gradient(-160deg, #2494db 0%, #0d7ab8 78.66%);
-}
+[dir="rtl"] .site-branding {
+    background-image: linear-gradient(-160deg, #2494db 0%, #0d7ab8 78.66%);
+  }
 
 @media (min-width: 500px) {
 
@@ -112,10 +129,7 @@
 @media (min-width: 700px) {
 
 .site-branding {
-    height: 108px
-}
-
-[dir] .site-branding {
+    height: 108px;
     padding-bottom: 18px
 }
   }
@@ -129,21 +143,35 @@
 
 @media (min-width: 1200px) {
 
-.site-branding {
-    min-width: calc(2*(100vw - 645px)/14 + 108px);
-    height: 180px
-}
+[dir="ltr"] .site-branding {
+    margin-left: -36px;
+  }
 
-[dir] .site-branding {
-    padding: 0 36px
-}
+[dir="rtl"] .site-branding {
+    margin-right: -36px;
+  }
 
-[dir=ltr] .site-branding {
-    margin-left: -36px
-}
+[dir="ltr"] .site-branding {
+    padding-left: 36px;
+  }
 
-[dir=rtl] .site-branding {
-    margin-right: -36px
+[dir="rtl"] .site-branding {
+    padding-right: 36px;
+  }
+
+[dir="ltr"] .site-branding {
+    padding-right: 36px;
+  }
+
+[dir="rtl"] .site-branding {
+    padding-left: 36px;
+  }
+
+.site-branding {
+    min-width: calc(2*(100vw - 645px)/14 + 108px);
+    height: 180px;
+    padding-top: 0;
+    padding-bottom: 0
 }
   }
 
@@ -154,11 +182,11 @@
 }
   }
 
-[dir] .site-branding--bg-gray {
+.site-branding--bg-gray {
   background: #f7f9fa;
 }
 
-[dir] .site-branding--bg-white {
+.site-branding--bg-white {
   background: #fff;
 }
 
@@ -173,12 +201,26 @@
 
 @media (min-width: 1200px) {
 
-.site-branding__inner {
-    height: 108px
-}
+[dir="ltr"] .site-branding__inner {
+    padding-left: 0;
+  }
+
+[dir="rtl"] .site-branding__inner {
+    padding-right: 0;
+  }
+
+[dir="ltr"] .site-branding__inner {
+    padding-right: 0;
+  }
 
-[dir] .site-branding__inner {
-    padding: 9px 0
+[dir="rtl"] .site-branding__inner {
+    padding-left: 0;
+  }
+
+.site-branding__inner {
+    height: 108px;
+    padding-top: 9px;
+    padding-bottom: 9px
 }
   }
 
@@ -225,13 +267,13 @@
     color: #2494db;
   }
 
-[dir=ltr] .site-branding__logo + .site-branding__text {
-  margin-left: 12px;
-  }
+[dir="ltr"] .site-branding__logo + .site-branding__text {
+    margin-left: 12px;
+}
 
-[dir=rtl] .site-branding__logo + .site-branding__text {
+[dir="rtl"] .site-branding__logo + .site-branding__text {
     margin-right: 12px;
-  }
+}
 
 .site-branding__text a {
     color: inherit;
diff --git a/css/components/header-site-branding.pcss.css b/css/components/header-site-branding.pcss.css
index 63d79a7..7f0877c 100644
--- a/css/components/header-site-branding.pcss.css
+++ b/css/components/header-site-branding.pcss.css
@@ -11,20 +11,25 @@
   align-items: flex-end;
   min-width: calc((2 * var(--grid-col-width)) + (2 * var(--grid-gap)) + var(--container-padding));
   height: var(--sp3);
-  margin-right: var(--sp);
-  margin-left: calc(-1 * var(--container-padding));
-  padding: 0 var(--container-padding) var(--sp0-5);
+  margin-inline: calc(-1 * var(--container-padding)) var(--sp);
+  padding-block: 0 var(--sp0-5);
+  padding-inline-start: var(--container-padding);
+  padding-inline-end: var(--container-padding);
 
   /* @todo - #0d7ab8 isn't currently a variable. */
   background-image: linear-gradient(160deg, var(--color--blue-50) 0%, #0d7ab8 78.66%);
 
+  [dir="rtl"] & {
+    background-image: linear-gradient(-160deg, var(--color--blue-50) 0%, #0d7ab8 78.66%);
+  }
+
   @media (--sm) {
     height: var(--sp4);
   }
 
   @media (--md) {
     height: var(--sp6);
-    padding-bottom: var(--sp);
+    padding-block-end: var(--sp);
   }
 
   @media (--lg) {
@@ -34,8 +39,10 @@
   @media (--nav) {
     min-width: calc((2 * var(--grid-col-width--nav)) + (2 * var(--grid-gap--nav)) + var(--container-padding-nav));
     height: var(--sp10);
-    margin-left: calc(-1 * var(--container-padding-nav));
-    padding: 0 var(--container-padding-nav);
+    margin-inline-start: calc(-1 * var(--container-padding-nav));
+    padding-block: 0;
+    padding-inline-start: var(--container-padding-nav);
+    padding-inline-end: var(--container-padding-nav);
   }
 
   @media (--grid-max) {
@@ -61,7 +68,9 @@
 
   @media (--nav) {
     height: var(--header-height-wide-when-fixed);
-    padding: var(--sp0-5) 0;
+    padding-block: var(--sp0-5);
+    padding-inline-start: 0;
+    padding-inline-end: 0;
   }
 }
 
@@ -99,7 +108,7 @@
   }
 
   .site-branding__logo + & {
-    margin-left: 12px;
+    margin-inline-start: 12px;
   }
 
   a {
diff --git a/css/components/header.css b/css/components/header.css
index fe07991..da27ad7 100644
--- a/css/components/header.css
+++ b/css/components/header.css
@@ -86,11 +86,8 @@
 
 .site-header {
     /* Necessary to keep the content from jumping up when header transitions to fixed. */
-    min-height: 180px /* Will show in Windows high contrast mode. */
-}
-
-[dir] .site-header {
-    border-bottom: solid 1px transparent
+    min-height: 180px;
+    border-bottom: solid 1px transparent /* Will show in Windows high contrast mode. */
 }
   }
 
@@ -101,9 +98,6 @@
   align-items: flex-end;
   -ms-grid-row-align: stretch;
   align-self: stretch;
-}
-
-[dir] .header__left {
   background-color: #2494db;
 }
 
@@ -144,35 +138,31 @@
   flex-grow: 1;
   width: calc(100vw - 90px);
   transition: all 0.3s;
-}
-
-[dir] .site-header__inner {
   background: #fff;
 }
 
 @media (min-width: 1200px) {
 
-[dir=ltr] .site-header__fixable.js-fixed .site-header__inner {
-    box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08)
+.site-header__fixable.js-fixed .site-header__inner {
+      box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08)
   }
 
-[dir=rtl] .site-header__fixable.js-fixed .site-header__inner {
-      box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08)
-  }
+      [dir="rtl"] .site-header__fixable.js-fixed .site-header__inner {
+        box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08);
+      }
     }
 
 /* Hide the desktop nav when it's fixed and not active. */
 
 @media (min-width: 1200px) {
       body:not(.is-always-mobile-nav) .site-header__fixable.js-fixed:not(.is-expanded) .site-header__inner {
+        transform: translateX(-101%);
         opacity: 0;
       }
-      [dir=ltr] body:not(.is-always-mobile-nav) .site-header__fixable.js-fixed:not(.is-expanded) .site-header__inner {
-    transform: translateX(-101%);
-      }
-      [dir=rtl] body:not(.is-always-mobile-nav) .site-header__fixable.js-fixed:not(.is-expanded) .site-header__inner {
-        transform: translateX(101%);
-      }
+
+        [dir="rtl"] body:not(.is-always-mobile-nav) .site-header__fixable.js-fixed:not(.is-expanded) .site-header__inner {
+          transform: translateX(101%);
+        }
     }
 
 .site-header__inner__container {
diff --git a/css/components/header.pcss.css b/css/components/header.pcss.css
index 3c541d4..eb6a8a3 100644
--- a/css/components/header.pcss.css
+++ b/css/components/header.pcss.css
@@ -12,7 +12,7 @@
   @media (--nav) {
     /* Necessary to keep the content from jumping up when header transitions to fixed. */
     min-height: var(--sp10);
-    border-bottom: solid 1px transparent; /* Will show in Windows high contrast mode. */
+    border-block-end: solid 1px transparent; /* Will show in Windows high contrast mode. */
   }
 }
 
@@ -39,19 +39,19 @@
       body:not(.is-always-mobile-nav) & {
         position: fixed;
         z-index: 2; /* Appear above body content that is position: relative */
-        top: calc(-1 * var(--sp4));
+        inset-block-start: calc(-1 * var(--sp4));
         max-width: var(--max-bg-color);
       }
 
       /* Toolbar is fixed, and tray is either vertical or closed and horizontal. */
       body.toolbar-vertical.toolbar-fixed:not(.is-always-mobile-nav) &,
       body.toolbar-horizontal.toolbar-fixed:not(.is-always-mobile-nav) & {
-        top: calc(var(--toolbar-height) - var(--sp4));
+        inset-block-start: calc(var(--toolbar-height) - var(--sp4));
       }
 
       /* Toolbar is fixed, and tray is open and horizontal. */
       body.toolbar-horizontal.toolbar-fixed.toolbar-tray-open:not(.is-always-mobile-nav) & {
-        top: calc(var(--toolbar-tray-height) + var(--toolbar-height) - var(--sp4));
+        inset-block-start: calc(var(--toolbar-tray-height) + var(--toolbar-height) - var(--sp4));
       }
     }
   }
@@ -66,6 +66,10 @@
   .site-header__fixable.js-fixed & {
     @media (--nav) {
       box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08);
+
+      [dir="rtl"] & {
+        box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08);
+      }
     }
   }
 
@@ -75,6 +79,10 @@
       body:not(.is-always-mobile-nav) & {
         transform: translateX(-101%);
         opacity: 0;
+
+        [dir="rtl"] & {
+          transform: translateX(101%);
+        }
       }
     }
   }
diff --git a/css/components/hero.css b/css/components/hero.css
index ebab0a4..5a9f2c5 100644
--- a/css/components/hero.css
+++ b/css/components/hero.css
@@ -104,10 +104,8 @@
   -ms-grid-column: 1;
   -ms-grid-column-span: 6;
   grid-column: 1 / 7;
-}
-
-[dir] .hero__img {
-  margin: 36px 0;
+  margin-top: 36px;
+  margin-bottom: 36px;
 }
 
 .hero__img img {
@@ -116,8 +114,9 @@
 
 @media (min-width: 500px) {
 
-[dir] .hero__img {
-    margin: 54px 0
+.hero__img {
+    margin-top: 54px;
+    margin-bottom: 54px
 }
   }
 
@@ -126,11 +125,9 @@
 .hero__img {
     -ms-grid-column: 1;
     -ms-grid-column-span: 14;
-    grid-column: 1 / 15
-}
-
-[dir] .hero__img {
-    margin: 72px 0
+    grid-column: 1 / 15;
+    margin-top: 72px;
+    margin-bottom: 72px
 }
   }
 
diff --git a/css/components/hero.pcss.css b/css/components/hero.pcss.css
index 10adff6..593cd9b 100644
--- a/css/components/hero.pcss.css
+++ b/css/components/hero.pcss.css
@@ -19,19 +19,22 @@
 
 .hero__img {
   grid-column: 1 / 7;
-  margin: var(--sp2) 0;
+  margin-block-start: var(--sp2);
+  margin-block-end: var(--sp2);
 
   img {
     width: 100%;
   }
 
   @media (--sm) {
-    margin: var(--sp3) 0;
+    margin-block-start: var(--sp3);
+    margin-block-end: var(--sp3);
   }
 
   @media (--grid-md) {
     grid-column: 1 / 15;
-    margin: var(--sp4) 0;
+    margin-block-start: var(--sp4);
+    margin-block-end: var(--sp4);
   }
 
   @media (--lg) {
diff --git a/css/components/links.css b/css/components/links.css
index 20ce52e..2f9c7a2 100644
--- a/css/components/links.css
+++ b/css/components/links.css
@@ -76,41 +76,55 @@
   /* Form */
 }
 
-.links.inline {
-  list-style: none;
+[dir="ltr"] .links.inline {
+  margin-left: 0;
 }
 
-[dir] .links.inline {
-  padding: 0;
+[dir="rtl"] .links.inline {
+  margin-right: 0;
 }
 
-[dir=ltr] .links.inline {
-  margin-left: 0;
+[dir="ltr"] .links.inline {
+  padding-left: 0;
 }
 
-[dir=rtl] .links.inline {
-  margin-right: 0;
+[dir="rtl"] .links.inline {
+  padding-right: 0;
+}
+
+[dir="ltr"] .links.inline {
+  padding-right: 0;
+}
+
+[dir="rtl"] .links.inline {
+  padding-left: 0;
+}
+
+.links.inline {
+  padding-top: 0;
+  padding-bottom: 0;
+  list-style: none;
 }
 
 .links.inline > * {
     display: inline;
   }
 
-[dir=ltr] .links.inline > *:not(:last-child) {
-  padding-right: 1em;
-    }
+[dir="ltr"] .links.inline > *:not(:last-child) {
+      padding-right: 1em;
+}
 
-[dir=rtl] .links.inline > *:not(:last-child) {
+[dir="rtl"] .links.inline > *:not(:last-child) {
       padding-left: 1em;
-    }
+}
 
 @media (min-width: 700px) {
 
-[dir=ltr] .node--type-book .links.inline {
-    text-align: right
+[dir="ltr"] .node--type-book .links.inline {
+      text-align: right;
   }
 
-[dir=rtl] .node--type-book .links.inline {
-      text-align: left
+[dir="rtl"] .node--type-book .links.inline {
+      text-align: left;
   }
     }
diff --git a/css/components/links.pcss.css b/css/components/links.pcss.css
index 40ad10e..569e4a3 100644
--- a/css/components/links.pcss.css
+++ b/css/components/links.pcss.css
@@ -6,21 +6,23 @@
 @import "../base/variables.pcss.css";
 
 .links.inline {
-  margin-left: 0;
-  padding: 0;
+  margin-inline-start: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 
   > * {
     display: inline;
 
     &:not(:last-child) {
-      padding-right: 1em;
+      padding-inline-end: 1em;
     }
   }
 
   .node--type-book & {
     @media (--md) {
-      text-align: right;
+      text-align: end;
     }
   }
 }
diff --git a/css/components/messages.css b/css/components/messages.css
index f633cd3..1688346 100644
--- a/css/components/messages.css
+++ b/css/components/messages.css
@@ -76,24 +76,52 @@
   /* Form */
 }
 
-.messages-list {
-  list-style: none;
+[dir="ltr"] .messages-list {
+  padding-left: 0;
+}
+
+[dir="rtl"] .messages-list {
+  padding-right: 0;
+}
+
+[dir="ltr"] .messages-list {
+  padding-right: 0;
 }
 
-[dir] .messages-list {
+[dir="rtl"] .messages-list {
+  padding-left: 0;
+}
+
+.messages-list {
   margin-top: 18px;
   margin-bottom: 18px;
-  padding: 0;
+  padding-top: 0;
+  padding-bottom: 0;
+  list-style: none;
+}
+
+[dir="ltr"] .messages {
+  padding-left: 27px;
+}
+
+[dir="rtl"] .messages {
+  padding-right: 27px;
+}
+
+[dir="ltr"] .messages {
+  padding-right: 27px;
+}
+
+[dir="rtl"] .messages {
+  padding-left: 27px;
 }
 
 .messages {
   min-height: 68px;
+  padding-top: 18px;
+  padding-bottom: 18px;
   color: #fff;
   outline: solid 1px transparent;
-}
-
-[dir] .messages {
-  padding: 18px 27px;
   background-color: #0d1214;
 }
 
@@ -103,24 +131,55 @@
 
 /* Additional specificity to override contrib modules. */
 
-[dir] .messages.messages-list__item {
+.messages.messages-list__item {
     background-image: none;
   }
 
-.messages__list {
-  list-style: none;
+[dir="ltr"] .messages__list {
+  margin-left: 0;
 }
 
-[dir] .messages__list {
-  margin: 0;
-  padding: 0;
+[dir="rtl"] .messages__list {
+  margin-right: 0;
+}
+
+[dir="ltr"] .messages__list {
+  margin-right: 0;
+}
+
+[dir="rtl"] .messages__list {
+  margin-left: 0;
+}
+
+[dir="ltr"] .messages__list {
+  padding-left: 0;
+}
+
+[dir="rtl"] .messages__list {
+  padding-right: 0;
+}
+
+[dir="ltr"] .messages__list {
+  padding-right: 0;
 }
 
-[dir] .messages:not(.hidden) ~ .messages {
+[dir="rtl"] .messages__list {
+  padding-left: 0;
+}
+
+.messages__list {
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-top: 0;
+  padding-bottom: 0;
+  list-style: none;
+}
+
+.messages:not(.hidden) ~ .messages {
   margin-top: 18px;
 }
 
-[dir] .messages__item + .messages__item {
+.messages__item + .messages__item {
   margin-top: 9px;
 }
 
@@ -128,107 +187,100 @@
   display: flex;
 }
 
-.messages__header {
-  flex-shrink: 0;
-}
-
-[dir=ltr] .messages__header {
+[dir="ltr"] .messages__header {
   margin-right: 18px;
 }
 
-[dir=rtl] .messages__header {
+[dir="rtl"] .messages__header {
   margin-left: 18px;
 }
 
-[dir=ltr] .messages__header.no-icon {
-  margin-right: 0;
-  }
+.messages__header {
+  flex-shrink: 0;
+}
+
+[dir="ltr"] .messages__header.no-icon {
+    margin-right: 0;
+}
 
-[dir=rtl] .messages__header.no-icon {
+[dir="rtl"] .messages__header.no-icon {
     margin-left: 0;
-  }
+}
 
 .messages__content {
   flex: 1;
+  padding-top: 3px;
 }
 
-[dir] .messages__content {
-  padding-top: 3px;
+[dir="ltr"] .messages__button {
+  margin-left: 18px;
+}
+
+[dir="rtl"] .messages__button {
+  margin-right: 18px;
 }
 
 .messages__button {
   flex-shrink: 0;
+  padding-top: 3px;
 }
 
-[dir] .messages__button {
-  padding-top: 3px;
+[dir="ltr"] .messages__close {
+  padding-left: 0;
 }
 
-[dir=ltr] .messages__button {
-  margin-left: 18px;
+[dir="rtl"] .messages__close {
+  padding-right: 0;
 }
 
-[dir=rtl] .messages__button {
-  margin-right: 18px;
+[dir="ltr"] .messages__close {
+  padding-right: 0;
+}
+
+[dir="rtl"] .messages__close {
+  padding-left: 0;
 }
 
 .messages__close {
   position: relative;
   width: 25px;
   height: 25px;
-  vertical-align: top;
-  -webkit-appearance: none;
-  -moz-appearance: none;
-  appearance: none;
-}
-
-[dir] .messages__close {
-  padding: 0;
+  padding-top: 0;
+  padding-bottom: 0;
   cursor: pointer;
+  vertical-align: top;
   border: 0;
   border-radius: 50%;
   background: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
 }
 
 .messages__close::before,
   .messages__close::after {
     position: absolute;
+    /* stylelint-disable csstools/use-logical */
     top: 50%;
+    left: 50%;
+    /* stylelint-enable csstools/use-logical */
     display: block;
     width: 33px;
     height: 2px;
     content: "";
-  }
-
-[dir] .messages__close::before, [dir] .messages__close::after {
     background-color: #7e96a7;
   }
 
-[dir=ltr] .messages__close::before, [dir=ltr] .messages__close::after {
-  left: 50%;
+.messages__close::before {
+    transform: translate(-50%, -50%) rotate(45deg);
   }
 
-[dir=rtl] .messages__close::before, [dir=rtl] .messages__close::after {
-    right: 50%;
+.messages__close::after {
+    transform: translate(-50%, -50%) rotate(-45deg);
   }
 
-[dir=ltr] .messages__close::before {
-  transform: translate(-50%, -50%) rotate(45deg);
-  }
-
-[dir=rtl] .messages__close::before {
-    transform: translate(50%, -50%) rotate(-45deg);
-  }
-
-[dir=ltr] .messages__close::after {
-  transform: translate(-50%, -50%) rotate(-45deg);
-  }
-
-[dir=rtl] .messages__close::after {
-    transform: translate(50%, -50%) rotate(45deg);
-  }
-
-[dir] .messages__close:hover::before, [dir] .messages__close:hover::after {
+.messages__close:hover::before,
+    .messages__close:hover::after {
       background-color: #fff;
     }
 
@@ -261,18 +313,18 @@
   color: #fff;
 }
 
-[dir] .messages pre {
+.messages pre {
   margin: 0;
 }
 
-[dir] .js-form-managed-file .messages {
-  margin-bottom: 18px;
-}
-
-[dir=ltr] .js-form-managed-file .messages {
+[dir="ltr"] .js-form-managed-file .messages {
   border-left: 6px solid #e33f1e;
 }
 
-[dir=rtl] .js-form-managed-file .messages {
+[dir="rtl"] .js-form-managed-file .messages {
   border-right: 6px solid #e33f1e;
 }
+
+.js-form-managed-file .messages {
+  margin-bottom: 18px;
+}
diff --git a/css/components/messages.pcss.css b/css/components/messages.pcss.css
index 5a79bb6..7c755f5 100644
--- a/css/components/messages.pcss.css
+++ b/css/components/messages.pcss.css
@@ -10,15 +10,18 @@
 }
 
 .messages-list {
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp1);
-  padding: 0;
+  margin-block: var(--sp1);
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
 .messages {
   min-height: calc(var(--messages-icon-size) + 2 * var(--sp1));
-  padding: var(--sp1) var(--sp1-5);
+  padding-block: var(--sp1);
+  padding-inline-start: var(--sp1-5);
+  padding-inline-end: var(--sp1-5);
   color: var(--color--white);
   outline: solid 1px transparent;
   background-color: var(--color--gray-0);
@@ -34,17 +37,21 @@
 }
 
 .messages__list {
-  margin: 0;
-  padding: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
 .messages:not(.hidden) ~ .messages {
-  margin-top: var(--sp1);
+  margin-block-start: var(--sp1);
 }
 
 .messages__item + .messages__item {
-  margin-top: var(--sp0-5);
+  margin-block-start: var(--sp0-5);
 }
 
 .messages__container {
@@ -53,29 +60,31 @@
 
 .messages__header {
   flex-shrink: 0;
-  margin-right: var(--sp1);
+  margin-inline-end: var(--sp1);
 
   &.no-icon {
-    margin-right: 0;
+    margin-inline-end: 0;
   }
 }
 
 .messages__content {
   flex: 1;
-  padding-top: 3px;
+  padding-block-start: 3px;
 }
 
 .messages__button {
   flex-shrink: 0;
-  margin-left: var(--sp1);
-  padding-top: 3px;
+  margin-inline-start: var(--sp1);
+  padding-block-start: 3px;
 }
 
 .messages__close {
   position: relative;
   width: 25px;
   height: 25px;
-  padding: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   cursor: pointer;
   vertical-align: top;
   border: 0;
@@ -86,8 +95,10 @@
   &::before,
   &::after {
     position: absolute;
+    /* stylelint-disable csstools/use-logical */
     top: 50%;
     left: 50%;
+    /* stylelint-enable csstools/use-logical */
     display: block;
     width: 33px;
     height: 2px;
@@ -145,6 +156,6 @@
 }
 
 .js-form-managed-file .messages {
-  margin-bottom: var(--sp1);
-  border-left: var(--form-element-border-size-left) solid var(--color--red);
+  margin-block-end: var(--sp1);
+  border-inline-start: var(--form-element-border-size-left) solid var(--color--red);
 }
diff --git a/css/components/nav-button-mobile.css b/css/components/nav-button-mobile.css
index c587c23..0ea9677 100644
--- a/css/components/nav-button-mobile.css
+++ b/css/components/nav-button-mobile.css
@@ -76,6 +76,30 @@
   /* Form */
 }
 
+[dir="ltr"] .mobile-nav-button {
+  margin-left: auto;
+}
+
+[dir="rtl"] .mobile-nav-button {
+  margin-right: auto;
+}
+
+[dir="ltr"] .mobile-nav-button {
+  padding-left: 0;
+}
+
+[dir="rtl"] .mobile-nav-button {
+  padding-right: 0;
+}
+
+[dir="ltr"] .mobile-nav-button {
+  padding-right: 0;
+}
+
+[dir="rtl"] .mobile-nav-button {
+  padding-left: 0;
+}
+
 .mobile-nav-button {
   position: relative;
   z-index: 10; /* appear above mobile nav */
@@ -85,38 +109,28 @@
   align-self: center;
   width: 36px;
   height: 36px;
-  -webkit-appearance: none;
-}
-
-[dir] .mobile-nav-button {
-  padding: 0;
+  padding-top: 0;
+  padding-bottom: 0;
   cursor: pointer;
   border: none;
   background: transparent;
+  -webkit-appearance: none;
 }
 
-[dir=ltr] .mobile-nav-button {
-  margin-left: auto;
-}
+@media (min-width: 500px) {
 
-[dir=rtl] .mobile-nav-button {
-  margin-right: auto;
-}
+[dir="ltr"] .mobile-nav-button {
+    padding-left: 18px;
+  }
 
-@media (min-width: 500px) {
+[dir="rtl"] .mobile-nav-button {
+    padding-right: 18px;
+  }
 
 .mobile-nav-button {
     display: inline-flex;
     width: auto
 }
-
-[dir=ltr] .mobile-nav-button {
-    padding-left: 18px
-}
-
-[dir=rtl] .mobile-nav-button {
-    padding-right: 18px
-}
   }
 
 /* Text that says "menu" */
@@ -132,6 +146,14 @@
 
 @media (min-width: 500px) {
 
+[dir="ltr"] .mobile-nav-button__label {
+    margin-right: 12px;
+  }
+
+[dir="rtl"] .mobile-nav-button__label {
+    margin-left: 12px;
+  }
+
 .mobile-nav-button__label {
     position: static;
     overflow: visible;
@@ -142,24 +164,21 @@
     font-size: 0.875rem;
     font-weight: 600
 }
-
-[dir=ltr] .mobile-nav-button__label {
-    margin-right: 12px
-}
-
-[dir=rtl] .mobile-nav-button__label {
-    margin-left: 12px
-}
   }
 
 .mobile-nav-button__icon {
   position: relative;
   width: 36px;
   height: 3px;
+  background-color: #2494db;
 }
 
-[dir] .mobile-nav-button__icon {
-  background-color: #2494db;
+[dir="ltr"] .mobile-nav-button__icon:before {
+    left: 0;
+}
+
+[dir="rtl"] .mobile-nav-button__icon:before {
+    right: 0;
 }
 
 .mobile-nav-button__icon:before {
@@ -169,19 +188,16 @@
     height: 3px;
     content: "";
     transition: all 0.2s;
-  }
-
-[dir] .mobile-nav-button__icon:before {
     background-color: #2494db;
   }
 
-[dir=ltr] .mobile-nav-button__icon:before {
-  left: 0;
-  }
+[dir="ltr"] .mobile-nav-button__icon:after {
+    left: 0;
+}
 
-[dir=rtl] .mobile-nav-button__icon:before {
+[dir="rtl"] .mobile-nav-button__icon:after {
     right: 0;
-  }
+}
 
 .mobile-nav-button__icon:after {
     position: absolute;
@@ -191,44 +207,19 @@
     height: 3px;
     content: "";
     transition: all 0.2s;
-  }
-
-[dir] .mobile-nav-button__icon:after {
     background-color: #2494db;
   }
 
-[dir=ltr] .mobile-nav-button__icon:after {
-  left: 0;
-  }
-
-[dir=rtl] .mobile-nav-button__icon:after {
-    right: 0;
-  }
-
-[dir] .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon {
+.mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon {
     background-color: transparent;
   }
 
 .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:before {
       top: 0;
-    }
-
-[dir=ltr] .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:before {
-  transform: rotate(-45deg);
-    }
-
-[dir=rtl] .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:before {
-      transform: rotate(45deg);
+      transform: rotate(-45deg);
     }
 
 .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:after {
       top: 0;
-    }
-
-[dir=ltr] .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:after {
-  transform: rotate(45deg);
-    }
-
-[dir=rtl] .mobile-nav-button[aria-expanded="true"] .mobile-nav-button__icon:after {
-      transform: rotate(-45deg);
+      transform: rotate(45deg);
     }
diff --git a/css/components/nav-button-mobile.pcss.css b/css/components/nav-button-mobile.pcss.css
index b636a23..77c6c84 100644
--- a/css/components/nav-button-mobile.pcss.css
+++ b/css/components/nav-button-mobile.pcss.css
@@ -13,8 +13,10 @@
   align-self: center;
   width: var(--sp2);
   height: var(--sp2);
-  margin-left: auto;
-  padding: 0;
+  margin-inline-start: auto;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   cursor: pointer;
   border: none;
   background: transparent;
@@ -23,7 +25,7 @@
   @media (--sm) {
     display: inline-flex;
     width: auto;
-    padding-left: var(--sp);
+    padding-inline-start: var(--sp);
   }
 }
 
@@ -42,7 +44,7 @@
     clip: auto;
     width: auto;
     height: auto;
-    margin-right: 12px;
+    margin-inline-end: 12px;
     letter-spacing: 0.05em;
     font-size: 14px;
     font-weight: 600;
@@ -57,8 +59,8 @@
 
   &:before {
     position: absolute;
-    top: -8px;
-    left: 0;
+    inset-block-start: -8px;
+    inset-inline-start: 0;
     width: 100%;
     height: 3px;
     content: "";
@@ -68,9 +70,8 @@
 
   &:after {
     position: absolute;
-    top: auto;
-    bottom: -8px;
-    left: 0;
+    inset-block: auto -8px;
+    inset-inline-start: 0;
     width: 100%;
     height: 3px;
     content: "";
@@ -82,12 +83,12 @@
     background-color: transparent;
 
     &:before {
-      top: 0;
+      inset-block-start: 0;
       transform: rotate(-45deg);
     }
 
     &:after {
-      top: 0;
+      inset-block-start: 0;
       transform: rotate(45deg);
     }
   }
diff --git a/css/components/nav-button-wide.css b/css/components/nav-button-wide.css
index ac633a4..cf4646c 100644
--- a/css/components/nav-button-wide.css
+++ b/css/components/nav-button-wide.css
@@ -90,21 +90,15 @@
     justify-content: center;
     width: 90px;
     height: 108px;
-    pointer-events: auto;
-    outline: 0
-}
-
-[dir] .nav-primary__button {
     cursor: pointer;
+    pointer-events: auto;
     border: 0;
+    outline: 0;
     background-color: #2494db
 }
 
-    .nav-primary__button:focus { /* Will show in IE/Edge high contrast mode. */
-    }
-
-    [dir] .nav-primary__button:focus {
-      border: solid 1px transparent;
+    .nav-primary__button:focus {
+      border: solid 1px transparent; /* Will show in IE/Edge high contrast mode. */
     }
 
     body:not(.is-always-mobile-nav) .js-fixed .nav-primary__button {
@@ -133,14 +127,7 @@
 
 [aria-expanded="true"] .nav-primary__icon > div:nth-child(1) {
       top: 9px;
-    }
-
-[dir=ltr] [aria-expanded="true"] .nav-primary__icon > div:nth-child(1) {
-  transform: rotate(-45deg);
-    }
-
-[dir=rtl] [aria-expanded="true"] .nav-primary__icon > div:nth-child(1) {
-      transform: rotate(45deg);
+      transform: rotate(-45deg);
     }
 
 [aria-expanded="true"] .nav-primary__icon > div:nth-child(2) {
@@ -149,43 +136,39 @@
 
 [aria-expanded="true"] .nav-primary__icon > div:nth-child(3) {
       top: 9px;
-    }
-
-[dir=ltr] [aria-expanded="true"] .nav-primary__icon > div:nth-child(3) {
-  transform: rotate(45deg);
-    }
-
-[dir=rtl] [aria-expanded="true"] .nav-primary__icon > div:nth-child(3) {
-      transform: rotate(-45deg);
+      transform: rotate(45deg);
     }
 
 .nav-primary__icon > div {
     height: 0;
-  }
-
-[dir] .nav-primary__icon > div {
+    /* Intentionaly not using CSS logical properties. */
     border-top: solid 3px #fff;
   }
 
+[dir="ltr"] .nav-primary__icon > div:nth-child(1) {
+      left: 0;
+}
+
+[dir="rtl"] .nav-primary__icon > div:nth-child(1) {
+      right: 0;
+}
+
 .nav-primary__icon > div:nth-child(1) {
       position: absolute;
       top: 0;
       width: 100%;
       height: 0;
       transition: all 0.2s;
-    }
-
-[dir] .nav-primary__icon > div:nth-child(1) {
       background-color: #fff;
     }
 
-[dir=ltr] .nav-primary__icon > div:nth-child(1) {
-  left: 0;
-    }
+[dir="ltr"] .nav-primary__icon > div:nth-child(2) {
+      left: 0;
+}
 
-[dir=rtl] .nav-primary__icon > div:nth-child(1) {
+[dir="rtl"] .nav-primary__icon > div:nth-child(2) {
       right: 0;
-    }
+}
 
 .nav-primary__icon > div:nth-child(2) {
       position: absolute;
@@ -193,19 +176,16 @@
       width: 100%;
       height: 0;
       transition: opacity 0.2s;
-    }
-
-[dir] .nav-primary__icon > div:nth-child(2) {
       background-color: #fff;
     }
 
-[dir=ltr] .nav-primary__icon > div:nth-child(2) {
-  left: 0;
-    }
+[dir="ltr"] .nav-primary__icon > div:nth-child(3) {
+      left: 0;
+}
 
-[dir=rtl] .nav-primary__icon > div:nth-child(2) {
+[dir="rtl"] .nav-primary__icon > div:nth-child(3) {
       right: 0;
-    }
+}
 
 .nav-primary__icon > div:nth-child(3) {
       position: absolute;
@@ -214,16 +194,5 @@
       width: 100%;
       height: 0;
       transition: all 0.2s;
-    }
-
-[dir] .nav-primary__icon > div:nth-child(3) {
       background-color: #fff;
     }
-
-[dir=ltr] .nav-primary__icon > div:nth-child(3) {
-  left: 0;
-    }
-
-[dir=rtl] .nav-primary__icon > div:nth-child(3) {
-      right: 0;
-    }
diff --git a/css/components/nav-button-wide.pcss.css b/css/components/nav-button-wide.pcss.css
index 3d19f27..c24c7e2 100644
--- a/css/components/nav-button-wide.pcss.css
+++ b/css/components/nav-button-wide.pcss.css
@@ -52,7 +52,7 @@
 
   [aria-expanded="true"] & {
     > div:nth-child(1) {
-      top: 9px;
+      inset-block-start: 9px;
       transform: rotate(-45deg);
     }
 
@@ -61,19 +61,20 @@
     }
 
     > div:nth-child(3) {
-      top: 9px;
+      inset-block-start: 9px;
       transform: rotate(45deg);
     }
   }
 
   > div {
     height: 0;
+    /* Intentionaly not using CSS logical properties. */
     border-top: solid 3px var(--color--white);
 
     &:nth-child(1) {
       position: absolute;
-      top: 0;
-      left: 0;
+      inset-block-start: 0;
+      inset-inline-start: 0;
       width: 100%;
       height: 0;
       transition: all 0.2s;
@@ -82,8 +83,8 @@
 
     &:nth-child(2) {
       position: absolute;
-      top: 9px;
-      left: 0;
+      inset-block-start: 9px;
+      inset-inline-start: 0;
       width: 100%;
       height: 0;
       transition: opacity 0.2s;
@@ -92,9 +93,8 @@
 
     &:nth-child(3) {
       position: absolute;
-      top: auto;
-      bottom: 0;
-      left: 0;
+      inset-block: auto 0;
+      inset-inline-start: 0;
       width: 100%;
       height: 0;
       transition: all 0.2s;
diff --git a/css/components/nav-primary-button.css b/css/components/nav-primary-button.css
index e2c881b..3d99ac0 100644
--- a/css/components/nav-primary-button.css
+++ b/css/components/nav-primary-button.css
@@ -76,76 +76,73 @@
   /* Form */
 }
 
+[dir="ltr"] .primary-nav__button-toggle {
+  margin-right: auto;
+}
+
+[dir="rtl"] .primary-nav__button-toggle {
+  margin-left: auto;
+}
+
+[dir="ltr"] .primary-nav__button-toggle {
+  padding-left: 0;
+}
+
+[dir="rtl"] .primary-nav__button-toggle {
+  padding-right: 0;
+}
+
+[dir="ltr"] .primary-nav__button-toggle {
+  padding-right: 0;
+}
+
+[dir="rtl"] .primary-nav__button-toggle {
+  padding-left: 0;
+}
+
 .primary-nav__button-toggle {
   position: relative;
   overflow: hidden;
   width: 36px;
-  height: 36px; /* Visually align button with menu link text. */ /* Necessary for proper alignment with always-on-mobile in IE11. */
-  text-indent: -999px;
-  -webkit-appearance: none;
-}
-
-[dir] .primary-nav__button-toggle {
-  margin-top: 2px;
-  padding: 0;
+  height: 36px;
+  margin-top: 2px; /* Visually align button with menu link text. */ /* Necessary for proper alignment with always-on-mobile in IE11. */
+  padding-top: 0;
+  padding-bottom: 0;
   cursor: pointer;
+  text-indent: -999px;
   border: 0;
   background: transparent;
-}
-
-[dir=ltr] .primary-nav__button-toggle {
-  margin-right: auto;
-}
-
-[dir=rtl] .primary-nav__button-toggle {
-  margin-left: auto;
+  -webkit-appearance: none;
 }
 
 .primary-nav__button-toggle .icon--menu-toggle {
     position: absolute;
+    /* stylelint-disable csstools/use-logical */
     top: 50%;
+    left: 50%;
+    /* stylelint-enable csstools/use-logical */
     width: 16px;
     height: 16px;
     transition: background-color 0.2s;
-  }
-
-[dir] .primary-nav__button-toggle .icon--menu-toggle {
+    transform: translate(-50%, -50%);
     border-radius: 2px;
   }
 
-[dir=ltr] .primary-nav__button-toggle .icon--menu-toggle {
-  left: 50%;
-  transform: translate(-50%, -50%);
-  }
-
-[dir=rtl] .primary-nav__button-toggle .icon--menu-toggle {
-    right: 50%;
-    transform: translate(50%, -50%);
-  }
-
 .primary-nav__button-toggle .icon--menu-toggle:before,
     .primary-nav__button-toggle .icon--menu-toggle:after {
       position: absolute;
+      /* stylelint-disable csstools/use-logical */
       top: 50%;
+      left: 50%;
+      /* stylelint-enable csstools/use-logical */
       width: 18px;
       height: 0;
       content: "";
-    }
-
-[dir] .primary-nav__button-toggle .icon--menu-toggle:before, [dir] .primary-nav__button-toggle .icon--menu-toggle:after {
+      transform: translate(-50%, -50%);
+      /* Intentionaly not using CSS logical properties. */
       border-top: solid 3px #2494db;
     }
 
-[dir=ltr] .primary-nav__button-toggle .icon--menu-toggle:before, [dir=ltr] .primary-nav__button-toggle .icon--menu-toggle:after {
-  left: 50%;
-  transform: translate(-50%, -50%);
-    }
-
-[dir=rtl] .primary-nav__button-toggle .icon--menu-toggle:before, [dir=rtl] .primary-nav__button-toggle .icon--menu-toggle:after {
-      right: 50%;
-      transform: translate(50%, -50%);
-    }
-
 @media (min-width: 1200px) {
         body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:before, body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:after {
           content: none;
@@ -154,50 +151,37 @@
 
 .primary-nav__button-toggle .icon--menu-toggle:after {
       transition: opacity 0.2s;
-    }
-
-[dir=ltr] .primary-nav__button-toggle .icon--menu-toggle:after {
-  transform: translate(-50%, -50%) rotate(90deg);
-    }
-
-[dir=rtl] .primary-nav__button-toggle .icon--menu-toggle:after {
-      transform: translate(50%, -50%) rotate(-90deg);
+      transform: translate(-50%, -50%) rotate(90deg);
     }
 
 @media (min-width: 1200px) {
         body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:after {
+          /* stylelint-disable csstools/use-logical */
           top: calc(50% - 2px);
+          left: 3px;
+          /* stylelint-enable csstools/use-logical */
           width: 8px;
           height: 8px;
           content: "";
+          transform: translateY(-50%) rotate(45deg);
           opacity: 0.8;
-        }
-        [dir] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:after {
+          /* Intentionaly not using CSS logical properties. */
           border-top: none;
+          border-right: solid 2px currentColor;
           border-bottom: solid 2px currentColor;
           background: transparent;
         }
-        [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:after {
-    left: 3px;
-    transform: translateY(-50%) rotate(45deg);
-    border-right: solid 2px currentColor;
-        }
-        [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle:after {
-          right: 3px;
-          transform: translateY(-50%) rotate(-45deg);
-          border-left: solid 2px currentColor;
-        }
       }
 
 @media (min-width: 1200px) {
-      [dir] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
-        transform: translateY(-50%);
-      }
-      [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
-    left: 3px;
-      }
-      [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
+      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
+        left: 3px;
+  }
+      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
         right: 3px;
+  }
+      body:not(.is-always-mobile-nav) .primary-nav__button-toggle .icon--menu-toggle {
+        transform: translateY(-50%);
       }
     }
 
@@ -220,37 +204,32 @@
   }
 
 @media (min-width: 1200px) {
+    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
+      margin-right: -36px;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
+      margin-left: -36px;
+  }
     body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
       flex-shrink: 0;
       -ms-grid-row-align: stretch;
       align-self: stretch;
       width: 44px;
       height: auto;
-    }
-    [dir] body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
       margin-top: 0;
     }
-    [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
-    margin-right: -36px;
-    }
-    [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__button-toggle {
-      margin-left: -36px;
-    }
 
       body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus {
-        outline: 0;
-      }
-
-      [dir] body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus {
         border: 0;
+        outline: 0;
       }
 
-        [dir] body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus .icon--menu-toggle {
+        body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus .icon--menu-toggle {
           border: solid 1px transparent;
           background-color: #2494db;
         }
 
-          [dir] body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus .icon--menu-toggle:after {
+          body:not(.is-always-mobile-nav) .primary-nav__button-toggle:focus .icon--menu-toggle:after {
             border-color: #fff;
           }
   }
diff --git a/css/components/nav-primary-button.pcss.css b/css/components/nav-primary-button.pcss.css
index d1930d4..f370a5c 100644
--- a/css/components/nav-primary-button.pcss.css
+++ b/css/components/nav-primary-button.pcss.css
@@ -10,9 +10,11 @@
   overflow: hidden;
   width: var(--sp2);
   height: var(--sp2);
-  margin-top: 2px; /* Visually align button with menu link text. */
-  margin-right: auto; /* Necessary for proper alignment with always-on-mobile in IE11. */
-  padding: 0;
+  margin-block-start: 2px; /* Visually align button with menu link text. */
+  margin-inline-end: auto; /* Necessary for proper alignment with always-on-mobile in IE11. */
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   cursor: pointer;
   text-indent: -999px;
   border: 0;
@@ -21,8 +23,10 @@
 
   .icon--menu-toggle {
     position: absolute;
+    /* stylelint-disable csstools/use-logical */
     top: 50%;
     left: 50%;
+    /* stylelint-enable csstools/use-logical */
     width: 16px;
     height: 16px;
     transition: background-color 0.2s;
@@ -32,12 +36,15 @@
     &:before,
     &:after {
       position: absolute;
+      /* stylelint-disable csstools/use-logical */
       top: 50%;
       left: 50%;
+      /* stylelint-enable csstools/use-logical */
       width: var(--sp);
       height: 0;
       content: "";
       transform: translate(-50%, -50%);
+      /* Intentionaly not using CSS logical properties. */
       border-top: solid 3px var(--color--blue-50);
 
       @media (--nav) {
@@ -53,13 +60,16 @@
 
       @media (--nav) {
         body:not(.is-always-mobile-nav) & {
+          /* stylelint-disable csstools/use-logical */
           top: calc(50% - 2px);
           left: 3px;
+          /* stylelint-enable csstools/use-logical */
           width: 8px;
           height: 8px;
           content: "";
           transform: translateY(-50%) rotate(45deg);
           opacity: 0.8;
+          /* Intentionaly not using CSS logical properties. */
           border-top: none;
           border-right: solid 2px currentColor;
           border-bottom: solid 2px currentColor;
@@ -70,7 +80,7 @@
 
     @media (--nav) {
       body:not(.is-always-mobile-nav) & {
-        left: 3px;
+        inset-inline-start: 3px;
         transform: translateY(-50%);
       }
     }
@@ -101,8 +111,8 @@
       align-self: stretch;
       width: calc(var(--sp2) + 8px);
       height: auto;
-      margin-top: 0;
-      margin-right: calc(-1 * var(--sp2));
+      margin-block-start: 0;
+      margin-inline-end: calc(-1 * var(--sp2));
 
       &:focus {
         border: 0;
diff --git a/css/components/nav-primary.css b/css/components/nav-primary.css
index c424a31..1ce9cfb 100644
--- a/css/components/nav-primary.css
+++ b/css/components/nav-primary.css
@@ -80,11 +80,11 @@
   list-style: none;
 }
 
-[dir] .primary-nav__menu-item {
+.primary-nav__menu-item {
   margin-bottom: 9px;
 }
 
-[dir] .primary-nav__menu-item:last-child {
+.primary-nav__menu-item:last-child {
     margin-bottom: 0;
   }
 
@@ -134,21 +134,49 @@
     }
   }
 
+[dir="ltr"] .primary-nav__menu-link--nolink {
+  padding-left: 0;
+}
+
+[dir="rtl"] .primary-nav__menu-link--nolink {
+  padding-right: 0;
+}
+
+[dir="ltr"] .primary-nav__menu-link--nolink {
+  padding-right: 0;
+}
+
+[dir="rtl"] .primary-nav__menu-link--nolink {
+  padding-left: 0;
+}
+
 .primary-nav__menu-link--nolink {
+  padding-top: 9px;
+  padding-bottom: 9px;
   color: #6e7172;
   font-weight: normal;
 }
 
-[dir] .primary-nav__menu-link--nolink {
-  padding: 9px 0;
+[dir="ltr"] .primary-nav__menu-link--button {
+  padding-left: 0;
 }
 
-.primary-nav__menu-link--button {
-  position: relative;
+[dir="rtl"] .primary-nav__menu-link--button {
+  padding-right: 0;
+}
+
+[dir="ltr"] .primary-nav__menu-link--button {
+  padding-right: 0;
+}
+
+[dir="rtl"] .primary-nav__menu-link--button {
+  padding-left: 0;
 }
 
-[dir] .primary-nav__menu-link--button {
-  padding: 0;
+.primary-nav__menu-link--button {
+  position: relative;
+  padding-top: 0;
+  padding-bottom: 0;
   cursor: pointer;
   border: 0;
   background: transparent;
@@ -159,34 +187,20 @@
 .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,
     .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
       position: absolute;
+      /* stylelint-disable csstools/use-logical */
       top: 20px;
+      right: 9px;
+      /* stylelint-enable csstools/use-logical */
       width: 18px;
       height: 0;
       content: "";
-    }
-
-[dir] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before, [dir] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
+      /* Intentionaly not using CSS logical properties. */
       border-top: solid 3px #2494db;
     }
 
-[dir=ltr] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before, [dir=ltr] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-  right: 9px;
-    }
-
-[dir=rtl] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before, [dir=rtl] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-      left: 9px;
-    }
-
 .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
       transition: opacity 0.2s;
-    }
-
-[dir=ltr] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-  transform: rotate(90deg);
-    }
-
-[dir=rtl] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-      transform: rotate(-90deg);
+      transform: rotate(90deg);
     }
 
 .primary-nav__menu-link--button.primary-nav__menu-link--has-children[aria-expanded="true"]:after {
@@ -200,48 +214,67 @@
       }
 
 @media (min-width: 1200px) {
-      [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
-    padding-right: 9px;
-      }
-      [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
+      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
+        padding-right: 9px;
+  }
+      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
         padding-left: 9px;
-      }
+  }
 
         body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before {
           content: none;
         }
 
         /* Chevron icon for desktop navigation. */
+        [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
+          left: 100%;
+  }
+        [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
+          right: 100%;
+  }
         body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
           position: absolute;
           top: 50%;
           width: 8px;
           height: 8px;
-        }
-        [dir] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
+          transform: translateY(-50%) rotate(45deg);
+          /* Intentionaly not using CSS logical properties. */
           border-top: 0;
+          border-right: solid 2px currentColor;
           border-bottom: solid 2px currentColor;
         }
-        [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-    left: 100%;
-    transform: translateY(-50%) rotate(45deg);
-    border-right: solid 2px currentColor;
-        }
-        [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
-          right: 100%;
-          transform: translateY(-50%) rotate(-45deg);
-          border-left: solid 2px currentColor;
-        }
     }
 
+[dir="ltr"] .primary-nav__menu-link-inner {
+  padding-left: 0;
+}
+
+[dir="rtl"] .primary-nav__menu-link-inner {
+  padding-right: 0;
+}
+
+[dir="ltr"] .primary-nav__menu-link-inner {
+  padding-right: 0;
+}
+
+[dir="rtl"] .primary-nav__menu-link-inner {
+  padding-left: 0;
+}
+
 .primary-nav__menu-link-inner {
   position: relative;
   display: inline-flex;
   align-items: center;
+  padding-top: 9px;
+  padding-bottom: 9px;
+}
+
+[dir="ltr"] .primary-nav__menu-link-inner:after {
+    left: 0;
 }
 
-[dir] .primary-nav__menu-link-inner {
-  padding: 9px 0;
+[dir="rtl"] .primary-nav__menu-link-inner:after {
+    right: 0;
 }
 
 .primary-nav__menu-link-inner:after {
@@ -251,25 +284,18 @@
     height: 0;
     content: "";
     transition: transform 0.2s;
-  }
-
-[dir] .primary-nav__menu-link-inner:after {
     transform: scaleX(0);
+    transform-origin: left;
+    /* Intentionaly not using CSS logical properties. */
     border-top: solid 5px #2494db;
   }
 
-[dir=ltr] .primary-nav__menu-link-inner:after {
-  left: 0;
-  transform-origin: left;
-  }
-
-[dir=rtl] .primary-nav__menu-link-inner:after {
-    right: 0;
-    transform-origin: right;
-  }
+[dir="rtl"] .primary-nav__menu-link-inner:after {
+      transform-origin: right;
+    }
 
 @media (min-width: 1200px) {
-      [dir] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner:after {
+      body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner:after {
         transform-origin: center;
         border-top-width: 9px;
       }
@@ -280,31 +306,54 @@
     outline: 0;
   }
 
-[dir] .primary-nav__menu-link-inner:hover:after, [dir] .primary-nav__menu-link-inner:focus:after {
+.primary-nav__menu-link-inner:hover:after, .primary-nav__menu-link-inner:focus:after {
       transform: scaleX(1);
     }
 
 @media (min-width: 1200px) {
-      [dir] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
-        padding: 9px 0;
+      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
+        padding-left: 0;
+  }
+      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
+        padding-right: 0;
+  }
+      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
+        padding-right: 0;
+  }
+      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
+        padding-left: 0;
+  }
+      body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner {
+        padding-top: 9px;
+        padding-bottom: 9px;
       }
 
-        [dir] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after {
+        body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after {
+          transform-origin: left;
           border-top-width: 3px;
         }
 
-        [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after {
-    transform-origin: left;
-        }
-
-        [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after {
-          transform-origin: right;
-        }
+          [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link--level-2 .primary-nav__menu-link-inner:after {
+            transform-origin: right;
+          }
     }
 
 @media (min-width: 1200px) {
-    [dir] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
-      padding: 36px 0;
+    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
+      padding-left: 0;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
+      padding-right: 0;
+  }
+    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
+      padding-right: 0;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
+      padding-left: 0;
+  }
+    body:not(.is-always-mobile-nav) .primary-nav__menu-link-inner {
+      padding-top: 36px;
+      padding-bottom: 36px;
     }
   }
 
@@ -312,25 +361,71 @@
   Top level specific styles.
 */
 
-[dir] .primary-nav__menu--level-1 {
-  margin: 0;
-  padding: 0;
+[dir="ltr"] .primary-nav__menu--level-1 {
+  margin-left: 0;
+}
+
+[dir="rtl"] .primary-nav__menu--level-1 {
+  margin-right: 0;
+}
+
+[dir="ltr"] .primary-nav__menu--level-1 {
+  margin-right: 0;
+}
+
+[dir="rtl"] .primary-nav__menu--level-1 {
+  margin-left: 0;
+}
+
+[dir="ltr"] .primary-nav__menu--level-1 {
+  padding-left: 0;
+}
+
+[dir="rtl"] .primary-nav__menu--level-1 {
+  padding-right: 0;
+}
+
+[dir="ltr"] .primary-nav__menu--level-1 {
+  padding-right: 0;
+}
+
+[dir="rtl"] .primary-nav__menu--level-1 {
+  padding-left: 0;
+}
+
+.primary-nav__menu--level-1 {
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-top: 0;
+  padding-bottom: 0;
 }
 
 @media (min-width: 1200px) {
+    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 {
+      margin-right: 18px;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 {
+      margin-left: 18px;
+  }
     body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 {
       display: flex;
       align-items: stretch;
     }
-    [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 {
-    margin-right: 18px;
-    }
-    [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__menu--level-1 {
-      margin-left: 18px;
-    }
   }
 
 @media (min-width: 1200px) {
+    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
+      margin-left: 0;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
+      margin-right: 0;
+  }
+    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
+      margin-right: 0;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
+      margin-left: 0;
+  }
     body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
       position: relative; /* Anchor secondary menu */
       display: flex;
@@ -338,28 +433,22 @@
       width: -webkit-max-content;
       width: max-content;
       max-width: 200px;
-    }
-    [dir] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1 {
-      margin: 0;
+      margin-top: 0;
+      margin-bottom: 0;
     }
 
-      [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:not(:last-child) {
-    margin-right: 36px;
-      }
+      [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:not(:last-child) {
+        margin-right: 36px;
+  }
 
-      [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:not(:last-child) {
+      [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:not(:last-child) {
         margin-left: 36px;
-      }
+  }
         html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:hover .primary-nav__menu--level-2 {
           visibility: visible;
+          transform: translate(-50%, 0);
           opacity: 1;
         }
-        html[dir=ltr]:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:hover .primary-nav__menu--level-2 {
-    transform: translate(-50%, 0);
-        }
-        html[dir=rtl]:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:hover .primary-nav__menu--level-2 {
-          transform: translate(50%, 0);
-        }
 
       /*
         Cannot combine the focus-within pseudoselector with other selectors,
@@ -367,14 +456,9 @@
       */
         html:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:focus-within .primary-nav__menu--level-2 {
           visibility: visible;
+          transform: translate(-50%, 0);
           opacity: 1;
         }
-        html[dir=ltr]:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:focus-within .primary-nav__menu--level-2 {
-    transform: translate(-50%, 0);
-        }
-        html[dir=rtl]:not(.js) body:not(.is-always-mobile-nav) .primary-nav__menu-item--level-1:focus-within .primary-nav__menu--level-2 {
-          transform: translate(50%, 0);
-        }
   }
 
 .primary-nav__menu-link--level-1 {
@@ -386,27 +470,39 @@
   Secondary menu specific styles.
 */
 
-.primary-nav__menu--level-2 {
-  visibility: hidden;
-  overflow: hidden;
-  flex-basis: 100%;
-  max-height: 0;
-  transition: opacity 0.2s, visibility 0.2s, max-height 0.2s;
-  opacity: 0;
+[dir="ltr"] .primary-nav__menu--level-2 {
+  margin-left: -18px;
 }
 
-[dir=ltr] .primary-nav__menu--level-2 {
-  margin-left: -18px;
+[dir="rtl"] .primary-nav__menu--level-2 {
+  margin-right: -18px;
+}
+
+[dir="ltr"] .primary-nav__menu--level-2 {
   padding-left: 45px;
-  border-left: solid 18px #2494db;
 }
 
-[dir=rtl] .primary-nav__menu--level-2 {
-  margin-right: -18px;
+[dir="rtl"] .primary-nav__menu--level-2 {
   padding-right: 45px;
+}
+
+[dir="ltr"] .primary-nav__menu--level-2 {
+  border-left: solid 18px #2494db;
+}
+
+[dir="rtl"] .primary-nav__menu--level-2 {
   border-right: solid 18px #2494db;
 }
 
+.primary-nav__menu--level-2 {
+  visibility: hidden;
+  overflow: hidden;
+  flex-basis: 100%;
+  max-height: 0;
+  transition: opacity 0.2s, visibility 0.2s, max-height 0.2s;
+  opacity: 0;
+}
+
 html:not(.js) .primary-nav__menu--level-2 {
     visibility: visible;
     max-height: none;
@@ -416,105 +512,104 @@ html:not(.js) .primary-nav__menu--level-2 {
 .primary-nav__menu--level-2.is-active {
     visibility: visible;
     max-height: none;
-    opacity: 1;
-  }
-
-[dir] .primary-nav__menu--level-2.is-active {
     margin-top: 27px;
+    opacity: 1;
   }
 
 @media (min-width: 1200px) {
-      [dir] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2.is-active {
+      body:not(.is-always-mobile-nav) .primary-nav__menu--level-2.is-active {
         margin-top: 0;
       }
     }
 
 @media (min-width: 700px) {
 
-[dir=ltr] .primary-nav__menu--level-2 {
+[dir="ltr"] .primary-nav__menu--level-2 {
     margin-left: -54px;
-    padding-left: 54px
-}
+  }
 
-[dir=rtl] .primary-nav__menu--level-2 {
+[dir="rtl"] .primary-nav__menu--level-2 {
     margin-right: -54px;
-    padding-right: 54px
-}
+  }
+
+[dir="ltr"] .primary-nav__menu--level-2 {
+    padding-left: 54px;
+  }
+
+[dir="rtl"] .primary-nav__menu--level-2 {
+    padding-right: 54px;
+  }
   }
 
 @media (min-width: 1200px) {
+    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
+      margin-left: 0;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
+      margin-right: 0;
+  }
+    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
+      padding-left: 36px;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
+      padding-right: 36px;
+  }
+    [dir="ltr"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
+      padding-right: 36px;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
+      padding-left: 36px;
+  }
     body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
       position: absolute;
       z-index: 5; /* Appear above search container. */
+      /* stylelint-disable csstools/use-logical */
       top: calc(100% - 9px);
+      left: 50%;
+      /* stylelint-enable csstools/use-logical */
       visibility: hidden;
       overflow: visible;
       width: 250px;
       max-height: none;
-      transition: none;
-      opacity: 0; /* Transparent borders useful for Windows High Contrast mode. */
-    }
-    [dir] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
       margin-top: 0;
-      padding: 54px 36px;
+      padding-top: 54px;
+      padding-bottom: 54px;
+      transition: none;
+      transform: translate(-50%, -20px);
+      opacity: 0;
+      /* Intentionaly not using CSS logical properties. */
       border-top: solid #2494db 9px;
+      border-right: solid 1px transparent; /* Transparent borders useful for Windows High Contrast mode. */
       border-bottom: solid 1px transparent;
+      border-left: solid 1px transparent;
       border-radius: 0 0 2px 2px;
       background: #fff;
       box-shadow: 0 1px 36px rgba(0, 0, 0, 0.08);
     }
-    [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
-    left: 50%;
-    margin-left: 0;
-    transform: translate(-50%, -20px);
-    border-right: solid 1px transparent;
-    border-left: solid 1px transparent;
-    }
-    [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2 {
-      right: 50%;
-      margin-right: 0;
-      transform: translate(50%, -20px);
-      border-left: solid 1px transparent;
-      border-right: solid 1px transparent;
-    }
 
       /* Arrow */
       body:not(.is-always-mobile-nav) .primary-nav__menu--level-2:after {
         position: absolute;
+        /* stylelint-disable csstools/use-logical */
         bottom: calc(100% + 9px);
+        left: 50%;
+        /* stylelint-enable csstools/use-logical */
         width: 0;
         height: 0;
         content: "";
-      }
-      [dir] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2:after {
+        transform: translateX(-50%);
+        /* Intentionaly not using CSS logical properties. */
+        border-right: solid 10px transparent;
         border-bottom: solid 10px #2494db;
-      }
-      [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2:after {
-    left: 50%;
-    transform: translateX(-50%);
-    border-right: solid 10px transparent;
-    border-left: solid 10px transparent;
-      }
-      [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2:after {
-        right: 50%;
-        transform: translateX(50%);
         border-left: solid 10px transparent;
-        border-right: solid 10px transparent;
       }
 
       body:not(.is-always-mobile-nav) .primary-nav__menu--level-2.is-active {
         visibility: visible;
+        transform: translate(-50%, 0);
         opacity: 1;
       }
 
-      [dir=ltr] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2.is-active {
-    transform: translate(-50%, 0);
-      }
-
-      [dir=rtl] body:not(.is-always-mobile-nav) .primary-nav__menu--level-2.is-active {
-        transform: translate(50%, 0);
-      }
-
       /*
        * Only apply transition styles to menu when JS is loaded. This
        * works around https://bugs.chromium.org/p/chromium/issues/detail?id=332189
diff --git a/css/components/nav-primary.pcss.css b/css/components/nav-primary.pcss.css
index 3463e64..134f643 100644
--- a/css/components/nav-primary.pcss.css
+++ b/css/components/nav-primary.pcss.css
@@ -10,10 +10,10 @@
 }
 
 .primary-nav__menu-item {
-  margin-bottom: var(--sp0-5);
+  margin-block-end: var(--sp0-5);
 
   &:last-child {
-    margin-bottom: 0;
+    margin-block-end: 0;
   }
 
   &.primary-nav__menu-item--has-children {
@@ -64,14 +64,18 @@
 }
 
 .primary-nav__menu-link--nolink {
-  padding: var(--sp0-5) 0;
+  padding-block: var(--sp0-5);
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   color: var(--color--gray-20);
   font-weight: normal;
 }
 
 .primary-nav__menu-link--button {
   position: relative;
-  padding: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   cursor: pointer;
   border: 0;
   background: transparent;
@@ -81,11 +85,14 @@
     &:before,
     &:after {
       position: absolute;
+      /* stylelint-disable csstools/use-logical */
       top: 20px;
       right: 9px;
+      /* stylelint-enable csstools/use-logical */
       width: 18px;
       height: 0;
       content: "";
+      /* Intentionaly not using CSS logical properties. */
       border-top: solid 3px var(--color--blue-50);
     }
 
@@ -106,7 +113,7 @@
 
     @media (--nav) {
       body:not(.is-always-mobile-nav) & {
-        padding-right: 9px;
+        padding-inline-end: 9px;
 
         &:before {
           content: none;
@@ -115,11 +122,12 @@
         /* Chevron icon for desktop navigation. */
         &:after {
           position: absolute;
-          top: 50%;
-          left: 100%;
+          inset-block-start: 50%;
+          inset-inline-start: 100%;
           width: 8px;
           height: 8px;
           transform: translateY(-50%) rotate(45deg);
+          /* Intentionaly not using CSS logical properties. */
           border-top: 0;
           border-right: solid 2px currentColor;
           border-bottom: solid 2px currentColor;
@@ -133,20 +141,27 @@
   position: relative;
   display: inline-flex;
   align-items: center;
-  padding: var(--sp0-5) 0;
+  padding-block: var(--sp0-5);
+  padding-inline-start: 0;
+  padding-inline-end: 0;
 
   &:after {
     position: absolute;
-    bottom: 0;
-    left: 0;
+    inset-block-end: 0;
+    inset-inline-start: 0;
     width: 100%;
     height: 0;
     content: "";
     transition: transform 0.2s;
     transform: scaleX(0);
     transform-origin: left;
+    /* Intentionaly not using CSS logical properties. */
     border-top: solid 5px var(--color--blue-50);
 
+    [dir="rtl"] & {
+      transform-origin: right;
+    }
+
     @media (--nav) {
       body:not(.is-always-mobile-nav) & {
         transform-origin: center;
@@ -167,11 +182,17 @@
   .primary-nav__menu-link--level-2 & {
     @media (--nav) {
       body:not(.is-always-mobile-nav) & {
-        padding: var(--sp0-5) 0;
+        padding-block: var(--sp0-5);
+        padding-inline-start: 0;
+        padding-inline-end: 0;
 
         &:after {
           transform-origin: left;
           border-top-width: 3px;
+
+          [dir="rtl"] & {
+            transform-origin: right;
+          }
         }
       }
     }
@@ -179,7 +200,9 @@
 
   @media (--nav) {
     body:not(.is-always-mobile-nav) & {
-      padding: var(--sp2) 0;
+      padding-block: var(--sp2);
+      padding-inline-start: 0;
+      padding-inline-end: 0;
     }
   }
 }
@@ -188,14 +211,18 @@
   Top level specific styles.
 */
 .primary-nav__menu--level-1 {
-  margin: 0;
-  padding: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
 
   @media (--nav) {
     body:not(.is-always-mobile-nav) & {
       display: flex;
       align-items: stretch;
-      margin-right: var(--sp);
+      margin-inline-end: var(--sp);
     }
   }
 }
@@ -208,10 +235,12 @@
       align-items: center;
       width: max-content;
       max-width: 200px;
-      margin: 0;
+      margin-block: 0;
+      margin-inline-start: 0;
+      margin-inline-end: 0;
 
       &:not(:last-child) {
-        margin-right: var(--sp2);
+        margin-inline-end: var(--sp2);
       }
 
       html:not(.js) &:hover {
@@ -250,11 +279,11 @@
   overflow: hidden;
   flex-basis: 100%;
   max-height: 0;
-  margin-left: calc(-1 * var(--sp));
-  padding-left: var(--sp2-5);
+  margin-inline-start: calc(-1 * var(--sp));
+  padding-inline-start: var(--sp2-5);
   transition: opacity 0.2s, visibility 0.2s, max-height 0.2s;
   opacity: 0;
-  border-left: solid var(--sp) var(--color--blue-50);
+  border-inline-start: solid var(--sp) var(--color--blue-50);
 
   html:not(.js) & {
     visibility: visible;
@@ -265,37 +294,42 @@
   &.is-active {
     visibility: visible;
     max-height: none;
-    margin-top: var(--sp1-5);
+    margin-block-start: var(--sp1-5);
     opacity: 1;
 
     @media (--nav) {
       body:not(.is-always-mobile-nav) & {
-        margin-top: 0;
+        margin-block-start: 0;
       }
     }
   }
 
   @media (--md) {
-    margin-left: calc(-1 * var(--sp3));
-    padding-left: var(--sp3);
+    margin-inline-start: calc(-1 * var(--sp3));
+    padding-inline-start: var(--sp3);
   }
 
   @media (--nav) {
     body:not(.is-always-mobile-nav) & {
       position: absolute;
       z-index: 5; /* Appear above search container. */
+      /* stylelint-disable csstools/use-logical */
       top: calc(100% - (0.5 * var(--sp)));
       left: 50%;
+      /* stylelint-enable csstools/use-logical */
       visibility: hidden;
       overflow: visible;
       width: 250px;
       max-height: none;
-      margin-top: 0;
-      margin-left: 0;
-      padding: calc(3 * var(--sp)) var(--sp2);
+      margin-block-start: 0;
+      margin-inline-start: 0;
+      padding-block: calc(3 * var(--sp));
+      padding-inline-start: var(--sp2);
+      padding-inline-end: var(--sp2);
       transition: none;
       transform: translate(-50%, -20px);
       opacity: 0;
+      /* Intentionaly not using CSS logical properties. */
       border-top: solid var(--color--blue-50) var(--sp0-5);
       border-right: solid 1px transparent; /* Transparent borders useful for Windows High Contrast mode. */
       border-bottom: solid 1px transparent;
@@ -307,12 +341,15 @@
       /* Arrow */
       &:after {
         position: absolute;
+        /* stylelint-disable csstools/use-logical */
         bottom: calc(100% + (0.5 * var(--sp)));
         left: 50%;
+        /* stylelint-enable csstools/use-logical */
         width: 0;
         height: 0;
         content: "";
         transform: translateX(-50%);
+        /* Intentionaly not using CSS logical properties. */
         border-right: solid 10px transparent;
         border-bottom: solid 10px var(--color--blue-50);
         border-left: solid 10px transparent;
diff --git a/css/components/nav-secondary.css b/css/components/nav-secondary.css
index 1240911..d7aad19 100644
--- a/css/components/nav-secondary.css
+++ b/css/components/nav-secondary.css
@@ -78,17 +78,13 @@
 
 .secondary-nav__wrapper {
   display: flex;
-}
-
-[dir] .secondary-nav__wrapper {
-  margin: 36px 0;
+  margin-top: 36px;
+  margin-bottom: 36px;
 }
 
 @media (min-width: 1200px) {
     body:not(.is-always-mobile-nav) .secondary-nav__wrapper {
       justify-content: flex-end;
-    }
-    [dir] body:not(.is-always-mobile-nav) .secondary-nav__wrapper {
       margin: 0;
     }
   }
@@ -99,17 +95,48 @@
   font-weight: 600;
 }
 
+[dir="ltr"] .secondary-nav ul.menu {
+    margin-left: 0;
+}
+
+[dir="rtl"] .secondary-nav ul.menu {
+    margin-right: 0;
+}
+
+[dir="ltr"] .secondary-nav ul.menu {
+    margin-right: 0;
+}
+
+[dir="rtl"] .secondary-nav ul.menu {
+    margin-left: 0;
+}
+
+[dir="ltr"] .secondary-nav ul.menu {
+    padding-left: 0;
+}
+
+[dir="rtl"] .secondary-nav ul.menu {
+    padding-right: 0;
+}
+
+[dir="ltr"] .secondary-nav ul.menu {
+    padding-right: 0;
+}
+
+[dir="rtl"] .secondary-nav ul.menu {
+    padding-left: 0;
+}
+
 .secondary-nav ul.menu {
     display: flex;
     align-items: center;
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-top: 0;
+    padding-bottom: 0;
     list-style: none;
   }
 
-[dir] .secondary-nav ul.menu {
-    margin: 0;
-    padding: 0;
-  }
-
 .secondary-nav ul.menu li {
       /* Parent element is set to flex-basis: 0. We
        * don't want text to wrap unless it goes over a
@@ -122,21 +149,21 @@
       max-width: 200px;
     }
 
-[dir=ltr] .secondary-nav ul.menu li:not(:last-child) {
-  margin-right: 27px;
-      }
+[dir="ltr"] .secondary-nav ul.menu li:not(:last-child) {
+        margin-right: 27px;
+}
 
-[dir=rtl] .secondary-nav ul.menu li:not(:last-child) {
+[dir="rtl"] .secondary-nav ul.menu li:not(:last-child) {
         margin-left: 27px;
-      }
+}
 
 @media (min-width: 1200px) {
-          [dir=ltr] body:not(.is-always-mobile-nav) .secondary-nav ul.menu li:not(:last-child) {
-    margin-right: 36px;
-          }
-          [dir=rtl] body:not(.is-always-mobile-nav) .secondary-nav ul.menu li:not(:last-child) {
+          [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav ul.menu li:not(:last-child) {
+            margin-right: 36px;
+  }
+          [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav ul.menu li:not(:last-child) {
             margin-left: 36px;
-          }
+  }
         }
 
 .secondary-nav ul.menu a:not(.button--primary) {
@@ -150,33 +177,23 @@
 
 .secondary-nav ul.menu a:not(.button--primary):after {
         position: absolute;
+        /* stylelint-disable csstools/use-logical */
         bottom: 0;
+        left: 0;
+        /* stylelint-enable csstools/use-logical */
         width: 100%;
         height: 0;
         content: "";
         transition: opacity 0.2s, transform 0.2s;
-        opacity: 0;
-      }
-
-[dir] .secondary-nav ul.menu a:not(.button--primary):after {
         transform: translateY(5px);
+        opacity: 0;
+        /* Intentionaly not using CSS logical properties. */
         border-top: solid 2px currentColor;
       }
 
-[dir=ltr] .secondary-nav ul.menu a:not(.button--primary):after {
-  left: 0;
-      }
-
-[dir=rtl] .secondary-nav ul.menu a:not(.button--primary):after {
-        right: 0;
-      }
-
 .secondary-nav ul.menu a:not(.button--primary):focus:after, .secondary-nav ul.menu a:not(.button--primary):hover:after {
-          opacity: 0.8;
-        }
-
-[dir] .secondary-nav ul.menu a:not(.button--primary):focus:after, [dir] .secondary-nav ul.menu a:not(.button--primary):hover:after {
           transform: translateY(0);
+          opacity: 0.8;
         }
 
 @media (min-width: 1200px) {
@@ -185,18 +202,30 @@
 
     /* If the secondary nav is the first item within the header, it does not need left separator. */
 }
+    [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav {
+      margin-left: 18px;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav {
+      margin-right: 18px;
+  }
+    [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav {
+      padding-left: 36px;
+  }
+    [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav {
+      padding-right: 36px;
+  }
     body:not(.is-always-mobile-nav) .secondary-nav {
       position: relative;
       display: flex;
     }
-    [dir=ltr] body:not(.is-always-mobile-nav) .secondary-nav {
-    margin-left: 18px;
-    padding-left: 36px;
-    }
-    [dir=rtl] body:not(.is-always-mobile-nav) .secondary-nav {
-      margin-right: 18px;
-      padding-right: 36px;
-    }
+
+      [dir="ltr"] body:not(.is-always-mobile-nav) .secondary-nav:before {
+        left: 0;
+  }
+
+      [dir="rtl"] body:not(.is-always-mobile-nav) .secondary-nav:before {
+        right: 0;
+  }
 
       body:not(.is-always-mobile-nav) .secondary-nav:before {
         position: absolute;
@@ -204,20 +233,9 @@
         width: 2px;
         height: 36px;
         content: "";
-      }
-
-      [dir] body:not(.is-always-mobile-nav) .secondary-nav:before {
         transform: translateY(-50%);
         background-color: #d7e1e8;
       }
-
-      [dir=ltr] body:not(.is-always-mobile-nav) .secondary-nav:before {
-    left: 0;
-      }
-
-      [dir=rtl] body:not(.is-always-mobile-nav) .secondary-nav:before {
-        right: 0;
-      }
     body:not(.is-always-mobile-nav) .secondary-nav__wrapper:first-child .secondary-nav:before {
       content: none;
     }
diff --git a/css/components/nav-secondary.pcss.css b/css/components/nav-secondary.pcss.css
index ff5545f..97f316a 100644
--- a/css/components/nav-secondary.pcss.css
+++ b/css/components/nav-secondary.pcss.css
@@ -7,7 +7,8 @@
 
 .secondary-nav__wrapper {
   display: flex;
-  margin: var(--sp2) 0;
+  margin-block-start: var(--sp2);
+  margin-block-end: var(--sp2);
 
   @media (--nav) {
     body:not(.is-always-mobile-nav) & {
@@ -25,8 +26,12 @@
   ul.menu {
     display: flex;
     align-items: center;
-    margin: 0;
-    padding: 0;
+    margin-block: 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    padding-block: 0;
+    padding-inline-start: 0;
+    padding-inline-end: 0;
     list-style: none;
 
     li {
@@ -40,11 +45,11 @@
       max-width: 200px;
 
       &:not(:last-child) {
-        margin-right: var(--sp1-5);
+        margin-inline-end: var(--sp1-5);
 
         @media (--nav) {
           body:not(.is-always-mobile-nav) & {
-            margin-right: var(--sp2);
+            margin-inline-end: var(--sp2);
           }
         }
       }
@@ -60,14 +65,17 @@
 
       &:after {
         position: absolute;
+        /* stylelint-disable csstools/use-logical */
         bottom: 0;
         left: 0;
+        /* stylelint-enable csstools/use-logical */
         width: 100%;
         height: 0;
         content: "";
         transition: opacity 0.2s, transform 0.2s;
         transform: translateY(5px);
         opacity: 0;
+        /* Intentionaly not using CSS logical properties. */
         border-top: solid 2px currentColor;
       }
 
@@ -85,13 +93,13 @@
     body:not(.is-always-mobile-nav) & {
       position: relative;
       display: flex;
-      margin-left: var(--sp);
-      padding-left: var(--sp2);
+      margin-inline-start: var(--sp);
+      padding-inline-start: var(--sp2);
 
       &:before {
         position: absolute;
-        top: 50%;
-        left: 0;
+        inset-block-start: 50%;
+        inset-inline-start: 0;
         width: 2px;
         height: var(--sp2);
         content: "";
diff --git a/css/components/node-preview-container.css b/css/components/node-preview-container.css
index 6e0d6c9..b0e01a4 100644
--- a/css/components/node-preview-container.css
+++ b/css/components/node-preview-container.css
@@ -76,19 +76,33 @@
   /* Form */
 }
 
-[dir] .node-preview-container {
-  padding: 0 9px;
-  background: #fff;
+[dir="ltr"] .node-preview-container {
+  padding-left: 9px;
 }
 
-[dir=ltr] .node-preview-container {
-  box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08);
+[dir="rtl"] .node-preview-container {
+  padding-right: 9px;
+}
+
+[dir="ltr"] .node-preview-container {
+  padding-right: 9px;
 }
 
-[dir=rtl] .node-preview-container {
-  box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08);
+[dir="rtl"] .node-preview-container {
+  padding-left: 9px;
+}
+
+.node-preview-container {
+  padding-top: 0;
+  padding-bottom: 0;
+  background: #fff;
+  box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08);
 }
 
+[dir="rtl"] .node-preview-container {
+    box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08);
+  }
+
 body.toolbar-vertical.toolbar-tray-open .node-preview-container {
     max-width: calc(100vw - 254px);
   }
@@ -99,10 +113,23 @@ body.toolbar-vertical.toolbar-tray-open .node-preview-container {
   align-items: center;
 }
 
-[dir=ltr] .node-preview-backlink {
-  margin: 9px auto 9px 0;
+[dir="ltr"] .node-preview-backlink {
+  margin-left: 0;
+}
+
+[dir="rtl"] .node-preview-backlink {
+  margin-right: 0;
+}
+
+[dir="ltr"] .node-preview-backlink {
+  margin-right: auto;
+}
+
+[dir="rtl"] .node-preview-backlink {
+  margin-left: auto;
 }
 
-[dir=rtl] .node-preview-backlink {
-  margin: 9px 0 9px auto;
+.node-preview-backlink {
+  margin-top: 9px;
+  margin-bottom: 9px;
 }
diff --git a/css/components/node-preview-container.pcss.css b/css/components/node-preview-container.pcss.css
index 3decd83..b454c6f 100644
--- a/css/components/node-preview-container.pcss.css
+++ b/css/components/node-preview-container.pcss.css
@@ -6,10 +6,16 @@
 @import "../base/variables.pcss.css";
 
 .node-preview-container {
-  padding: 0 var(--sp0-5);
+  padding-block: 0;
+  padding-inline-start: var(--sp0-5);
+  padding-inline-end: var(--sp0-5);
   background: var(--color--white);
   box-shadow: -36px 1px 36px rgba(0, 0, 0, 0.08);
 
+  [dir="rtl"] & {
+    box-shadow: 36px 1px 36px rgba(0, 0, 0, 0.08);
+  }
+
   body.toolbar-vertical.toolbar-tray-open & {
     max-width: calc(100vw - var(--toolbar-tray-vertical-width) - var(--scrollbar-width));
   }
@@ -22,5 +28,7 @@
 }
 
 .node-preview-backlink {
-  margin: var(--sp0-5) auto var(--sp0-5) 0;
+  margin-block: var(--sp0-5);
+  margin-inline-start: 0;
+  margin-inline-end: auto;
 }
diff --git a/css/components/node-teaser.css b/css/components/node-teaser.css
index 48c7bfd..6c7e958 100644
--- a/css/components/node-teaser.css
+++ b/css/components/node-teaser.css
@@ -78,9 +78,6 @@
 
 .node--view-mode-teaser {
   position: relative; /* Anchor after pseudo-element. */
-}
-
-[dir] .node--view-mode-teaser {
   margin-bottom: 27px;
 }
 
@@ -90,17 +87,15 @@
     width: 54px;
     height: 0;
     content: "";
-  }
-
-[dir] .node--view-mode-teaser:after {
+    /* Intentionaly not using CSS logical properties. */
     border-top: solid 2px #e7edf1;
   }
 
-[dir] .views-row:last-child .node--view-mode-teaser {
+.views-row:last-child .node--view-mode-teaser {
     margin-bottom: 0;
   }
 
-[dir] .node--view-mode-teaser .node__meta {
+.node--view-mode-teaser .node__meta {
     margin-bottom: 18px;
   }
 
@@ -112,33 +107,29 @@
 .node--view-mode-teaser .node__top-wrapper {
     display: flex;
     align-items: center;
-  }
-
-[dir] .node--view-mode-teaser .node__top-wrapper {
-    margin: 0 0 18px;
+    margin: 0;
+    margin-bottom: 18px;
   }
 
 @media (min-width: 1000px) {
 
 .node--view-mode-teaser .node__top-wrapper {
-      position: relative /* Anchor the image */
-  }
-
-[dir] .node--view-mode-teaser .node__top-wrapper {
+      position: relative; /* Anchor the image */
       margin: 0
   }
     }
 
-.node--view-mode-teaser .field--name-field-image {
-    flex-shrink: 0;
-  }
+[dir="ltr"] .node--view-mode-teaser .field--name-field-image {
+    margin-right: 18px;
+}
 
-[dir=ltr] .node--view-mode-teaser .field--name-field-image {
-  margin: 0  18px 0 0;
-  }
+[dir="rtl"] .node--view-mode-teaser .field--name-field-image {
+    margin-left: 18px;
+}
 
-[dir=rtl] .node--view-mode-teaser .field--name-field-image {
-    margin: 0  0 0 18px;
+.node--view-mode-teaser .field--name-field-image {
+    flex-shrink: 0;
+    margin: 0;
   }
 
 .node--view-mode-teaser .field--name-field-image img {
@@ -146,9 +137,6 @@
       height: 63px;
       -o-object-fit: cover;
       object-fit: cover;
-    }
-
-[dir] .node--view-mode-teaser .field--name-field-image img {
       border-radius: 50%;
     }
 
@@ -178,87 +166,115 @@
 
 @media (min-width: 1000px) {
 
-.node--view-mode-teaser .field--name-field-image {
-      position: absolute;
-      top: 0
+[dir="ltr"] .node--view-mode-teaser .field--name-field-image {
+      left: calc(-1*((100vw - 519px)/14 + 36px));
   }
 
-[dir=ltr] .node--view-mode-teaser .field--name-field-image {
-    left: calc(-1*((100vw - 519px)/14 + 36px))
+[dir="rtl"] .node--view-mode-teaser .field--name-field-image {
+      right: calc(-1*((100vw - 519px)/14 + 36px));
   }
 
-[dir=rtl] .node--view-mode-teaser .field--name-field-image {
-      right: calc(-1*((100vw - 519px)/14 + 36px))
+.node--view-mode-teaser .field--name-field-image {
+      position: absolute;
+      top: 0
   }
     }
 
 @media (min-width: 1200px) {
 
-[dir=ltr] .node--view-mode-teaser .field--name-field-image {
-    left: calc(-1*((100vw - 645px)/14 + 36px))
+[dir="ltr"] .node--view-mode-teaser .field--name-field-image {
+      left: calc(-1*((100vw - 645px)/14 + 36px));
   }
 
-[dir=rtl] .node--view-mode-teaser .field--name-field-image {
-      right: calc(-1*((100vw - 645px)/14 + 36px))
+[dir="rtl"] .node--view-mode-teaser .field--name-field-image {
+      right: calc(-1*((100vw - 645px)/14 + 36px));
   }
     }
 
 @media (min-width: 1440px) {
 
-[dir=ltr] .node--view-mode-teaser .field--name-field-image {
-    left: -93.85714px
+[dir="ltr"] .node--view-mode-teaser .field--name-field-image {
+      left: -93.85714px;
   }
 
-[dir=rtl] .node--view-mode-teaser .field--name-field-image {
-      right: -93.85714px
+[dir="rtl"] .node--view-mode-teaser .field--name-field-image {
+      right: -93.85714px;
   }
     }
 
 @media (min-width: 1000px) {
 
-[dir] .node--view-mode-teaser .field--name-field-image {
+.node--view-mode-teaser .field--name-field-image {
       margin: 0
   }
     }
 
 .node--view-mode-teaser .node__title {
+    margin: 0;
     color: #0d1214;
     font-size: 1.5rem;
     line-height: 1.6875rem;
   }
 
-[dir] .node--view-mode-teaser .node__title {
-    margin: 0;
-  }
-
 @media (min-width: 1000px) {
 
 .node--view-mode-teaser .node__title {
+      margin-bottom: 18px;
       font-size: 2.25rem;
       line-height: 3.375rem
   }
-
-[dir] .node--view-mode-teaser .node__title {
-      margin-bottom: 18px
-  }
     }
 
-[dir] .node--view-mode-teaser .field--tag-ref {
-    margin: 18px 0 0;
-    padding: 0;
+[dir="ltr"] .node--view-mode-teaser .field--tag-ref {
+    margin-left: 0;
+}
+
+[dir="rtl"] .node--view-mode-teaser .field--tag-ref {
+    margin-right: 0;
+}
+
+[dir="ltr"] .node--view-mode-teaser .field--tag-ref {
+    margin-right: 0;
+}
+
+[dir="rtl"] .node--view-mode-teaser .field--tag-ref {
+    margin-left: 0;
+}
+
+[dir="ltr"] .node--view-mode-teaser .field--tag-ref {
+    padding-left: 0;
+}
+
+[dir="rtl"] .node--view-mode-teaser .field--tag-ref {
+    padding-right: 0;
+}
+
+[dir="ltr"] .node--view-mode-teaser .field--tag-ref {
+    padding-right: 0;
+}
+
+[dir="rtl"] .node--view-mode-teaser .field--tag-ref {
+    padding-left: 0;
+}
+
+.node--view-mode-teaser .field--tag-ref {
+    margin-top: 18px;
+    margin-bottom: 0;
+    padding-top: 0;
+    padding-bottom: 0;
     background-color: transparent;
   }
 
 @media (min-width: 1000px) {
 
-[dir] .node--view-mode-teaser .field--tag-ref {
-      margin: 36px 0 0
+.node--view-mode-teaser .field--tag-ref {
+      margin-top: 36px
   }
     }
 
 @media (min-width: 1000px) {
 
-[dir] .node--view-mode-teaser {
+.node--view-mode-teaser {
     margin-bottom: 54px
 }
   }
diff --git a/css/components/node-teaser.pcss.css b/css/components/node-teaser.pcss.css
index 43818e4..b722ddc 100644
--- a/css/components/node-teaser.pcss.css
+++ b/css/components/node-teaser.pcss.css
@@ -7,23 +7,24 @@
 
 .node--view-mode-teaser {
   position: relative; /* Anchor after pseudo-element. */
-  margin-bottom: var(--sp1-5);
+  margin-block-end: var(--sp1-5);
 
   &:after {
     position: absolute;
-    bottom: 0;
+    inset-block-end: 0;
     width: var(--sp3);
     height: 0;
     content: "";
+    /* Intentionaly not using CSS logical properties. */
     border-top: solid 2px var(--color--gray-80);
   }
 
   .views-row:last-child & {
-    margin-bottom: 0;
+    margin-block-end: 0;
   }
 
   .node__meta {
-    margin-bottom: var(--sp);
+    margin-block-end: var(--sp);
 
     a {
       color: var(--color--blue-20);
@@ -34,7 +35,8 @@
   .node__top-wrapper {
     display: flex;
     align-items: center;
-    margin: 0 0 var(--sp1);
+    margin: 0;
+    margin-block-end: var(--sp1);
 
     @media (--lg) {
       position: relative; /* Anchor the image */
@@ -44,7 +46,8 @@
 
   .field--name-field-image {
     flex-shrink: 0;
-    margin: 0  var(--sp1) 0 0;
+    margin: 0;
+    margin-inline-end: var(--sp1);
 
     img {
       width: calc(3.5 * var(--sp));
@@ -70,16 +73,16 @@
 
     @media (--lg) {
       position: absolute;
-      top: 0;
-      left: calc(-1 * ((var(--grid-col-width--lg) + var(--grid-gap--lg))));
+      inset-block-start: 0;
+      inset-inline-start: calc(-1 * ((var(--grid-col-width--lg) + var(--grid-gap--lg))));
     }
 
     @media (--nav) {
-      left: calc(-1 * ((var(--grid-col-width--nav) + var(--grid-gap--nav))));
+      inset-inline-start: calc(-1 * ((var(--grid-col-width--nav) + var(--grid-gap--nav))));
     }
 
     @media (--grid-max) {
-      left: calc(-1 * ((var(--grid-col-width--max) + var(--grid-gap--max))));
+      inset-inline-start: calc(-1 * ((var(--grid-col-width--max) + var(--grid-gap--max))));
     }
 
     @media (--lg) {
@@ -94,23 +97,28 @@
     line-height: var(--line-height-base);
 
     @media (--lg) {
-      margin-bottom: var(--sp1);
+      margin-block-end: var(--sp1);
       font-size: var(--sp2);
       line-height: var(--sp3);
     }
   }
 
   .field--tag-ref {
-    margin: var(--sp1) 0 0;
-    padding: 0;
+    margin-block-start: var(--sp1);
+    margin-block-end: 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    padding-block: 0;
+    padding-inline-start: 0;
+    padding-inline-end: 0;
     background-color: transparent;
 
     @media (--lg) {
-      margin: var(--sp2) 0 0;
+      margin-block-start: var(--sp2);
     }
   }
 
   @media (--lg) {
-    margin-bottom: var(--sp3);
+    margin-block-end: var(--sp3);
   }
 }
diff --git a/css/components/node.css b/css/components/node.css
index 9a22de4..d211cb2 100644
--- a/css/components/node.css
+++ b/css/components/node.css
@@ -79,13 +79,18 @@
 .node__meta {
   display: flex;
   align-items: center;
+  margin-bottom: 18px;
   color: #6e7172;
   font-size: 0.875rem;
   line-height: 1.125rem;
 }
 
-[dir] .node__meta {
-  margin-bottom: 18px;
+[dir="ltr"] .node__meta .field--name-user-picture img {
+    margin-right: 9px;
+}
+
+[dir="rtl"] .node__meta .field--name-user-picture img {
+    margin-left: 9px;
 }
 
 .node__meta .field--name-user-picture img {
@@ -93,52 +98,35 @@
     height: 45px;
     -o-object-fit: cover;
     object-fit: cover;
-  }
-
-[dir] .node__meta .field--name-user-picture img {
     border-radius: 50%;
   }
 
-[dir=ltr] .node__meta .field--name-user-picture img {
-  margin-right: 9px;
-  }
-
-[dir=rtl] .node__meta .field--name-user-picture img {
-    margin-left: 9px;
-  }
-
 .node__meta a {
     font-weight: bold;
   }
 
 @media (min-width: 500px) {
 
-[dir] .node__meta {
+.node__meta {
     margin-bottom: 36px
 }
   }
 
 .node__title a {
+    padding-bottom: 3px;
     transition: background-size 0.2s, color 0.2s;
     text-decoration: none;
-    color: #0d1214; /* Two values are needed for IE11 support. */
-  }
-
-[dir] .node__title a {
-    padding-bottom: 3px;
+    color: #0d1214;
     background-color: transparent;
-    background-image: linear-gradient(#2494db, #2494db);
+    background-image: linear-gradient(#2494db, #2494db); /* Two values are needed for IE11 support. */
     background-repeat: no-repeat;
+    background-position: bottom left; /* LTR */
     background-size: 0 3px;
   }
 
-[dir=ltr] .node__title a {
-  background-position: bottom left;
-  }
-
-[dir=rtl] .node__title a {
-    background-position: bottom right;
-  }
+[dir="rtl"] .node__title a {
+      background-position: bottom right;
+    }
 
 .node__title a:hover {
       color: #0d77b5;
@@ -147,9 +135,6 @@
 .node__title a:focus {
       color: #0d77b5;
       outline: 0;
-    }
-
-[dir] .node__title a:focus {
       background-size: 100% 3px;
     }
 
@@ -161,13 +146,13 @@
     }
       }
 
-[dir] .node__content {
+.node__content {
   padding-bottom: 27px;
 }
 
 @media (min-width: 1000px) {
 
-[dir] .node__content {
+.node__content {
     padding-bottom: 54px
 }
   }
diff --git a/css/components/node.pcss.css b/css/components/node.pcss.css
index 79879ff..36a5cc1 100644
--- a/css/components/node.pcss.css
+++ b/css/components/node.pcss.css
@@ -8,7 +8,7 @@
 .node__meta {
   display: flex;
   align-items: center;
-  margin-bottom: var(--sp1);
+  margin-block-end: var(--sp1);
   color: var(--color--gray-20);
   font-size: 14px;
   line-height: var(--sp);
@@ -16,7 +16,7 @@
   .field--name-user-picture img {
     width: var(--sp2-5);
     height: var(--sp2-5);
-    margin-right: var(--sp0-5);
+    margin-inline-end: var(--sp0-5);
     object-fit: cover;
     border-radius: 50%;
   }
@@ -26,22 +26,26 @@
   }
 
   @media (--sm) {
-    margin-bottom: var(--sp2);
+    margin-block-end: var(--sp2);
   }
 }
 
 .node__title {
   a {
-    padding-bottom: 3px;
+    padding-block-end: 3px;
     transition: background-size 0.2s, color 0.2s;
     text-decoration: none;
     color: var(--color--gray-0);
     background-color: transparent;
     background-image: linear-gradient(var(--color--blue-50), var(--color--blue-50)); /* Two values are needed for IE11 support. */
     background-repeat: no-repeat;
-    background-position: bottom left;
+    background-position: bottom left; /* LTR */
     background-size: 0 3px;
 
+    [dir="rtl"] & {
+      background-position: bottom right;
+    }
+
     &:hover {
       color: var(--color--blue-20);
     }
@@ -60,9 +64,9 @@
 }
 
 .node__content {
-  padding-bottom: var(--sp1-5);
+  padding-block-end: var(--sp1-5);
 
   @media (--lg) {
-    padding-bottom: var(--sp3);
+    padding-block-end: var(--sp3);
   }
 }
diff --git a/css/components/offcanvas.css b/css/components/offcanvas.css
index d829242..1d68ed7 100644
--- a/css/components/offcanvas.css
+++ b/css/components/offcanvas.css
@@ -83,28 +83,25 @@
   /* Form */
 }
 
-#drupal-off-canvas .form-type--boolean {
-    line-height: var(--line-height-s);
-  }
-
-[dir=ltr] #drupal-off-canvas .form-type--boolean {
-  margin-left: 0;
-  }
+[dir="ltr"] #drupal-off-canvas .form-type--boolean {
+    margin-left: 0;
+}
 
-[dir=rtl] #drupal-off-canvas .form-type--boolean {
+[dir="rtl"] #drupal-off-canvas .form-type--boolean {
     margin-right: 0;
+}
+
+#drupal-off-canvas .form-type--boolean {
+    line-height: var(--line-height-s);
   }
 
 #drupal-off-canvas .form-type--boolean input[type="checkbox"],
     #drupal-off-canvas .form-type--boolean input[type="radio"] {
+      float: none;
       width: var(--sp0-75);
       height: var(--sp0-75);
-      vertical-align: middle;
-    }
-
-[dir] #drupal-off-canvas .form-type--boolean input[type="checkbox"], [dir] #drupal-off-canvas .form-type--boolean input[type="radio"] {
-      float: none;
       transform: none;
+      vertical-align: middle;
     }
 
 #drupal-off-canvas #drupal-off-canvas .form-type--boolean input[type="checkbox"] + .form-item__label, #drupal-off-canvas #drupal-off-canvas .form-type--boolean input[type="radio"] + .form-item__label {
@@ -112,10 +109,10 @@
           vertical-align: middle;
         }
 
-[dir=ltr] #drupal-off-canvas .form-type--boolean .form-item__description {
-  margin-left: 0;
-    }
+[dir="ltr"] #drupal-off-canvas .form-type--boolean .form-item__description {
+      margin-left: 0;
+}
 
-[dir=rtl] #drupal-off-canvas .form-type--boolean .form-item__description {
+[dir="rtl"] #drupal-off-canvas .form-type--boolean .form-item__description {
       margin-right: 0;
-    }
+}
diff --git a/css/components/offcanvas.pcss.css b/css/components/offcanvas.pcss.css
index 775bc6e..d149eb5 100644
--- a/css/components/offcanvas.pcss.css
+++ b/css/components/offcanvas.pcss.css
@@ -7,7 +7,7 @@
 
 #drupal-off-canvas {
   .form-type--boolean {
-    margin-left: 0;
+    margin-inline-start: 0;
     line-height: var(--line-height-s);
 
     input[type="checkbox"],
@@ -27,7 +27,7 @@
     }
 
     .form-item__description {
-      margin-left: 0;
+      margin-inline-start: 0;
     }
   }
 }
diff --git a/css/components/pager.css b/css/components/pager.css
index 803a1fe..c6a3101 100644
--- a/css/components/pager.css
+++ b/css/components/pager.css
@@ -76,30 +76,50 @@
   /* Form */
 }
 
+[dir="ltr"] .pager__items {
+  margin-left: 0;
+}
+
+[dir="rtl"] .pager__items {
+  margin-right: 0;
+}
+
+[dir="ltr"] .pager__items {
+  padding-left: 0;
+}
+
+[dir="rtl"] .pager__items {
+  padding-right: 0;
+}
+
+[dir="ltr"] .pager__items {
+  padding-right: 0;
+}
+
+[dir="rtl"] .pager__items {
+  padding-left: 0;
+}
+
 .pager__items {
   display: flex;
   flex-wrap: wrap;
   align-items: flex-end;
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-top: 0;
+  padding-bottom: 0;
   list-style: none;
   font-weight: bold;
 }
 
-[dir] .pager__items {
-  margin: 0;
-  padding: 0;
-}
-
 .pager__item {
   display: flex;
   align-items: center;
   justify-content: center;
   width: 45px;
   height: 45px;
-  color: #6e7172;
-}
-
-[dir] .pager__item {
   cursor: default;
+  color: #6e7172;
   background-color: #fff;
 }
 
@@ -117,9 +137,6 @@
 
 .pager__item--active {
   color: #fff;
-}
-
-[dir] .pager__item--active {
   background-color: #0d77b5;
 }
 
@@ -131,22 +148,16 @@
   height: 100%;
   text-decoration: none;
   color: #6e7172;
-  outline: none;
-}
-
-[dir] .pager__link {
   border: 2px solid transparent;
+  outline: none;
 }
 
-[dir] .pager__link:hover {
+.pager__link:hover {
   background-color: #e7edf1;
 }
 
 .pager__link:focus {
   color: #0d77b5;
-}
-
-[dir] .pager__link:focus {
   border-color: #0d77b5;
 }
 
@@ -155,10 +166,7 @@
   fill: currentColor;
 }
 
-[dir=ltr] .pager__item--next svg, [dir=ltr] .pager__item--last svg {
+.pager__item--next svg,
+.pager__item--last svg {
   transform: rotate(180deg);
 }
-
-[dir=rtl] .pager__item--next svg, [dir=rtl] .pager__item--last svg {
-  transform: rotate(-180deg);
-}
diff --git a/css/components/pager.pcss.css b/css/components/pager.pcss.css
index 6ae0a49..34f5134 100644
--- a/css/components/pager.pcss.css
+++ b/css/components/pager.pcss.css
@@ -9,8 +9,11 @@
   display: flex;
   flex-wrap: wrap;
   align-items: flex-end;
-  margin: 0;
-  padding: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
   font-weight: bold;
 }
diff --git a/css/components/powered-by-block.css b/css/components/powered-by-block.css
index c67624f..04a1321 100644
--- a/css/components/powered-by-block.css
+++ b/css/components/powered-by-block.css
@@ -96,22 +96,19 @@
       color: #fff;
     }
 
+[dir="ltr"] .block-system-powered-by-block .drupal-logo {
+    margin-left: 4.5px;
+}
+
+[dir="rtl"] .block-system-powered-by-block .drupal-logo {
+    margin-right: 4.5px;
+}
+
 .block-system-powered-by-block .drupal-logo {
     display: inline-block;
-  }
-
-[dir] .block-system-powered-by-block .drupal-logo {
     margin-top: -4.5px;
   }
 
-[dir=ltr] .block-system-powered-by-block .drupal-logo {
-  margin-left: 4.5px;
-  }
-
-[dir=rtl] .block-system-powered-by-block .drupal-logo {
-    margin-right: 4.5px;
-  }
-
 .block-system-powered-by-block svg {
     width: 0.875rem; /* 14 */
     height: 1.1875rem; /* 19 */
diff --git a/css/components/powered-by-block.pcss.css b/css/components/powered-by-block.pcss.css
index ce299c9..d1321e2 100644
--- a/css/components/powered-by-block.pcss.css
+++ b/css/components/powered-by-block.pcss.css
@@ -26,8 +26,8 @@
 
   .drupal-logo {
     display: inline-block;
-    margin-top: calc(-1 * var(--sp) / 4);
-    margin-left: calc(var(--sp) / 4);
+    margin-block-start: calc(-1 * var(--sp) / 4);
+    margin-inline-start: calc(var(--sp) / 4);
   }
 
   svg {
diff --git a/css/components/progress.css b/css/components/progress.css
index 91b30e1..47c8a31 100644
--- a/css/components/progress.css
+++ b/css/components/progress.css
@@ -79,17 +79,11 @@
 .progress__track {
   overflow: hidden;
   height: 18px;
-}
-
-[dir] .progress__track {
   border: 1px solid #0d77b5;
   border-radius: 2px;
 }
 
 .progress__bar {
   height: 18px;
-}
-
-[dir] .progress__bar {
   background-color: #0d77b5;
 }
diff --git a/css/components/search-results.css b/css/components/search-results.css
index 6bd30f2..e9c1288 100644
--- a/css/components/search-results.css
+++ b/css/components/search-results.css
@@ -76,52 +76,74 @@
   /* Form */
 }
 
-.search-results {
-  list-style: none;
+[dir="ltr"] .search-results {
+  padding-left: 0;
+}
+
+[dir="rtl"] .search-results {
+  padding-right: 0;
+}
+
+[dir="ltr"] .search-results {
+  padding-right: 0;
 }
 
-[dir] .search-results {
+[dir="rtl"] .search-results {
+  padding-left: 0;
+}
+
+.search-results {
   margin-bottom: 36px;
-  padding: 0;
+  padding-top: 0;
+  padding-bottom: 0;
+  list-style: none;
 }
 
 @media (min-width: 700px) {
 
-[dir] .search-results {
+.search-results {
     margin-bottom: 54px
 }
   }
 
+[dir="ltr"] .search-result__title {
+  margin-left: 0;
+}
+
+[dir="rtl"] .search-result__title {
+  margin-right: 0;
+}
+
+[dir="ltr"] .search-result__title {
+  margin-right: 0;
+}
+
+[dir="rtl"] .search-result__title {
+  margin-left: 0;
+}
+
 .search-result__title {
+  margin-top: 0;
+  margin-bottom: 0;
   color: #0d1214;
   font-size: 1.25rem;
   line-height: 1.6875rem;
 }
 
-[dir] .search-result__title {
-  margin: 0;
-}
-
 .search-result__title a {
-    transition: background-size 0.2s, color 0.2s;
-    text-decoration: none; /* Two values are needed for IE11 support. */
-  }
-
-[dir] .search-result__title a {
     padding-bottom: 3px;
+    transition: background-size 0.2s, color 0.2s;
+    text-decoration: none;
     background-color: transparent;
-    background-image: linear-gradient(#2494db, #2494db);
+    background-image: linear-gradient(#2494db, #2494db); /* Two values are needed for IE11 support. */
     background-repeat: no-repeat;
+    background-position: bottom left; /* LTR */
     background-size: 0 3px;
   }
 
-[dir=ltr] .search-result__title a {
-  background-position: bottom left;
-  }
-
-[dir=rtl] .search-result__title a {
-    background-position: bottom right;
-  }
+[dir="rtl"] .search-result__title a {
+      background-position: bottom right;
+    }
 
 .search-result__title a:hover {
       color: #0d77b5;
@@ -130,9 +152,6 @@
 .search-result__title a:focus {
       color: #0d77b5;
       outline: 0;
-    }
-
-[dir] .search-result__title a:focus {
       background-size: 100% 3px;
     }
 
@@ -147,22 +166,19 @@
 @media (min-width: 1000px) {
 
 .search-result__title {
+    margin-bottom: 18px;
     font-size: 1.875rem;
     line-height: 3.375rem
 }
-
-[dir] .search-result__title {
-    margin-bottom: 18px
-}
   }
 
-[dir] .search-result__snippet {
+.search-result__snippet {
   padding-bottom: 27px;
 }
 
 @media (min-width: 1000px) {
 
-[dir] .search-result__snippet {
+.search-result__snippet {
     padding-bottom: 54px
 }
   }
@@ -170,15 +186,12 @@
 .search-result__meta {
   display: flex;
   align-items: center;
+  margin-bottom: 18px;
   color: #6e7172;
   font-size: 0.875rem;
   line-height: 1.125rem;
 }
 
-[dir] .search-result__meta {
-  margin-bottom: 18px;
-}
-
 .search-result__meta a {
     color: #0d77b5;
     font-weight: bold;
@@ -186,9 +199,6 @@
 
 .search-results__item {
   position: relative; /* Anchor after pseudo-element. */
-}
-
-[dir] .search-results__item {
   margin-bottom: 27px;
 }
 
@@ -198,19 +208,17 @@
     width: 54px;
     height: 0;
     content: "";
-  }
-
-[dir] .search-results__item:after {
+    /* Intentionaly not using CSS logical properties. */
     border-top: solid 2px #e7edf1;
   }
 
-[dir] .search-results__item:last-child {
+.search-results__item:last-child {
     margin-bottom: 0;
   }
 
 @media (min-width: 1000px) {
 
-[dir] .search-results__item {
+.search-results__item {
     margin-bottom: 54px
 }
   }
diff --git a/css/components/search-results.pcss.css b/css/components/search-results.pcss.css
index 9fd2476..4fee9fa 100644
--- a/css/components/search-results.pcss.css
+++ b/css/components/search-results.pcss.css
@@ -6,31 +6,39 @@
 @import "../base/variables.pcss.css";
 
 .search-results {
-  margin-bottom: var(--sp2);
-  padding: 0;
+  margin-block-end: var(--sp2);
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 
   @media (--md) {
-    margin-bottom: var(--sp3);
+    margin-block-end: var(--sp3);
   }
 }
 
 .search-result__title {
-  margin: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
   color: var(--color--gray-0);
   font-size: 20px;
   line-height: var(--line-height-base);
 
   a {
-    padding-bottom: 3px;
+    padding-block-end: 3px;
     transition: background-size 0.2s, color 0.2s;
     text-decoration: none;
     background-color: transparent;
     background-image: linear-gradient(var(--color--blue-50), var(--color--blue-50)); /* Two values are needed for IE11 support. */
     background-repeat: no-repeat;
-    background-position: bottom left;
+    background-position: bottom left; /* LTR */
     background-size: 0 3px;
 
+    [dir="rtl"] & {
+      background-position: bottom right;
+    }
+
     &:hover {
       color: var(--color--blue-20);
     }
@@ -48,24 +56,24 @@
   }
 
   @media (--lg) {
-    margin-bottom: var(--sp1);
+    margin-block-end: var(--sp1);
     font-size: 30px;
     line-height: var(--sp3);
   }
 }
 
 .search-result__snippet {
-  padding-bottom: calc(var(--sp1-5 - 2px));
+  padding-block-end: calc(var(--sp1-5 - 2px));
 
   @media (--lg) {
-    padding-bottom: var(--sp3);
+    padding-block-end: var(--sp3);
   }
 }
 
 .search-result__meta {
   display: flex;
   align-items: center;
-  margin-bottom: var(--sp1);
+  margin-block-end: var(--sp1);
   color: var(--color--gray-20);
   font-size: 14px;
   line-height: var(--sp);
@@ -78,22 +86,23 @@
 
 .search-results__item {
   position: relative; /* Anchor after pseudo-element. */
-  margin-bottom: var(--sp1-5);
+  margin-block-end: var(--sp1-5);
 
   &:after {
     position: absolute;
-    bottom: 0;
+    inset-block-end: 0;
     width: var(--sp3);
     height: 0;
     content: "";
+    /* Intentionaly not using CSS logical properties. */
     border-top: solid 2px var(--color--gray-80);
   }
 
   &:last-child {
-    margin-bottom: 0;
+    margin-block-end: 0;
   }
 
   @media (--lg) {
-    margin-bottom: var(--sp3);
+    margin-block-end: var(--sp3);
   }
 }
diff --git a/css/components/sidebar.css b/css/components/sidebar.css
index 96c91da..7278000 100644
--- a/css/components/sidebar.css
+++ b/css/components/sidebar.css
@@ -80,13 +80,31 @@
     list-style: none;
   }
 
-[dir] .region--sidebar .menu--level-1 {
+.region--sidebar .menu--level-1 {
     margin: 0;
   }
 
+[dir="ltr"] .region--sidebar .menu__link {
+    padding-left: 0;
+}
+
+[dir="rtl"] .region--sidebar .menu__link {
+    padding-right: 0;
+}
+
+[dir="ltr"] .region--sidebar .menu__link {
+    padding-right: 0;
+}
+
+[dir="rtl"] .region--sidebar .menu__link {
+    padding-left: 0;
+}
+
 .region--sidebar .menu__link {
     position: relative;
     display: block;
+    padding-top: 13.5px;
+    padding-bottom: 13.5px;
     font-family: "Lora"
 ,
 "georgia"
@@ -95,32 +113,25 @@ serif;
     font-size: 1.125rem;
   }
 
-[dir] .region--sidebar .menu__link {
-    padding: 13.5px 0;
-  }
-
 /* Bottom divider line. */
 
+[dir="ltr"] .region--sidebar .menu__link:after {
+      left: 0;
+}
+
+[dir="rtl"] .region--sidebar .menu__link:after {
+      right: 0;
+}
+
 .region--sidebar .menu__link:after {
       position: absolute;
       bottom: 0;
       width: 72px;
       height: 0;
       content: "";
-    }
-
-[dir] .region--sidebar .menu__link:after {
       border-top: solid 2px #e7edf1;
     }
 
-[dir=ltr] .region--sidebar .menu__link:after {
-  left: 0;
-    }
-
-[dir=rtl] .region--sidebar .menu__link:after {
-      right: 0;
-    }
-
 .region--sidebar .menu__link--link {
     text-decoration: none;
     color: #0d1214;
diff --git a/css/components/sidebar.pcss.css b/css/components/sidebar.pcss.css
index db6a1d2..551b957 100644
--- a/css/components/sidebar.pcss.css
+++ b/css/components/sidebar.pcss.css
@@ -17,19 +17,21 @@
   .menu__link {
     position: relative;
     display: block;
-    padding: var(--sp0-75) 0;
+    padding-block: var(--sp0-75);
+    padding-inline-start: 0;
+    padding-inline-end: 0;
     font-family: var(--font-serif);
     font-size: 18px;
 
     /* Bottom divider line. */
     &:after {
       position: absolute;
-      bottom: 0;
-      left: 0;
+      inset-block-end: 0;
+      inset-inline-start: 0;
       width: var(--sp4);
       height: 0;
       content: "";
-      border-top: solid 2px var(--color--gray-80);
+      border-block-start: solid 2px var(--color--gray-80);
     }
   }
 
diff --git a/css/components/skip-link.css b/css/components/skip-link.css
index 6ba76a2..d745665 100644
--- a/css/components/skip-link.css
+++ b/css/components/skip-link.css
@@ -78,18 +78,32 @@
   /* Form */
 }
 
+[dir="ltr"] .skip-link {
+  padding-left: 18px;
+}
+
+[dir="rtl"] .skip-link {
+  padding-right: 18px;
+}
+
+[dir="ltr"] .skip-link {
+  padding-right: 18px;
+}
+
+[dir="rtl"] .skip-link {
+  padding-left: 18px;
+}
+
 .skip-link {
   z-index: 1; /* Appear above header */
   display: block;
   width: 100%;
   max-width: 1570px;
+  padding-top: 9px;
+  padding-bottom: 9px;
   text-decoration: none;
   color: #fff;
   outline: 0;
-}
-
-[dir] .skip-link {
-  padding: 9px 18px;
   background-color: #0d1214;
 }
 
diff --git a/css/components/skip-link.pcss.css b/css/components/skip-link.pcss.css
index 6df3fbf..28f1add 100644
--- a/css/components/skip-link.pcss.css
+++ b/css/components/skip-link.pcss.css
@@ -12,7 +12,9 @@
   display: block;
   width: 100%;
   max-width: var(--max-bg-color);
-  padding: var(--sp0-5) var(--sp);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
   text-decoration: none;
   color: var(--color--white);
   outline: 0;
diff --git a/css/components/table.css b/css/components/table.css
index 0496e82..546e93f 100644
--- a/css/components/table.css
+++ b/css/components/table.css
@@ -78,8 +78,11 @@
 
 .text-content table,
 .views-table {
+  margin-top: 36px;
+  margin-bottom: 36px;
   border-spacing: 0;
   color: #313637;
+  border: 0;
   border-collapse: collapse;
   font-family: "metropolis"
 ,
@@ -88,12 +91,16 @@ sans-serif;
   line-height: 1.6875rem;
 }
 
-[dir] .text-content table, [dir] .views-table {
-  margin: 36px 0;
-  border: 0;
+[dir="ltr"] .text-content table caption,[dir="ltr"]  .views-table caption {
+    text-align: left;
+}
+
+[dir="rtl"] .text-content table caption,[dir="rtl"]  .views-table caption {
+    text-align: right;
 }
 
 .text-content table caption, .views-table caption {
+    margin-bottom: 18px;
     color: #313637;
     font-family: "Lora"
 ,
@@ -105,40 +112,77 @@ serif;
     line-height: 1.125rem;
   }
 
-[dir] .text-content table caption, [dir] .views-table caption {
-    margin-bottom: 18px;
-  }
+.text-content table tr:last-child td, .views-table tr:last-child td {
+        border-bottom: 0;
+      }
 
-[dir=ltr] .text-content table caption, [dir=ltr] .views-table caption {
-  text-align: left;
-  }
+[dir="ltr"] .text-content table td,[dir="ltr"] 
+  .text-content table th,[dir="ltr"] 
+  .views-table td,[dir="ltr"] 
+  .views-table th {
+    padding-left: 0;
+}
 
-[dir=rtl] .text-content table caption, [dir=rtl] .views-table caption {
-    text-align: right;
-  }
+[dir="rtl"] .text-content table td,[dir="rtl"] 
+  .text-content table th,[dir="rtl"] 
+  .views-table td,[dir="rtl"] 
+  .views-table th {
+    padding-right: 0;
+}
 
-[dir] .text-content table tr:last-child td, [dir] .views-table tr:last-child td {
-        border-bottom: 0;
-      }
+[dir="ltr"] .text-content table td,[dir="ltr"] 
+  .text-content table th,[dir="ltr"] 
+  .views-table td,[dir="ltr"] 
+  .views-table th {
+    padding-right: 18px;
+}
+
+[dir="rtl"] .text-content table td,[dir="rtl"] 
+  .text-content table th,[dir="rtl"] 
+  .views-table td,[dir="rtl"] 
+  .views-table th {
+    padding-left: 18px;
+}
 
 .text-content table td,
   .text-content table th,
   .views-table td,
   .views-table th {
+    padding-top: 18px;
+    padding-bottom: 18px;
     vertical-align: top;
   }
 
-[dir=ltr] .text-content table td, [dir=ltr] .text-content table th, [dir=ltr] .views-table td, [dir=ltr] .views-table th {
-  padding: 18px 18px 18px 0;
-  }
+[dir="ltr"] .text-content table th,[dir="ltr"]  .views-table th {
+    margin-left: 0;
+}
 
-[dir=rtl] .text-content table td, [dir=rtl] .text-content table th, [dir=rtl] .views-table td, [dir=rtl] .views-table th {
-    padding: 18px 0 18px 18px;
-  }
+[dir="rtl"] .text-content table th,[dir="rtl"]  .views-table th {
+    margin-right: 0;
+}
+
+[dir="ltr"] .text-content table th,[dir="ltr"]  .views-table th {
+    margin-right: 0;
+}
+
+[dir="rtl"] .text-content table th,[dir="rtl"]  .views-table th {
+    margin-left: 0;
+}
+
+[dir="ltr"] .text-content table th,[dir="ltr"]  .views-table th {
+    text-align: left;
+}
+
+[dir="rtl"] .text-content table th,[dir="rtl"]  .views-table th {
+    text-align: right;
+}
 
 .text-content table th, .views-table th {
+    margin-top: 0;
+    margin-bottom: 0;
     letter-spacing: 0.02em;
     color: #0d1214;
+    border-bottom: 2px solid #2494db;
     font-family: "metropolis"
 ,
 sans-serif;
@@ -146,52 +190,36 @@ sans-serif;
     line-height: 1.125rem;
   }
 
-[dir] .text-content table th, [dir] .views-table th {
-    margin: 0;
-    border-bottom: 2px solid #2494db;
-  }
-
-[dir=ltr] .text-content table th, [dir=ltr] .views-table th {
-  text-align: left;
-  }
-
-[dir=rtl] .text-content table th, [dir=rtl] .views-table th {
-    text-align: right;
-  }
-
 /**
      * Fixes for styles injected by CKEditor
      */
 
-[dir=ltr] .text-content table th.text-align-left, [dir=ltr] .views-table th.text-align-left {
-  text-align: left;
-    }
+[dir="ltr"] .text-content table th.text-align-left,[dir="ltr"]  .views-table th.text-align-left {
+      text-align: left;
+}
 
-[dir=rtl] .text-content table th.text-align-left, [dir=rtl] .views-table th.text-align-left {
+[dir="rtl"] .text-content table th.text-align-left,[dir="rtl"]  .views-table th.text-align-left {
       text-align: right;
-    }
+}
 
-[dir=ltr] .text-content table th.text-align-right, [dir=ltr] .views-table th.text-align-right {
-  text-align: right;
-    }
+[dir="ltr"] .text-content table th.text-align-right,[dir="ltr"]  .views-table th.text-align-right {
+      text-align: right;
+}
 
-[dir=rtl] .text-content table th.text-align-right, [dir=rtl] .views-table th.text-align-right {
+[dir="rtl"] .text-content table th.text-align-right,[dir="rtl"]  .views-table th.text-align-right {
       text-align: left;
-    }
+}
 
-[dir] .text-content table th.text-align-center, [dir] .views-table th.text-align-center {
+.text-content table th.text-align-center, .views-table th.text-align-center {
       text-align: center;
     }
 
-[dir] .text-content table th.text-align-justify, [dir] .views-table th.text-align-justify {
+.text-content table th.text-align-justify, .views-table th.text-align-justify {
       text-align: justify;
     }
 
 .text-content table td, .views-table td {
     white-space: normal;
-  }
-
-[dir] .text-content table td, [dir] .views-table td {
     border-bottom: 2px solid #98abb9;
   }
 
@@ -201,15 +229,12 @@ sans-serif;
 
 .sticky-header {
   z-index: 0;
-}
-
-[dir] .sticky-header {
   margin: 0;
   border-bottom: 4px solid #2494db;
 }
 
 /* Properly align VBO checkboxes. */
 
-[dir] .views-field-node-bulk-form .form-item {
+.views-field-node-bulk-form .form-item {
   margin: 0;
 }
diff --git a/css/components/table.pcss.css b/css/components/table.pcss.css
index 76f905c..d101d5f 100644
--- a/css/components/table.pcss.css
+++ b/css/components/table.pcss.css
@@ -7,7 +7,8 @@
 
 .text-content table,
 .views-table {
-  margin: var(--sp2) 0;
+  margin-block-start: var(--sp2);
+  margin-block-end: var(--sp2);
   border-spacing: 0;
   color: var(--color--gray-10);
   border: 0;
@@ -17,8 +18,8 @@
   line-height: var(--sp1-5);
 
   caption {
-    margin-bottom: var(--sp1);
-    text-align: left;
+    margin-block-end: var(--sp1);
+    text-align: start;
     color: var(--color--gray-10);
     font-family: var(--font-serif);
     font-size: 14px;
@@ -29,23 +30,27 @@
   tr {
     &:last-child {
       td {
-        border-bottom: 0;
+        border-block-end: 0;
       }
     }
   }
 
   td,
   th {
-    padding: var(--sp1) var(--sp1) var(--sp1) 0;
+    padding-block: var(--sp1);
+    padding-inline-start: 0;
+    padding-inline-end: var(--sp1);
     vertical-align: top;
   }
 
   th {
-    margin: 0;
-    text-align: left;
+    margin-block: 0;
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    text-align: start;
     letter-spacing: 0.02em;
     color: var(--color--gray-0);
-    border-bottom: 2px solid var(--color--blue-50);
+    border-block-end: 2px solid var(--color--blue-50);
     font-family: var(--font-sans);
     font-size: 14px;
     line-height: var(--sp);
@@ -54,11 +59,11 @@
      * Fixes for styles injected by CKEditor
      */
     &.text-align-left {
-      text-align: left;
+      text-align: start;
     }
 
     &.text-align-right {
-      text-align: right;
+      text-align: end;
     }
 
     &.text-align-center {
@@ -72,7 +77,7 @@
 
   td {
     white-space: normal;
-    border-bottom: 2px solid var(--color--gray-40);
+    border-block-end: 2px solid var(--color--gray-40);
   }
 }
 
@@ -83,7 +88,7 @@
 .sticky-header {
   z-index: 0;
   margin: 0;
-  border-bottom: 4px solid var(--color--blue-50);
+  border-block-end: 4px solid var(--color--blue-50);
 }
 
 /* Properly align VBO checkboxes. */
diff --git a/css/components/tabledrag.css b/css/components/tabledrag.css
index eac2e38..17abd98 100644
--- a/css/components/tabledrag.css
+++ b/css/components/tabledrag.css
@@ -83,12 +83,5 @@ a.tabledrag-handle .handle {
 
 .touchevents a.tabledrag-handle .handle {
         height: 36px;
-      }
-
-[dir=ltr] .touchevents a.tabledrag-handle .handle {
-  background-position: 40% 10px;
-      }
-
-[dir=rtl] .touchevents a.tabledrag-handle .handle {
-        background-position: 60% 10px;
+        background-position: 40% 10px;
       }
diff --git a/css/components/tabs.css b/css/components/tabs.css
index d1f9551..f03bc9a 100644
--- a/css/components/tabs.css
+++ b/css/components/tabs.css
@@ -71,18 +71,49 @@
   /* Form */
 }
 
+[dir="ltr"] .tabs {
+  margin-left: 0;
+}
+
+[dir="rtl"] .tabs {
+  margin-right: 0;
+}
+
+[dir="ltr"] .tabs {
+  margin-right: 0;
+}
+
+[dir="rtl"] .tabs {
+  margin-left: 0;
+}
+
+[dir="ltr"] .tabs {
+  padding-left: 0;
+}
+
+[dir="rtl"] .tabs {
+  padding-right: 0;
+}
+
+[dir="ltr"] .tabs {
+  padding-right: 0;
+}
+
+[dir="rtl"] .tabs {
+  padding-left: 0;
+}
+
 .tabs {
   display: flex;
   flex-direction: column;
   width: 100%;
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-top: 0;
+  padding-bottom: 0;
   list-style: none;
 }
 
-[dir] .tabs {
-  margin: 0;
-  padding: 0;
-}
-
 @media (min-width: 700px) {
 
 .tabs {
@@ -93,10 +124,8 @@
 
 .tabs__tab {
   display: none;
-}
-
-[dir] .tabs__tab {
-  margin: 0 0 -1px;
+  margin: 0;
+  margin-bottom: -1px;
 }
 
 html:not(.js) .tabs__tab,
@@ -108,15 +137,9 @@ html:not(.js) .tabs__tab,
 @media (min-width: 700px) {
 
 .tabs__tab {
-    display: flex
-}
-
-[dir=ltr] .tabs__tab {
-    margin: 0 -1px -1px 0
-}
-
-[dir=rtl] .tabs__tab {
-    margin: 0 0 -1px -1px
+    display: flex;
+    margin: 0;
+    margin-bottom: -1px
 }
   }
 
@@ -131,22 +154,36 @@ html:not(.js) .tabs__tab,
 }
   }
 
+[dir="ltr"] .tabs__link {
+  padding-left: 27px;
+}
+
+[dir="rtl"] .tabs__link {
+  padding-right: 27px;
+}
+
+[dir="ltr"] .tabs__link {
+  padding-right: 27px;
+}
+
+[dir="rtl"] .tabs__link {
+  padding-left: 27px;
+}
+
 .tabs__link {
   display: flex;
   flex-grow: 1;
   align-items: center;
   height: 54px;
+  padding-top: 0;
+  padding-bottom: 0;
   transition: background-color 0.2s;
   text-decoration: none;
   letter-spacing: 0.0625rem;
   color: #6e7172;
-  font-size: 0.875rem;
-}
-
-[dir] .tabs__link {
-  padding: 0 27px;
   border: 1px solid #e7edf1;
   background-color: #f7f9fa;
+  font-size: 0.875rem;
 }
 
 .tabs--secondary .tabs__link {
@@ -155,33 +192,22 @@ html:not(.js) .tabs__tab,
 
 @media (min-width: 700px) {
 
-[dir] .tabs--secondary .tabs__link {
+.tabs--secondary .tabs__link {
     border-top-color: transparent;
-    background-color: transparent
-}
-
-[dir=ltr] .tabs--secondary .tabs__link {
     border-right-color: transparent;
-    border-left-color: transparent
-}
-
-[dir=rtl] .tabs--secondary .tabs__link {
     border-left-color: transparent;
-    border-right-color: transparent
+    background-color: transparent
 }
   }
 
 .tabs__link:focus {
   position: relative;
   z-index: 1;
-  outline: none;
-}
-
-[dir] .tabs__link:focus {
   border-color: #2494db;
+  outline: none;
 }
 
-[dir] .tabs__link:hover {
+.tabs__link:hover {
   background-color: #e7edf1;
 }
 
@@ -191,6 +217,22 @@ html:not(.js) .tabs__tab,
   font-weight: 600;
 }
 
+[dir="ltr"] .tabs__link.is-active:after {
+    left: -1px;
+}
+
+[dir="rtl"] .tabs__link.is-active:after {
+    right: -1px;
+}
+
+[dir="ltr"] .tabs__link.is-active:after {
+    border-left: 6px solid #2494db;
+}
+
+[dir="rtl"] .tabs__link.is-active:after {
+    border-right: 6px solid #2494db;
+}
+
 .tabs__link.is-active:after {
     position: absolute;
     bottom: -1px;
@@ -198,66 +240,62 @@ html:not(.js) .tabs__tab,
     content: "";
   }
 
-[dir=ltr] .tabs__link.is-active:after {
-  left: -1px;
-  border-left: 6px solid #2494db;
+@media (min-width: 700px) {
+    [dir="ltr"] .tabs__link.is-active:after {
+      left: 0;
   }
-
-[dir=rtl] .tabs__link.is-active:after {
-    right: -1px;
-    border-right: 6px solid #2494db;
+    [dir="rtl"] .tabs__link.is-active:after {
+      right: 0;
+  }
+    [dir="ltr"] .tabs__link.is-active:after {
+      border-left: 0;
+  }
+    [dir="rtl"] .tabs__link.is-active:after {
+      border-right: 0;
   }
-
-@media (min-width: 700px) {
     .tabs__link.is-active:after {
       width: 100%;
       height: auto;
-    }
-    [dir] .tabs__link.is-active:after {
       border-top: 6px solid #2494db;
     }
-    [dir=ltr] .tabs__link.is-active:after {
-    left: 0;
-    border-left: 0;
-    }
-    [dir=rtl] .tabs__link.is-active:after {
-      right: 0;
-      border-right: 0;
-    }
   }
 
+[dir="ltr"] .tabs__trigger {
+  margin-left: -1px;
+}
+
+[dir="rtl"] .tabs__trigger {
+  margin-right: -1px;
+}
+
+[dir="ltr"] .tabs__trigger {
+  margin-right: 0;
+}
+
+[dir="rtl"] .tabs__trigger {
+  margin-left: 0;
+}
+
 .tabs__trigger {
   display: flex;
   align-items: center;
   justify-content: center;
   width: 54px;
-}
-
-[dir] .tabs__trigger {
+  margin-top: 0;
+  margin-bottom: 0;
   cursor: pointer;
   border: solid 1px #e7edf1;
   background-color: #f7f9fa;
 }
 
-[dir=ltr] .tabs__trigger {
-  margin: 0 0 0 -1px;
-}
-
-[dir=rtl] .tabs__trigger {
-  margin: 0 -1px 0 0;
-}
-
-[dir] .tabs__trigger:hover {
+.tabs__trigger:hover {
     background-color: #e7edf1;
   }
 
 .tabs__trigger:focus {
     position: relative;
-    outline: none;
-  }
-
-[dir] .tabs__trigger:focus {
     border-color: #2494db;
+    outline: none;
   }
 
 html:not(.js) .tabs__trigger {
@@ -275,22 +313,12 @@ html:not(.js) .tabs__trigger {
   position: relative;
   width: 18px;
   height: 10px;
-}
-
-[dir] .tabs__trigger-icon {
   margin-top: -2px;
 }
 
 .tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > div:nth-child(1) {
         top: calc(50% + 1px);
-      }
-
-[dir=ltr] .tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > div:nth-child(1) {
-  transform: rotate(45deg);
-      }
-
-[dir=rtl] .tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > div:nth-child(1) {
-        transform: rotate(-45deg);
+        transform: rotate(45deg);
       }
 
 .tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > div:nth-child(2) {
@@ -299,34 +327,24 @@ html:not(.js) .tabs__trigger {
 
 .tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > div:nth-child(3) {
         top: calc(50% + 1px);
+        transform: rotate(-45deg);
       }
 
-[dir=ltr] .tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > div:nth-child(3) {
-  transform: rotate(-45deg);
-      }
+[dir="ltr"] .tabs__trigger-icon > div {
+    left: 0;
+}
 
-[dir=rtl] .tabs__trigger[aria-expanded="true"] .tabs__trigger-icon > div:nth-child(3) {
-        transform: rotate(45deg);
-      }
+[dir="rtl"] .tabs__trigger-icon > div {
+    right: 0;
+}
 
 .tabs__trigger-icon > div {
     position: absolute;
     width: 100%;
     transition: transform 0.2s, opacity 0.2s, top 0.2s;
-  }
-
-[dir] .tabs__trigger-icon > div {
     border-top: solid 2px #2494db;
   }
 
-[dir=ltr] .tabs__trigger-icon > div {
-  left: 0;
-  }
-
-[dir=rtl] .tabs__trigger-icon > div {
-    right: 0;
-  }
-
 .tabs__trigger-icon > div:nth-child(1) {
       top: 0;
     }
diff --git a/css/components/tabs.pcss.css b/css/components/tabs.pcss.css
index 035afb3..974c0bc 100644
--- a/css/components/tabs.pcss.css
+++ b/css/components/tabs.pcss.css
@@ -8,8 +8,12 @@
   display: flex;
   flex-direction: column;
   width: 100%;
-  margin: 0;
-  padding: 0;
+  margin-block: 0;
+  margin-inline-start: 0;
+  margin-inline-end: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 
   @media (--md) {
@@ -20,7 +24,8 @@
 
 .tabs__tab {
   display: none;
-  margin: 0 0 -1px;
+  margin: 0;
+  margin-block-end: -1px;
 
   html:not(.js) &,
   .tabs.is-expanded &,
@@ -30,7 +35,8 @@
 
   @media (--md) {
     display: flex;
-    margin: 0 -1px -1px 0;
+    margin: 0;
+    margin-block-end: -1px;
   }
 }
 
@@ -47,7 +53,9 @@
   flex-grow: 1;
   align-items: center;
   height: var(--sp3);
-  padding: 0 var(--sp1-5);
+  padding-block: 0;
+  padding-inline-start: var(--sp1-5);
+  padding-inline-end: var(--sp1-5);
   transition: background-color 0.2s;
   text-decoration: none;
   letter-spacing: 1px;
@@ -86,20 +94,20 @@
 
   &:after {
     position: absolute;
-    bottom: -1px;
-    left: -1px;
+    inset-block-end: -1px;
+    inset-inline-start: -1px;
     height: calc(100% + 2px);
     content: "";
-    border-left: var(--tab-active-border-size) solid var(--color--blue-50);
+    border-inline-start: var(--tab-active-border-size) solid var(--color--blue-50);
   }
 
   @media (--md) {
     &:after {
-      left: 0;
+      inset-inline-start: 0;
       width: 100%;
       height: auto;
-      border-top: var(--tab-active-border-size) solid var(--color--blue-50);
-      border-left: 0;
+      border-block-start: var(--tab-active-border-size) solid var(--color--blue-50);
+      border-inline-start: 0;
     }
   }
 }
@@ -109,7 +117,10 @@
   align-items: center;
   justify-content: center;
   width: var(--sp3);
-  margin: 0 0 0 -1px;
+  margin-block-start: 0;
+  margin-block-end: 0;
+  margin-inline-start: -1px;
+  margin-inline-end: 0;
   cursor: pointer;
   border: solid 1px var(--color--gray-80);
   background-color: var(--color--gray-95);
@@ -137,12 +148,12 @@
   position: relative;
   width: var(--sp);
   height: 10px;
-  margin-top: -2px;
+  margin-block-start: -2px;
 
   .tabs__trigger[aria-expanded="true"] & {
     > div {
       &:nth-child(1) {
-        top: calc(50% + 1px);
+        inset-block-start: calc(50% + 1px);
         transform: rotate(45deg);
       }
 
@@ -151,7 +162,7 @@
       }
 
       &:nth-child(3) {
-        top: calc(50% + 1px);
+        inset-block-start: calc(50% + 1px);
         transform: rotate(-45deg);
       }
     }
@@ -159,21 +170,21 @@
 
   > div {
     position: absolute;
-    left: 0;
+    inset-inline-start: 0;
     width: 100%;
     transition: transform 0.2s, opacity 0.2s, top 0.2s;
-    border-top: solid 2px var(--color--blue-50);
+    border-block-start: solid 2px var(--color--blue-50);
 
     &:nth-child(1) {
-      top: 0;
+      inset-block-start: 0;
     }
 
     &:nth-child(2) {
-      top: calc(50% + 1px);
+      inset-block-start: calc(50% + 1px);
     }
 
     &:nth-child(3) {
-      top: calc(100% + 2px);
+      inset-block-start: calc(100% + 2px);
     }
   }
 }
diff --git a/css/components/tags.css b/css/components/tags.css
index 6704efc..9c5e1a1 100644
--- a/css/components/tags.css
+++ b/css/components/tags.css
@@ -77,20 +77,44 @@
   /* Form */
 }
 
+[dir="ltr"] .field--tag-ref {
+  padding-left: 36px;
+}
+
+[dir="rtl"] .field--tag-ref {
+  padding-right: 36px;
+}
+
+[dir="ltr"] .field--tag-ref {
+  padding-right: 36px;
+}
+
+[dir="rtl"] .field--tag-ref {
+  padding-left: 36px;
+}
+
 .field--tag-ref {
   display: flex;
+  margin-top: 72px;
+  margin-bottom: 72px;
+  padding-top: 27px;
+  padding-bottom: 27px;
+  background-color: #f7f9fa;
   font-family: "metropolis"
 ,
 sans-serif;
 }
 
-[dir] .field--tag-ref {
-  margin: 72px 0;
-  padding: 27px 36px;
-  background-color: #f7f9fa;
+[dir="ltr"] .field--tag-ref__label {
+  margin-right: 22.5px;
+}
+
+[dir="rtl"] .field--tag-ref__label {
+  margin-left: 22.5px;
 }
 
 .field--tag-ref__label {
+  margin: 0;
   letter-spacing: 0.02em;
   color: #6e7172;
   font-size: 0.875rem;
@@ -98,39 +122,93 @@ sans-serif;
   line-height: 2;
 }
 
-[dir=ltr] .field--tag-ref__label {
-  margin: 0 22.5px 0 0;
+.field--tag-ref__label:after {
+    content: ":";
+  }
+
+[dir="ltr"] .field--label-inline .field--tag-ref__label {
+  padding-left: 0;
 }
 
-[dir=rtl] .field--tag-ref__label {
-  margin: 0 0 0 22.5px;
+[dir="rtl"] .field--label-inline .field--tag-ref__label {
+  padding-right: 0;
 }
 
-.field--tag-ref__label:after {
-    content: ":";
-  }
+[dir="ltr"] .field--label-inline .field--tag-ref__label {
+  padding-right: 0;
+}
+
+[dir="rtl"] .field--label-inline .field--tag-ref__label {
+  padding-left: 0;
+}
+
+.field--label-inline .field--tag-ref__label {
+  padding-top: 0;
+  padding-bottom: 0;
+}
+
+[dir="ltr"] .field--tag-ref__items {
+  margin-left: -4.5px;
+}
+
+[dir="rtl"] .field--tag-ref__items {
+  margin-right: -4.5px;
+}
+
+[dir="ltr"] .field--tag-ref__items {
+  margin-right: -4.5px;
+}
+
+[dir="rtl"] .field--tag-ref__items {
+  margin-left: -4.5px;
+}
 
-[dir] .field--label-inline .field--tag-ref__label {
-  padding: 0;
+[dir="ltr"] .field--tag-ref__items {
+  padding-left: 0;
+}
+
+[dir="rtl"] .field--tag-ref__items {
+  padding-right: 0;
+}
+
+[dir="ltr"] .field--tag-ref__items {
+  padding-right: 0;
+}
+
+[dir="rtl"] .field--tag-ref__items {
+  padding-left: 0;
 }
 
 .field--tag-ref__items {
   display: flex;
   flex-wrap: wrap;
+  margin-top: -4.5px;
+  margin-bottom: -4.5px;
+  padding-top: 0;
+  padding-bottom: 0;
   list-style: none;
 }
 
-[dir] .field--tag-ref__items {
-  margin: -4.5px;
-  padding: 0;
+[dir="ltr"] .field--tag-ref__item {
+  margin-left: 4.5px;
 }
 
-.field--tag-ref__item {
-  display: flex;
+[dir="rtl"] .field--tag-ref__item {
+  margin-right: 4.5px;
 }
 
-[dir] .field--tag-ref__item {
-  margin: 4.5px;
+[dir="ltr"] .field--tag-ref__item {
+  margin-right: 4.5px;
+}
+
+[dir="rtl"] .field--tag-ref__item {
+  margin-left: 4.5px;
+}
+
+.field--tag-ref__item {
+  display: flex;
+  margin-top: 4.5px;
+  margin-bottom: 4.5px;
 }
 
 .field--tag-ref__item:nth-last-child(n+2):after {
diff --git a/css/components/tags.pcss.css b/css/components/tags.pcss.css
index 1fd6e0e..0df4cc2 100644
--- a/css/components/tags.pcss.css
+++ b/css/components/tags.pcss.css
@@ -8,14 +8,18 @@
 
 .field--tag-ref {
   display: flex;
-  margin: var(--sp4) 0;
-  padding: var(--sp1-5) var(--sp2);
+  margin-block-start: var(--sp4);
+  margin-block-end: var(--sp4);
+  padding-block: var(--sp1-5);
+  padding-inline-start: var(--sp2);
+  padding-inline-end: var(--sp2);
   background-color: var(--color--gray-95);
   font-family: var(--font-sans);
 }
 
 .field--tag-ref__label {
-  margin: 0 calc(var(--sp1-5) - (var(--sp0-5) / 2)) 0 0;
+  margin: 0;
+  margin-inline-end: calc(var(--sp1-5) - (var(--sp0-5) / 2));
   letter-spacing: 0.02em;
   color: var(--color--gray-20);
   font-size: var(--font-size-s);
@@ -28,20 +32,28 @@
 }
 
 .field--label-inline .field--tag-ref__label {
-  padding: 0;
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
 }
 
 .field--tag-ref__items {
   display: flex;
   flex-wrap: wrap;
-  margin: calc((var(--sp0-5) / 2) * -1);
-  padding: 0;
+  margin-block: calc((var(--sp0-5) / 2) * -1);
+  margin-inline-start: calc((var(--sp0-5) / 2) * -1);
+  margin-inline-end: calc((var(--sp0-5) / 2) * -1);
+  padding-block: 0;
+  padding-inline-start: 0;
+  padding-inline-end: 0;
   list-style: none;
 }
 
 .field--tag-ref__item {
   display: flex;
-  margin: calc(var(--sp0-5) / 2);
+  margin-block: calc(var(--sp0-5) / 2);
+  margin-inline-start: calc(var(--sp0-5) / 2);
+  margin-inline-end: calc(var(--sp0-5) / 2);
 }
 
 .field--tag-ref__item:nth-last-child(n+2):after {
diff --git a/css/components/text-content.css b/css/components/text-content.css
index c658bb5..ba6e16e 100644
--- a/css/components/text-content.css
+++ b/css/components/text-content.css
@@ -102,9 +102,6 @@ serif;
 .site-footer .text-content a, .site-footer .cke_editable a {
       text-decoration: underline;
       color: #fff;
-    }
-
-[dir] .site-footer .text-content a, [dir] .site-footer .cke_editable a {
       box-shadow: none;
     }
 
@@ -114,13 +111,12 @@ serif;
       .site-footer .cke_editable a:focus {
         text-decoration: none;
         color: #fff;
-      }
-
-[dir] .site-footer .text-content a:hover, [dir] .site-footer .text-content a:focus, [dir] .site-footer .cke_editable a:hover, [dir] .site-footer .cke_editable a:focus {
         box-shadow: none;
       }
 
 .text-content h2, .cke_editable h2 {
+    margin-top: 36px;
+    margin-bottom: 27px;
     letter-spacing: 0.12em;
     color: #000;
     font-family: "metropolis"
@@ -130,20 +126,14 @@ sans-serif;
     line-height: 1.6875rem;
   }
 
-[dir] .text-content h2, [dir] .cke_editable h2 {
-    margin: 36px 0 27px;
-  }
-
 @media (min-width: 700px) {
 
 .text-content h2, .cke_editable h2 {
+      margin-top: 54px;
+      margin-bottom: 36px;
       letter-spacing: 0.09em;
       font-size: 1.3125rem
   }
-
-[dir] .text-content h2, [dir] .cke_editable h2 {
-      margin: 54px 0 36px
-  }
     }
 
 /*
@@ -168,10 +158,7 @@ sans-serif;
 
 .text-content a, .cke_editable a {
       transition: box-shadow 0.3s cubic-bezier(0.55, 0.085, 0, 0.99);
-      text-decoration: none
-  }
-
-[dir] .text-content a, [dir] .cke_editable a {
+      text-decoration: none;
       box-shadow: inset 0 -2px 0 0 #2494db
   }
 
@@ -183,50 +170,89 @@ sans-serif;
         color: #000;
 
         /* @todo - #d9ecfa isn't currently a variable. */
+        box-shadow: inset 0 -30px 0 0 #d9ecfa;
         -webkit-text-decoration-color: #d9ecfa;
         text-decoration-color: #d9ecfa;
       }
-
-      [dir] .text-content a:hover, [dir] .text-content a:focus, [dir] .cke_editable a:hover, [dir] .cke_editable a:focus {
-        box-shadow: inset 0 -30px 0 0 #d9ecfa;
-      }
     }
 
-[dir] .text-content p, [dir] .cke_editable p {
-    margin: 18px 0;
+.text-content p, .cke_editable p {
+    margin-top: 18px;
+    margin-bottom: 18px;
   }
 
-[dir] .text-content p:first-child, [dir] .cke_editable p:first-child {
+.text-content p:first-child, .cke_editable p:first-child {
       margin-top: 0;
     }
 
-[dir] .text-content p:last-child, [dir] .cke_editable p:last-child {
+.text-content p:last-child, .cke_editable p:last-child {
       margin-bottom: 0;
     }
 
 @media (min-width: 700px) {
 
-[dir] .text-content p, [dir] .cke_editable p {
-      margin: 36px 0
+.text-content p, .cke_editable p {
+      margin-top: 36px;
+      margin-bottom: 36px
   }
     }
 
-[dir] .text-content code, [dir] .cke_editable code {
+.text-content code, .cke_editable code {
     background-color: #f7f9fa;
   }
 
+[dir="ltr"] .text-content pre code,[dir="ltr"]  .cke_editable pre code {
+    padding-left: 18px;
+}
+
+[dir="rtl"] .text-content pre code,[dir="rtl"]  .cke_editable pre code {
+    padding-right: 18px;
+}
+
+[dir="ltr"] .text-content pre code,[dir="ltr"]  .cke_editable pre code {
+    padding-right: 18px;
+}
+
+[dir="rtl"] .text-content pre code,[dir="rtl"]  .cke_editable pre code {
+    padding-left: 18px;
+}
+
 .text-content pre code, .cke_editable pre code {
     display: block;
     overflow: auto;
+    padding-top: 18px;
+    padding-bottom: 18px;
     color: #6e7172;
   }
 
-[dir] .text-content pre code, [dir] .cke_editable pre code {
-    padding: 18px;
-  }
+[dir="ltr"] .text-content blockquote,[dir="ltr"]  .cke_editable blockquote {
+    margin-left: 0;
+}
+
+[dir="rtl"] .text-content blockquote,[dir="rtl"]  .cke_editable blockquote {
+    margin-right: 0;
+}
+
+[dir="ltr"] .text-content blockquote,[dir="ltr"]  .cke_editable blockquote {
+    margin-right: 0;
+}
+
+[dir="rtl"] .text-content blockquote,[dir="rtl"]  .cke_editable blockquote {
+    margin-left: 0;
+}
+
+[dir="ltr"] .text-content blockquote,[dir="ltr"]  .cke_editable blockquote {
+    padding-left: 36px;
+}
+
+[dir="rtl"] .text-content blockquote,[dir="rtl"]  .cke_editable blockquote {
+    padding-right: 36px;
+}
 
 .text-content blockquote, .cke_editable blockquote {
     position: relative;
+    margin-top: 36px;
+    margin-bottom: 36px;
     letter-spacing: -0.01em;
     font-family: "Lora"
 ,
@@ -237,17 +263,13 @@ serif;
     line-height: 2.25rem;
   }
 
-[dir] .text-content blockquote, [dir] .cke_editable blockquote {
-    margin: 36px 0;
-  }
-
-[dir=ltr] .text-content blockquote, [dir=ltr] .cke_editable blockquote {
-  padding-left: 36px;
-  }
+[dir="ltr"] .text-content blockquote:before,[dir="ltr"]  .cke_editable blockquote:before {
+      left: 0;
+}
 
-[dir=rtl] .text-content blockquote, [dir=rtl] .cke_editable blockquote {
-    padding-right: 36px;
-  }
+[dir="rtl"] .text-content blockquote:before,[dir="rtl"]  .cke_editable blockquote:before {
+      right: 0;
+}
 
 .text-content blockquote:before, .cke_editable blockquote:before {
       position: absolute;
@@ -257,13 +279,21 @@ serif;
       font-size: 3.375rem;
     }
 
-[dir=ltr] .text-content blockquote:before, [dir=ltr] .cke_editable blockquote:before {
-  left: 0;
-    }
+[dir="ltr"] .text-content blockquote:after,[dir="ltr"]  .cke_editable blockquote:after {
+      left: 0;
+}
 
-[dir=rtl] .text-content blockquote:before, [dir=rtl] .cke_editable blockquote:before {
+[dir="rtl"] .text-content blockquote:after,[dir="rtl"]  .cke_editable blockquote:after {
       right: 0;
-    }
+}
+
+[dir="ltr"] .text-content blockquote:after,[dir="ltr"]  .cke_editable blockquote:after {
+      margin-left: 4px;
+}
+
+[dir="rtl"] .text-content blockquote:after,[dir="rtl"]  .cke_editable blockquote:after {
+      margin-right: 4px;
+}
 
 .text-content blockquote:after, .cke_editable blockquote:after {
       position: absolute;
@@ -271,22 +301,9 @@ serif;
       width: 9px;
       height: calc(100% - 30px);
       content: "";
-    }
-
-[dir] .text-content blockquote:after, [dir] .cke_editable blockquote:after {
       background: #f7f9fa;
     }
 
-[dir=ltr] .text-content blockquote:after, [dir=ltr] .cke_editable blockquote:after {
-  left: 0;
-  margin-left: 4px;
-    }
-
-[dir=rtl] .text-content blockquote:after, [dir=rtl] .cke_editable blockquote:after {
-      right: 0;
-      margin-right: 4px;
-    }
-
 @media (min-width: 700px) {
 
 .text-content blockquote, .cke_editable blockquote {
diff --git a/css/components/text-content.pcss.css b/css/components/text-content.pcss.css
index 96148f7..d8c16cb 100644
--- a/css/components/text-content.pcss.css
+++ b/css/components/text-content.pcss.css
@@ -36,7 +36,8 @@
   }
 
   h2 {
-    margin: var(--sp2) 0 var(--sp1-5);
+    margin-block-start: var(--sp2);
+    margin-block-end: var(--sp1-5);
     letter-spacing: 0.12em;
     color: var(--color--black);
     font-family: var(--font-sans);
@@ -44,7 +45,8 @@
     line-height: var(--sp1-5);
 
     @media (--md) {
-      margin: var(--sp3) 0 var(--sp2);
+      margin-block-start: var(--sp3);
+      margin-block-end: var(--sp2);
       letter-spacing: 0.09em;
       font-size: 21px;
     }
@@ -84,18 +86,20 @@
   }
 
   p {
-    margin: var(--sp) 0;
+    margin-block-start: var(--sp);
+    margin-block-end: var(--sp);
 
     &:first-child {
-      margin-top: 0;
+      margin-block-start: 0;
     }
 
     &:last-child {
-      margin-bottom: 0;
+      margin-block-end: 0;
     }
 
     @media (--md) {
-      margin: var(--sp2) 0;
+      margin-block-start: var(--sp2);
+      margin-block-end: var(--sp2);
     }
   }
 
@@ -106,14 +110,18 @@
   pre code {
     display: block;
     overflow: auto;
-    padding: var(--sp);
+    padding-block: var(--sp);
+    padding-inline-start: var(--sp);
+    padding-inline-end: var(--sp);
     color: var(--color--gray-20);
   }
 
   blockquote {
     position: relative;
-    margin: var(--sp2) 0;
-    padding-left: var(--sp2);
+    margin-block: var(--sp2);
+    margin-inline-start: 0;
+    margin-inline-end: 0;
+    padding-inline-start: var(--sp2);
     letter-spacing: -0.01em;
     font-family: var(--font-serif);
     font-size: 21px;
@@ -121,8 +129,8 @@
 
     &:before {
       position: absolute;
-      top: 0;
-      left: 0;
+      inset-block-start: 0;
+      inset-inline-start: 0;
       content: "“";
       color: var(--color--blue-70);
       font-size: 54px;
@@ -130,11 +138,11 @@
 
     &:after {
       position: absolute;
-      bottom: 0;
-      left: 0;
+      inset-block-end: 0;
+      inset-inline-start: 0;
       width: var(--sp0-5);
       height: calc(100% - 30px);
-      margin-left: 4px;
+      margin-inline-start: 4px;
       content: "";
       background: var(--color--gray-95);
     }
diff --git a/css/components/vertical-tabs.css b/css/components/vertical-tabs.css
index 59cae2d..74a1880 100644
--- a/css/components/vertical-tabs.css
+++ b/css/components/vertical-tabs.css
@@ -76,8 +76,25 @@
   /* Form */
 }
 
-[dir] .vertical-tabs {
-  margin: 27px 0;
+[dir="ltr"] .vertical-tabs {
+  margin-left: 0;
+}
+
+[dir="rtl"] .vertical-tabs {
+  margin-right: 0;
+}
+
+[dir="ltr"] .vertical-tabs {
+  margin-right: 0;
+}
+
+[dir="rtl"] .vertical-tabs {
+  margin-left: 0;
+}
+
+.vertical-tabs {
+  margin-top: 27px;
+  margin-bottom: 27px;
 }
 
 @media (min-width: 1000px) {
@@ -90,11 +107,8 @@
 .vertical-tabs__menu {
   position: relative;
   align-self: flex-start;
-  list-style: none;
-}
-
-[dir] .vertical-tabs__menu {
   margin: 0;
+  list-style: none;
   border-width: 1px;
   border-style: solid;
   border-color: #e7edf1;
@@ -103,29 +117,19 @@
 @media (min-width: 1000px) {
 
 .vertical-tabs__menu {
-    width: 15rem
-}
-
-[dir=ltr] .vertical-tabs__menu {
+    width: 15rem;
     border-width: 1px 0 1px 1px
 }
-
-[dir=rtl] .vertical-tabs__menu {
-    border-width: 1px 1px 1px 0
-}
   }
 
-[dir] .vertical-tabs__panes {
+.vertical-tabs__panes {
   margin-top: -1px;
 }
 
 @media (min-width: 1000px) {
 
 .vertical-tabs__panes {
-    width: calc(100% - 15rem)
-}
-
-[dir] .vertical-tabs__panes {
+    width: calc(100% - 15rem);
     margin-top: 0
 }
   }
@@ -137,7 +141,7 @@
 }
   }
 
-[dir] .vertical-tabs__pane.olivero-details {
+.vertical-tabs__pane.olivero-details {
   margin: 0;
   border-radius: 0;
   box-shadow: none;
@@ -147,42 +151,64 @@
   display: none;
 }
 
-[dir] .vertical-tabs__menu-item:nth-child(n+2) {
+.vertical-tabs__menu-item:nth-child(n+2) {
   border-top: 1px solid #e7edf1;
 }
 
+[dir="ltr"] .vertical-tabs__menu-item a {
+  padding-left: 13.5px;
+}
+
+[dir="rtl"] .vertical-tabs__menu-item a {
+  padding-right: 13.5px;
+}
+
+[dir="ltr"] .vertical-tabs__menu-item a {
+  padding-right: 13.5px;
+}
+
+[dir="rtl"] .vertical-tabs__menu-item a {
+  padding-left: 13.5px;
+}
+
 .vertical-tabs__menu-item a {
   display: block;
+  padding-top: 9px;
+  padding-bottom: 9px;
   text-decoration: none;
-}
-
-[dir] .vertical-tabs__menu-item a {
-  padding: 9px 13.5px;
   background-color: #e7edf1;
 }
 
-[dir] .vertical-tabs__menu-item a:focus, [dir] .vertical-tabs__menu-item a:hover, [dir] .vertical-tabs__menu-item a:active {
+.vertical-tabs__menu-item a:focus,
+  .vertical-tabs__menu-item a:hover,
+  .vertical-tabs__menu-item a:active {
     background-color: #f7f9fa;
   }
 
-[dir] .vertical-tabs__menu-item.is-selected {
+.vertical-tabs__menu-item.is-selected {
   background-color: #fff;
 }
 
 @media (min-width: 1000px) {
 
-[dir=ltr] .vertical-tabs__menu-item.is-selected {
+[dir="ltr"] .vertical-tabs__menu-item.is-selected {
     margin-right: -1px;
-    padding-right: 1px
-}
+  }
 
-[dir=rtl] .vertical-tabs__menu-item.is-selected {
+[dir="rtl"] .vertical-tabs__menu-item.is-selected {
     margin-left: -1px;
-    padding-left: 1px
-}
   }
 
-[dir] .vertical-tabs__menu-item.is-selected a {
+[dir="ltr"] .vertical-tabs__menu-item.is-selected {
+    padding-right: 1px;
+  }
+
+[dir="rtl"] .vertical-tabs__menu-item.is-selected {
+    padding-left: 1px;
+  }
+  }
+
+.vertical-tabs__menu-item.is-selected a {
   background-color: transparent;
 }
 
diff --git a/css/components/vertical-tabs.pcss.css b/css/components/vertical-tabs.pcss.css
index f7d61bc..d864608 100644
--- a/css/components/vertical-tabs.pcss.css
+++ b/css/components/vertical-tabs.pcss.css
@@ -11,7 +11,10 @@
 }
 
 .vertical-tabs {
-  margin: var(--sp1-5) 0;
+  margin-block-start: var(--sp1-5);
+  margin-block-end: var(--sp1-5);
+  margin-inline-start: 0;
+  margin-inline-end: 0;
 
   @media (--lg) {
     display: flex;
@@ -34,11 +37,11 @@
 }
 
 .vertical-tabs__panes {
-  margin-top: calc(var(--vertical-tabs-menu-border-width) * -1);
+  margin-block-start: calc(var(--vertical-tabs-menu-border-width) * -1);
 
   @media (--lg) {
     width: calc(100% - var(--vertical-tabs-menu-width));
-    margin-top: 0;
+    margin-block-start: 0;
   }
 }
 
@@ -59,12 +62,14 @@
 }
 
 .vertical-tabs__menu-item:nth-child(n+2) {
-  border-top: var(--vertical-tabs-menu-border-width) solid var(--color--gray-80);
+  border-block-start: var(--vertical-tabs-menu-border-width) solid var(--color--gray-80);
 }
 
 .vertical-tabs__menu-item a {
   display: block;
-  padding: var(--sp0-5) var(--sp0-75);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp0-75);
+  padding-inline-end: var(--sp0-75);
   text-decoration: none;
   background-color: var(--color--gray-80);
 
@@ -79,8 +84,8 @@
   background-color: var(--color--white);
 
   @media (--lg) {
-    margin-right: calc(var(--vertical-tabs-menu-border-width) * -1);
-    padding-right: var(--vertical-tabs-menu-border-width);
+    margin-inline-end: calc(var(--vertical-tabs-menu-border-width) * -1);
+    padding-inline-end: var(--vertical-tabs-menu-border-width);
   }
 }
 
diff --git a/css/layout/layout-builder-fourcol-section.css b/css/layout/layout-builder-fourcol-section.css
index cc0edd2..20a85fb 100644
--- a/css/layout/layout-builder-fourcol-section.css
+++ b/css/layout/layout-builder-fourcol-section.css
@@ -83,9 +83,6 @@
 
 .layout--fourcol-section > .layout__region {
     flex: 1 0 100%;
-  }
-
-[dir] .layout--fourcol-section > .layout__region {
     margin-bottom: 18px;
   }
 
@@ -94,10 +91,7 @@
 .layout--fourcol-section > .layout__region {
       flex-basis: calc(50% - 18px);
       flex-grow: 0;
-      flex-shrink: 0
-  }
-
-[dir] .layout--fourcol-section > .layout__region {
+      flex-shrink: 0;
       margin-bottom: 0
   }
     }
@@ -105,25 +99,30 @@
 /* Two column layout. */
 
 @media (min-width: 700px) {
-    [dir] .layout--fourcol-section > .layout__region--first, [dir] .layout--fourcol-section > .layout__region--second {
+    .layout--fourcol-section > .layout__region--first,
+    .layout--fourcol-section > .layout__region--second {
       margin-bottom: 36px;
     }
 
-    [dir=ltr] .layout--fourcol-section > .layout__region--first, [dir=ltr] .layout--fourcol-section > .layout__region--third {
-    margin-right: 18px;
-    }
+    [dir="ltr"] .layout--fourcol-section > .layout__region--first,[dir="ltr"] 
+    .layout--fourcol-section > .layout__region--third {
+      margin-right: 18px;
+  }
 
-    [dir=rtl] .layout--fourcol-section > .layout__region--first, [dir=rtl] .layout--fourcol-section > .layout__region--third {
+    [dir="rtl"] .layout--fourcol-section > .layout__region--first,[dir="rtl"] 
+    .layout--fourcol-section > .layout__region--third {
       margin-left: 18px;
-    }
+  }
 
-    [dir=ltr] .layout--fourcol-section > .layout__region--second, [dir=ltr] .layout--fourcol-section > .layout__region--fourth {
-    margin-left: 18px;
-    }
+    [dir="ltr"] .layout--fourcol-section > .layout__region--second,[dir="ltr"] 
+    .layout--fourcol-section > .layout__region--fourth {
+      margin-left: 18px;
+  }
 
-    [dir=rtl] .layout--fourcol-section > .layout__region--second, [dir=rtl] .layout--fourcol-section > .layout__region--fourth {
+    [dir="rtl"] .layout--fourcol-section > .layout__region--second,[dir="rtl"] 
+    .layout--fourcol-section > .layout__region--fourth {
       margin-right: 18px;
-    }
+  }
   }
 
 /* Four column layout. */
@@ -133,33 +132,30 @@
       flex-basis: calc(25% - 27px);
     }
 
-    [dir] .layout--fourcol-section > .layout__region--first, [dir] .layout--fourcol-section > .layout__region--second {
+    .layout--fourcol-section > .layout__region--first,
+    .layout--fourcol-section > .layout__region--second {
       margin-bottom: 0;
     }
 
-    [dir=ltr] .layout--fourcol-section > .layout__region--first {
-    margin-right: 18px;
-    }
+    [dir="ltr"] .layout--fourcol-section > .layout__region--first {
+      margin-right: 18px;
+  }
 
-    [dir=rtl] .layout--fourcol-section > .layout__region--first {
+    [dir="rtl"] .layout--fourcol-section > .layout__region--first {
       margin-left: 18px;
-    }
-
-    [dir=ltr] .layout--fourcol-section > .layout__region--second, [dir=ltr] .layout--fourcol-section > .layout__region--third {
-    margin-right: 18px;
-    margin-left: 18px;
-    }
+  }
 
-    [dir=rtl] .layout--fourcol-section > .layout__region--second, [dir=rtl] .layout--fourcol-section > .layout__region--third {
+    .layout--fourcol-section > .layout__region--second,
+    .layout--fourcol-section > .layout__region--third {
       margin-left: 18px;
       margin-right: 18px;
     }
 
-    [dir=ltr] .layout--fourcol-section > .layout__region--fourth {
-    margin-left: 18px;
-    }
+    [dir="ltr"] .layout--fourcol-section > .layout__region--fourth {
+      margin-left: 18px;
+  }
 
-    [dir=rtl] .layout--fourcol-section > .layout__region--fourth {
+    [dir="rtl"] .layout--fourcol-section > .layout__region--fourth {
       margin-right: 18px;
-    }
+  }
   }
diff --git a/css/layout/layout-builder-fourcol-section.pcss.css b/css/layout/layout-builder-fourcol-section.pcss.css
index 3b32327..d72a004 100644
--- a/css/layout/layout-builder-fourcol-section.pcss.css
+++ b/css/layout/layout-builder-fourcol-section.pcss.css
@@ -11,13 +11,13 @@
 
   > .layout__region {
     flex: 1 0 100%;
-    margin-bottom: var(--grid-gap);
+    margin-block-end: var(--grid-gap);
 
     @media (--md) {
       flex-basis: calc(50% - (var(--grid-gap--md) * 0.5));
       flex-grow: 0;
       flex-shrink: 0;
-      margin-bottom: 0;
+      margin-block-end: 0;
     }
   }
 
@@ -25,17 +25,17 @@
   @media (--md) {
     > .layout__region--first,
     > .layout__region--second {
-      margin-bottom: var(--grid-gap--md);
+      margin-block-end: var(--grid-gap--md);
     }
 
     > .layout__region--first,
     > .layout__region--third {
-      margin-right: calc(var(--grid-gap--md) * 0.5);
+      margin-inline-end: calc(var(--grid-gap--md) * 0.5);
     }
 
     > .layout__region--second,
     > .layout__region--fourth {
-      margin-left: calc(var(--grid-gap--md) * 0.5);
+      margin-inline-start: calc(var(--grid-gap--md) * 0.5);
     }
   }
 
@@ -47,21 +47,20 @@
 
     > .layout__region--first,
     > .layout__region--second {
-      margin-bottom: 0;
+      margin-block-end: 0;
     }
 
     > .layout__region--first {
-      margin-right: calc(var(--grid-gap--md) * 0.5);
+      margin-inline-end: calc(var(--grid-gap--md) * 0.5);
     }
 
     > .layout__region--second,
     > .layout__region--third {
-      margin-right: calc(var(--grid-gap--md) * 0.5);
-      margin-left: calc(var(--grid-gap--md) * 0.5);
+      margin-inline: calc(var(--grid-gap--md) * 0.5);
     }
 
     > .layout__region--fourth {
-      margin-left: calc(var(--grid-gap--md) * 0.5);
+      margin-inline-start: calc(var(--grid-gap--md) * 0.5);
     }
   }
 }
diff --git a/css/layout/layout-builder-threecol-section.css b/css/layout/layout-builder-threecol-section.css
index 7f1b40a..0d318df 100644
--- a/css/layout/layout-builder-threecol-section.css
+++ b/css/layout/layout-builder-threecol-section.css
@@ -83,9 +83,6 @@
 
 .layout--threecol-section > .layout__region {
     flex: 1 0 100%;
-  }
-
-[dir] .layout--threecol-section > .layout__region {
     margin-bottom: 18px;
   }
 
@@ -93,39 +90,31 @@
 
 .layout--threecol-section > .layout__region {
       flex-grow: 0;
-      flex-shrink: 0
-  }
-
-[dir] .layout--threecol-section > .layout__region {
+      flex-shrink: 0;
       margin-bottom: 0
   }
     }
 
 @media (min-width: 1000px) {
-    [dir=ltr] .layout--threecol-section > .layout__region--first {
-    margin-right: 18px;
-    }
-    [dir=rtl] .layout--threecol-section > .layout__region--first {
+    [dir="ltr"] .layout--threecol-section > .layout__region--first {
+      margin-right: 18px;
+  }
+    [dir="rtl"] .layout--threecol-section > .layout__region--first {
       margin-left: 18px;
-    }
-
-    [dir=ltr] .layout--threecol-section > .layout__region--second {
-    margin-right: 18px;
-    margin-left: 18px;
-    }
+  }
 
-    [dir=rtl] .layout--threecol-section > .layout__region--second {
+    .layout--threecol-section > .layout__region--second {
       margin-left: 18px;
       margin-right: 18px;
     }
 
-    [dir=ltr] .layout--threecol-section > .layout__region--third {
-    margin-left: 18px;
-    }
+    [dir="ltr"] .layout--threecol-section > .layout__region--third {
+      margin-left: 18px;
+  }
 
-    [dir=rtl] .layout--threecol-section > .layout__region--third {
+    [dir="rtl"] .layout--threecol-section > .layout__region--third {
       margin-right: 18px;
-    }
+  }
     .layout--threecol-section--25-50-25 > .layout__region--first,
     .layout--threecol-section--25-50-25 > .layout__region--third {
       flex-basis: calc(25% - 18px);
diff --git a/css/layout/layout-builder-threecol-section.pcss.css b/css/layout/layout-builder-threecol-section.pcss.css
index 61ddc3e..2284ba8 100644
--- a/css/layout/layout-builder-threecol-section.pcss.css
+++ b/css/layout/layout-builder-threecol-section.pcss.css
@@ -11,12 +11,12 @@
 
   > .layout__region {
     flex: 1 0 100%;
-    margin-bottom: var(--grid-gap);
+    margin-block-end: var(--grid-gap);
 
     @media (--lg) {
       flex-grow: 0;
       flex-shrink: 0;
-      margin-bottom: 0;
+      margin-block-end: 0;
     }
   }
 }
@@ -24,16 +24,15 @@
 @media (--lg) {
   .layout--threecol-section {
     > .layout__region--first {
-      margin-right: calc(var(--grid-gap--md) * 0.5);
+      margin-inline-end: calc(var(--grid-gap--md) * 0.5);
     }
 
     > .layout__region--second {
-      margin-right: calc(var(--grid-gap--md) * 0.5);
-      margin-left: calc(var(--grid-gap--md) * 0.5);
+      margin-inline: calc(var(--grid-gap--md) * 0.5);
     }
 
     > .layout__region--third {
-      margin-left: calc(var(--grid-gap--md) * 0.5);
+      margin-inline-start: calc(var(--grid-gap--md) * 0.5);
     }
   }
 
diff --git a/css/layout/layout-builder-twocol-section.css b/css/layout/layout-builder-twocol-section.css
index 7ae13b7..0d976d3 100644
--- a/css/layout/layout-builder-twocol-section.css
+++ b/css/layout/layout-builder-twocol-section.css
@@ -83,9 +83,6 @@
 
 .layout--twocol-section > .layout__region {
     flex: 1 0 100%;
-  }
-
-[dir] .layout--twocol-section > .layout__region {
     margin-bottom: 18px;
   }
 
@@ -93,118 +90,115 @@
 
 .layout--twocol-section > .layout__region {
       flex-grow: 0;
-      flex-shrink: 0
-  }
-
-[dir] .layout--twocol-section > .layout__region {
+      flex-shrink: 0;
       margin-bottom: 0
   }
     }
 
 @media (min-width: 700px) {
-    .layout--twocol-section--50-50 > .layout__region--first {
-      flex-basis: calc(50% - 18px);
-    }
-    [dir=ltr] .layout--twocol-section--50-50 > .layout__region--first {
-    margin-right: 18px);
-    }
-    [dir=rtl] .layout--twocol-section--50-50 > .layout__region--first {
+    [dir="ltr"] .layout--twocol-section--50-50 > .layout__region--first {
+      margin-right: 18px);
+  }
+    [dir="rtl"] .layout--twocol-section--50-50 > .layout__region--first {
       margin-left: 18px);
-    }
-
-    .layout--twocol-section--50-50 > .layout__region--second {
+  }
+    .layout--twocol-section--50-50 > .layout__region--first {
       flex-basis: calc(50% - 18px);
     }
 
-    [dir=ltr] .layout--twocol-section--50-50 > .layout__region--second {
-    margin-left: 18px;
-    }
+    [dir="ltr"] .layout--twocol-section--50-50 > .layout__region--second {
+      margin-left: 18px;
+  }
 
-    [dir=rtl] .layout--twocol-section--50-50 > .layout__region--second {
+    [dir="rtl"] .layout--twocol-section--50-50 > .layout__region--second {
       margin-right: 18px;
+  }
+
+    .layout--twocol-section--50-50 > .layout__region--second {
+      flex-basis: calc(50% - 18px);
     }
+    [dir="ltr"] .layout--twocol-section--33-67 > .layout__region--first {
+      margin-right: 11.9988px);
+  }
+    [dir="rtl"] .layout--twocol-section--33-67 > .layout__region--first {
+      margin-left: 11.9988px);
+  }
     .layout--twocol-section--33-67 > .layout__region--first {
       flex-basis: calc(33.33% - 11.9988px);
     }
-    [dir=ltr] .layout--twocol-section--33-67 > .layout__region--first {
-    margin-right: 11.9988px);
-    }
-    [dir=rtl] .layout--twocol-section--33-67 > .layout__region--first {
-      margin-left: 11.9988px);
-    }
+
+    [dir="ltr"] .layout--twocol-section--33-67 > .layout__region--second {
+      margin-left: 23.9976px;
+  }
+
+    [dir="rtl"] .layout--twocol-section--33-67 > .layout__region--second {
+      margin-right: 23.9976px;
+  }
 
     .layout--twocol-section--33-67 > .layout__region--second {
       flex-basis: calc(66.66% - 23.9976px);
     }
-
-    [dir=ltr] .layout--twocol-section--33-67 > .layout__region--second {
-    margin-left: 23.9976px;
-    }
-
-    [dir=rtl] .layout--twocol-section--33-67 > .layout__region--second {
+    [dir="ltr"] .layout--twocol-section--67-33 > .layout__region--first {
       margin-right: 23.9976px;
-    }
+  }
+    [dir="rtl"] .layout--twocol-section--67-33 > .layout__region--first {
+      margin-left: 23.9976px;
+  }
     .layout--twocol-section--67-33 > .layout__region--first {
       flex-basis: calc(66.66% - 23.9976px);
     }
-    [dir=ltr] .layout--twocol-section--67-33 > .layout__region--first {
-    margin-right: 23.9976px;
-    }
-    [dir=rtl] .layout--twocol-section--67-33 > .layout__region--first {
-      margin-left: 23.9976px;
-    }
-
-    .layout--twocol-section--67-33 > .layout__region--second {
-      flex-basis: calc(33.33% - 11.9988px);
-    }
 
-    [dir=ltr] .layout--twocol-section--67-33 > .layout__region--second {
-    margin-left: 11.9988px;
-    }
+    [dir="ltr"] .layout--twocol-section--67-33 > .layout__region--second {
+      margin-left: 11.9988px;
+  }
 
-    [dir=rtl] .layout--twocol-section--67-33 > .layout__region--second {
+    [dir="rtl"] .layout--twocol-section--67-33 > .layout__region--second {
       margin-right: 11.9988px;
+  }
+
+    .layout--twocol-section--67-33 > .layout__region--second {
+      flex-basis: calc(33.33% - 11.9988px);
     }
+    [dir="ltr"] .layout--twocol-section--25-75 > .layout__region--first {
+      margin-right: 9px;
+  }
+    [dir="rtl"] .layout--twocol-section--25-75 > .layout__region--first {
+      margin-left: 9px;
+  }
     .layout--twocol-section--25-75 > .layout__region--first {
       flex-basis: calc(25% - 9px);
     }
-    [dir=ltr] .layout--twocol-section--25-75 > .layout__region--first {
-    margin-right: 9px;
-    }
-    [dir=rtl] .layout--twocol-section--25-75 > .layout__region--first {
-      margin-left: 9px;
-    }
+
+    [dir="ltr"] .layout--twocol-section--25-75 > .layout__region--second {
+      margin-left: 27px;
+  }
+
+    [dir="rtl"] .layout--twocol-section--25-75 > .layout__region--second {
+      margin-right: 27px;
+  }
 
     .layout--twocol-section--25-75 > .layout__region--second {
       flex-basis: calc(75% - 27px);
     }
-
-    [dir=ltr] .layout--twocol-section--25-75 > .layout__region--second {
-    margin-left: 27px;
-    }
-
-    [dir=rtl] .layout--twocol-section--25-75 > .layout__region--second {
+    [dir="ltr"] .layout--twocol-section--75-25 > .layout__region--first {
       margin-right: 27px;
-    }
+  }
+    [dir="rtl"] .layout--twocol-section--75-25 > .layout__region--first {
+      margin-left: 27px;
+  }
     .layout--twocol-section--75-25 > .layout__region--first {
       flex-basis: calc(75% - 27px);
     }
-    [dir=ltr] .layout--twocol-section--75-25 > .layout__region--first {
-    margin-right: 27px;
-    }
-    [dir=rtl] .layout--twocol-section--75-25 > .layout__region--first {
-      margin-left: 27px;
-    }
 
-    .layout--twocol-section--75-25 > .layout__region--second {
-      flex-basis: calc(25% - 9px);
-    }
-
-    [dir=ltr] .layout--twocol-section--75-25 > .layout__region--second {
-    margin-left: 9px;
-    }
+    [dir="ltr"] .layout--twocol-section--75-25 > .layout__region--second {
+      margin-left: 9px;
+  }
 
-    [dir=rtl] .layout--twocol-section--75-25 > .layout__region--second {
+    [dir="rtl"] .layout--twocol-section--75-25 > .layout__region--second {
       margin-right: 9px;
+  }
+
+    .layout--twocol-section--75-25 > .layout__region--second {
+      flex-basis: calc(25% - 9px);
     }
 }
diff --git a/css/layout/layout-builder-twocol-section.pcss.css b/css/layout/layout-builder-twocol-section.pcss.css
index aa0369b..835ba9a 100644
--- a/css/layout/layout-builder-twocol-section.pcss.css
+++ b/css/layout/layout-builder-twocol-section.pcss.css
@@ -11,12 +11,12 @@
 
   > .layout__region {
     flex: 1 0 100%;
-    margin-bottom: var(--grid-gap);
+    margin-block-end: var(--grid-gap);
 
     @media (--md) {
       flex-grow: 0;
       flex-shrink: 0;
-      margin-bottom: 0;
+      margin-block-end: 0;
     }
   }
 }
@@ -25,60 +25,60 @@
   .layout--twocol-section--50-50 {
     > .layout__region--first {
       flex-basis: calc(50% - (var(--grid-gap--md) * 0.5));
-      margin-right: calc(var(--grid-gap--md) * 0.5));
+      margin-inline-end: calc(var(--grid-gap--md) * 0.5));
     }
 
     > .layout__region--second {
       flex-basis: calc(50% - (var(--grid-gap--md) * 0.5));
-      margin-left: calc(var(--grid-gap--md) * 0.5);
+      margin-inline-start: calc(var(--grid-gap--md) * 0.5);
     }
   }
 
   .layout--twocol-section--33-67 {
     > .layout__region--first {
       flex-basis: calc(33.33% - (var(--grid-gap--md) * 0.3333));
-      margin-right: calc(var(--grid-gap--md) * 0.3333));
+      margin-inline-end: calc(var(--grid-gap--md) * 0.3333));
     }
 
     > .layout__region--second {
       flex-basis: calc(66.66% - (var(--grid-gap--md) * 0.6666));
-      margin-left: calc(var(--grid-gap--md) * 0.6666);
+      margin-inline-start: calc(var(--grid-gap--md) * 0.6666);
     }
   }
 
   .layout--twocol-section--67-33 {
     > .layout__region--first {
       flex-basis: calc(66.66% - (var(--grid-gap--md) * 0.6666));
-      margin-right: calc(var(--grid-gap--md) * 0.6666);
+      margin-inline-end: calc(var(--grid-gap--md) * 0.6666);
     }
 
     > .layout__region--second {
       flex-basis: calc(33.33% - (var(--grid-gap--md) * 0.3333));
-      margin-left: calc(var(--grid-gap--md) * 0.3333);
+      margin-inline-start: calc(var(--grid-gap--md) * 0.3333);
     }
   }
 
   .layout--twocol-section--25-75 {
     > .layout__region--first {
       flex-basis: calc(25% - (var(--grid-gap--md) * 0.25));
-      margin-right: calc(var(--grid-gap--md) * 0.25);
+      margin-inline-end: calc(var(--grid-gap--md) * 0.25);
     }
 
     > .layout__region--second {
       flex-basis: calc(75% - (var(--grid-gap--md) * 0.75));
-      margin-left: calc(var(--grid-gap--md) * 0.75);
+      margin-inline-start: calc(var(--grid-gap--md) * 0.75);
     }
   }
 
   .layout--twocol-section--75-25 {
     > .layout__region--first {
       flex-basis: calc(75% - (var(--grid-gap--md) * 0.75));
-      margin-right: calc(var(--grid-gap--md) * 0.75);
+      margin-inline-end: calc(var(--grid-gap--md) * 0.75);
     }
 
     > .layout__region--second {
       flex-basis: calc(25% - (var(--grid-gap--md) * 0.25));
-      margin-left: calc(var(--grid-gap--md) * 0.25);
+      margin-inline-start: calc(var(--grid-gap--md) * 0.25);
     }
   }
 }
diff --git a/css/layout/layout-content-narrow.css b/css/layout/layout-content-narrow.css
index 28c7e7a..8a4a1fc 100644
--- a/css/layout/layout-content-narrow.css
+++ b/css/layout/layout-content-narrow.css
@@ -152,109 +152,119 @@
 
 @media (min-width: 700px) {
 
-[dir=ltr] .layout--content-narrow.text-content blockquote:before, [dir=ltr] .layout--content-narrow .text-content blockquote:before, [dir=ltr] .layout--pass--content-narrow > *.text-content blockquote:before, [dir=ltr] .layout--pass--content-narrow > * .text-content blockquote:before {
-    left: calc(-1*((100vw - 504px)/14 + 36px))
-      }
+[dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"]  .layout--content-narrow .text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:before {
+          left: calc(-1*((100vw - 504px)/14 + 36px));
+  }
 
-[dir=rtl] .layout--content-narrow.text-content blockquote:before, [dir=rtl] .layout--content-narrow .text-content blockquote:before, [dir=rtl] .layout--pass--content-narrow > *.text-content blockquote:before, [dir=rtl] .layout--pass--content-narrow > * .text-content blockquote:before {
-          right: calc(-1*((100vw - 504px)/14 + 36px))
-      }
+[dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"]  .layout--content-narrow .text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:before {
+          right: calc(-1*((100vw - 504px)/14 + 36px));
+  }
         }
 
 @media (min-width: 1000px) {
 
-[dir=ltr] .layout--content-narrow.text-content blockquote:before, [dir=ltr] .layout--content-narrow .text-content blockquote:before, [dir=ltr] .layout--pass--content-narrow > *.text-content blockquote:before, [dir=ltr] .layout--pass--content-narrow > * .text-content blockquote:before {
-    left: calc(-1*((100vw - 519px)/14 + 36px))
-      }
+[dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"]  .layout--content-narrow .text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:before {
+          left: calc(-1*((100vw - 519px)/14 + 36px));
+  }
 
-[dir=rtl] .layout--content-narrow.text-content blockquote:before, [dir=rtl] .layout--content-narrow .text-content blockquote:before, [dir=rtl] .layout--pass--content-narrow > *.text-content blockquote:before, [dir=rtl] .layout--pass--content-narrow > * .text-content blockquote:before {
-          right: calc(-1*((100vw - 519px)/14 + 36px))
-      }
+[dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"]  .layout--content-narrow .text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:before {
+          right: calc(-1*((100vw - 519px)/14 + 36px));
+  }
         }
 
 @media (min-width: 1200px) {
 
-[dir=ltr] .layout--content-narrow.text-content blockquote:before, [dir=ltr] .layout--content-narrow .text-content blockquote:before, [dir=ltr] .layout--pass--content-narrow > *.text-content blockquote:before, [dir=ltr] .layout--pass--content-narrow > * .text-content blockquote:before {
-    left: calc(-1*((100vw - 645px)/14 + 36px))
-      }
+[dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"]  .layout--content-narrow .text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:before {
+          left: calc(-1*((100vw - 645px)/14 + 36px));
+  }
 
-[dir=rtl] .layout--content-narrow.text-content blockquote:before, [dir=rtl] .layout--content-narrow .text-content blockquote:before, [dir=rtl] .layout--pass--content-narrow > *.text-content blockquote:before, [dir=rtl] .layout--pass--content-narrow > * .text-content blockquote:before {
-          right: calc(-1*((100vw - 645px)/14 + 36px))
-      }
+[dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"]  .layout--content-narrow .text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:before {
+          right: calc(-1*((100vw - 645px)/14 + 36px));
+  }
         }
 
 @media (min-width: 1440px) {
 
-[dir=ltr] .layout--content-narrow.text-content blockquote:before, [dir=ltr] .layout--content-narrow .text-content blockquote:before, [dir=ltr] .layout--pass--content-narrow > *.text-content blockquote:before, [dir=ltr] .layout--pass--content-narrow > * .text-content blockquote:before {
-    left: -93.85714px
-      }
+[dir="ltr"] .layout--content-narrow.text-content blockquote:before,[dir="ltr"]  .layout--content-narrow .text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:before {
+          left: -93.85714px;
+  }
 
-[dir=rtl] .layout--content-narrow.text-content blockquote:before, [dir=rtl] .layout--content-narrow .text-content blockquote:before, [dir=rtl] .layout--pass--content-narrow > *.text-content blockquote:before, [dir=rtl] .layout--pass--content-narrow > * .text-content blockquote:before {
-          right: -93.85714px
-      }
+[dir="rtl"] .layout--content-narrow.text-content blockquote:before,[dir="rtl"]  .layout--content-narrow .text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:before,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:before {
+          right: -93.85714px;
+  }
         }
 
 @media (min-width: 700px) {
 
+[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"]  .layout--content-narrow .text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          left: calc(-1*((100vw - 504px)/14 + 36px));
+  }
+
+[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"]  .layout--content-narrow .text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          right: calc(-1*((100vw - 504px)/14 + 36px));
+  }
+
+[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"]  .layout--content-narrow .text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          margin-left: 2px;
+  }
+
+[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"]  .layout--content-narrow .text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          margin-right: 2px;
+  }
+
 .layout--content-narrow.text-content blockquote:after, .layout--content-narrow .text-content blockquote:after, .layout--pass--content-narrow > *.text-content blockquote:after, .layout--pass--content-narrow > * .text-content blockquote:after {
           width: 18px;
           height: calc(100% - 45px)
       }
-
-[dir=ltr] .layout--content-narrow.text-content blockquote:after, [dir=ltr] .layout--content-narrow .text-content blockquote:after, [dir=ltr] .layout--pass--content-narrow > *.text-content blockquote:after, [dir=ltr] .layout--pass--content-narrow > * .text-content blockquote:after {
-    left: calc(-1*((100vw - 504px)/14 + 36px));
-    margin-left: 2px
-      }
-
-[dir=rtl] .layout--content-narrow.text-content blockquote:after, [dir=rtl] .layout--content-narrow .text-content blockquote:after, [dir=rtl] .layout--pass--content-narrow > *.text-content blockquote:after, [dir=rtl] .layout--pass--content-narrow > * .text-content blockquote:after {
-          right: calc(-1*((100vw - 504px)/14 + 36px));
-          margin-right: 2px
-      }
         }
 
 @media (min-width: 1000px) {
 
-[dir=ltr] .layout--content-narrow.text-content blockquote:after, [dir=ltr] .layout--content-narrow .text-content blockquote:after, [dir=ltr] .layout--pass--content-narrow > *.text-content blockquote:after, [dir=ltr] .layout--pass--content-narrow > * .text-content blockquote:after {
-    left: calc(-1*((100vw - 519px)/14 + 36px))
-      }
+[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"]  .layout--content-narrow .text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          left: calc(-1*((100vw - 519px)/14 + 36px));
+  }
 
-[dir=rtl] .layout--content-narrow.text-content blockquote:after, [dir=rtl] .layout--content-narrow .text-content blockquote:after, [dir=rtl] .layout--pass--content-narrow > *.text-content blockquote:after, [dir=rtl] .layout--pass--content-narrow > * .text-content blockquote:after {
-          right: calc(-1*((100vw - 519px)/14 + 36px))
-      }
+[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"]  .layout--content-narrow .text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          right: calc(-1*((100vw - 519px)/14 + 36px));
+  }
         }
 
 @media (min-width: 1200px) {
 
-[dir=ltr] .layout--content-narrow.text-content blockquote:after, [dir=ltr] .layout--content-narrow .text-content blockquote:after, [dir=ltr] .layout--pass--content-narrow > *.text-content blockquote:after, [dir=ltr] .layout--pass--content-narrow > * .text-content blockquote:after {
-    left: calc(-1*((100vw - 645px)/14 + 36px))
-      }
+[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"]  .layout--content-narrow .text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          left: calc(-1*((100vw - 645px)/14 + 36px));
+  }
 
-[dir=rtl] .layout--content-narrow.text-content blockquote:after, [dir=rtl] .layout--content-narrow .text-content blockquote:after, [dir=rtl] .layout--pass--content-narrow > *.text-content blockquote:after, [dir=rtl] .layout--pass--content-narrow > * .text-content blockquote:after {
-          right: calc(-1*((100vw - 645px)/14 + 36px))
-      }
+[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"]  .layout--content-narrow .text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          right: calc(-1*((100vw - 645px)/14 + 36px));
+  }
         }
 
 @media (min-width: 1440px) {
 
-[dir=ltr] .layout--content-narrow.text-content blockquote:after, [dir=ltr] .layout--content-narrow .text-content blockquote:after, [dir=ltr] .layout--pass--content-narrow > *.text-content blockquote:after, [dir=ltr] .layout--pass--content-narrow > * .text-content blockquote:after {
-    left: -93.85714px
-      }
+[dir="ltr"] .layout--content-narrow.text-content blockquote:after,[dir="ltr"]  .layout--content-narrow .text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          left: -93.85714px;
+  }
 
-[dir=rtl] .layout--content-narrow.text-content blockquote:after, [dir=rtl] .layout--content-narrow .text-content blockquote:after, [dir=rtl] .layout--pass--content-narrow > *.text-content blockquote:after, [dir=rtl] .layout--pass--content-narrow > * .text-content blockquote:after {
-          right: -93.85714px
-      }
+[dir="rtl"] .layout--content-narrow.text-content blockquote:after,[dir="rtl"]  .layout--content-narrow .text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote:after,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote:after {
+          right: -93.85714px;
+  }
         }
 
 @media (min-width: 700px) {
 
-.layout--content-narrow.text-content blockquote, .layout--content-narrow .text-content blockquote, .layout--pass--content-narrow > *.text-content blockquote, .layout--pass--content-narrow > * .text-content blockquote {
-        width: calc(10*(100vw - 504px)/14 + 324px)
-    }
+[dir="ltr"] .layout--content-narrow.text-content blockquote,[dir="ltr"]  .layout--content-narrow .text-content blockquote,[dir="ltr"]  .layout--pass--content-narrow > *.text-content blockquote,[dir="ltr"]  .layout--pass--content-narrow > * .text-content blockquote {
+        padding-left: 0;
+  }
+
+[dir="rtl"] .layout--content-narrow.text-content blockquote,[dir="rtl"]  .layout--content-narrow .text-content blockquote,[dir="rtl"]  .layout--pass--content-narrow > *.text-content blockquote,[dir="rtl"]  .layout--pass--content-narrow > * .text-content blockquote {
+        padding-right: 0;
+  }
 
-[dir] .layout--content-narrow.text-content blockquote, [dir] .layout--content-narrow .text-content blockquote, [dir] .layout--pass--content-narrow > *.text-content blockquote, [dir] .layout--pass--content-narrow > * .text-content blockquote {
+.layout--content-narrow.text-content blockquote, .layout--content-narrow .text-content blockquote, .layout--pass--content-narrow > *.text-content blockquote, .layout--pass--content-narrow > * .text-content blockquote {
+        width: calc(10*(100vw - 504px)/14 + 324px);
         margin-top: 54px;
-        margin-bottom: 54px;
-        padding: 0
+        margin-bottom: 54px
     }
       }
 
@@ -282,10 +292,7 @@
 @media (min-width: 700px) {
 
 .layout--content-narrow.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--pass--content-narrow > * .text-content pre {
-        width: calc(10*(100vw - 504px)/14 + 324px)
-    }
-
-[dir] .layout--content-narrow.text-content pre, [dir] .layout--content-narrow .text-content pre, [dir] .layout--pass--content-narrow > *.text-content pre, [dir] .layout--pass--content-narrow > * .text-content pre {
+        width: calc(10*(100vw - 504px)/14 + 324px);
         margin-top: 54px;
         margin-bottom: 54px
     }
@@ -293,16 +300,16 @@
 
 @media (min-width: 1000px) {
 
-.layout--content-narrow.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--pass--content-narrow > * .text-content pre {
-        width: calc(12*(100vw - 519px)/14 + 396px)
-    }
+[dir="ltr"] .layout--content-narrow.text-content pre,[dir="ltr"]  .layout--content-narrow .text-content pre,[dir="ltr"]  .layout--pass--content-narrow > *.text-content pre,[dir="ltr"]  .layout--pass--content-narrow > * .text-content pre {
+        margin-left: calc(-1*((100vw - 519px)/14 + 36px));
+  }
 
-[dir=ltr] .layout--content-narrow.text-content pre, [dir=ltr] .layout--content-narrow .text-content pre, [dir=ltr] .layout--pass--content-narrow > *.text-content pre, [dir=ltr] .layout--pass--content-narrow > * .text-content pre {
-    margin-left: calc(-1*((100vw - 519px)/14 + 36px))
-    }
+[dir="rtl"] .layout--content-narrow.text-content pre,[dir="rtl"]  .layout--content-narrow .text-content pre,[dir="rtl"]  .layout--pass--content-narrow > *.text-content pre,[dir="rtl"]  .layout--pass--content-narrow > * .text-content pre {
+        margin-right: calc(-1*((100vw - 519px)/14 + 36px));
+  }
 
-[dir=rtl] .layout--content-narrow.text-content pre, [dir=rtl] .layout--content-narrow .text-content pre, [dir=rtl] .layout--pass--content-narrow > *.text-content pre, [dir=rtl] .layout--pass--content-narrow > * .text-content pre {
-        margin-right: calc(-1*((100vw - 519px)/14 + 36px))
+.layout--content-narrow.text-content pre, .layout--content-narrow .text-content pre, .layout--pass--content-narrow > *.text-content pre, .layout--pass--content-narrow > * .text-content pre {
+        width: calc(12*(100vw - 519px)/14 + 396px)
     }
       }
 
diff --git a/css/layout/layout-content-narrow.pcss.css b/css/layout/layout-content-narrow.pcss.css
index 9d723cc..c51726d 100644
--- a/css/layout/layout-content-narrow.pcss.css
+++ b/css/layout/layout-content-narrow.pcss.css
@@ -59,48 +59,47 @@
     blockquote {
       &:before {
         @media (--grid-md) {
-          left: calc(-1 * (var(--grid-col-width--md) + var(--grid-gap--md)));
+          inset-inline-start: calc(-1 * (var(--grid-col-width--md) + var(--grid-gap--md)));
         }
 
         @media (--lg) {
-          left: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg)));
+          inset-inline-start: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg)));
         }
 
         @media (--nav) {
-          left: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav)));
+          inset-inline-start: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav)));
         }
 
         @media (--grid-max) {
-          left: calc(-1 * (var(--grid-col-width--max) + var(--grid-gap--max)));
+          inset-inline-start: calc(-1 * (var(--grid-col-width--max) + var(--grid-gap--max)));
         }
       }
 
       &:after {
         @media (--grid-md) {
-          left: calc(-1 * (var(--grid-col-width--md) + var(--grid-gap--md)));
+          inset-inline-start: calc(-1 * (var(--grid-col-width--md) + var(--grid-gap--md)));
           width: var(--sp);
           height: calc(100% - 45px);
-          margin-left: 2px;
+          margin-inline-start: 2px;
         }
 
         @media (--lg) {
-          left: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg)));
+          inset-inline-start: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg)));
         }
 
         @media (--nav) {
-          left: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav)));
+          inset-inline-start: calc(-1 * (var(--grid-col-width--nav) + var(--grid-gap--nav)));
         }
 
         @media (--grid-max) {
-          left: calc(-1 * (var(--grid-col-width--max) + var(--grid-gap--max)));
+          inset-inline-start: calc(-1 * (var(--grid-col-width--max) + var(--grid-gap--max)));
         }
       }
 
       @media (--grid-md) {
         width: calc(10 * var(--grid-col-width--md) + 9 * var(--grid-gap--md));
-        margin-top: var(--sp3);
-        margin-bottom: var(--sp3);
-        padding: 0;
+        margin-block: var(--sp3);
+        padding-inline-start: 0;
       }
 
       @media (--lg) {
@@ -119,13 +118,12 @@
     pre {
       @media (--grid-md) {
         width: calc(10 * var(--grid-col-width--md) + 9 * var(--grid-gap--md));
-        margin-top: var(--sp3);
-        margin-bottom: var(--sp3);
+        margin-block: var(--sp3);
       }
 
       @media (--lg) {
         width: calc(12 * var(--grid-col-width--lg) + 11 * var(--grid-gap--lg));
-        margin-left: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg)));
+        margin-inline-start: calc(-1 * (var(--grid-col-width--lg) + var(--grid-gap--lg)));
       }
 
       @media (--nav) {
diff --git a/css/layout/layout-discovery-section-layout.css b/css/layout/layout-discovery-section-layout.css
index 75c2850..f5f59a7 100644
--- a/css/layout/layout-discovery-section-layout.css
+++ b/css/layout/layout-discovery-section-layout.css
@@ -76,20 +76,20 @@
   /* Form */
 }
 
-[dir] .layout {
+.layout {
   margin-bottom: 18px;
 }
 
 @media (min-width: 700px) {
 
-[dir] .layout {
+.layout {
     margin-bottom: 36px
 }
   }
 
 @media (min-width: 1000px) {
 
-[dir] .layout {
+.layout {
     margin-bottom: 54px
 }
   }
diff --git a/css/layout/layout-discovery-section-layout.pcss.css b/css/layout/layout-discovery-section-layout.pcss.css
index 3959762..d3217da 100644
--- a/css/layout/layout-discovery-section-layout.pcss.css
+++ b/css/layout/layout-discovery-section-layout.pcss.css
@@ -6,13 +6,13 @@
 @import "../base/variables.pcss.css";
 
 .layout {
-  margin-bottom: var(--sp);
+  margin-block-end: var(--sp);
 
   @media (--md) {
-    margin-bottom: var(--sp2);
+    margin-block-end: var(--sp2);
   }
 
   @media (--lg) {
-    margin-bottom: var(--sp3);
+    margin-block-end: var(--sp3);
   }
 }
diff --git a/css/layout/layout-footer.css b/css/layout/layout-footer.css
index 6bcb83c..15e9ba0 100644
--- a/css/layout/layout-footer.css
+++ b/css/layout/layout-footer.css
@@ -76,40 +76,37 @@
   /* Form */
 }
 
-[dir] .site-footer__inner {
+.site-footer__inner {
   padding-top: 36px;
   padding-bottom: 36px;
 }
 
 @media (min-width: 1200px) {
 
-[dir] .site-footer__inner {
+.site-footer__inner {
     padding-top: 72px;
     padding-bottom: 234px
 }
   }
 
-[dir] .region--footer_top__inner > *, [dir] .region--footer_bottom__inner > * {
+.region--footer_top__inner > *, .region--footer_bottom__inner > * {
     margin-bottom: 36px;
   }
 
 @media (min-width: 700px) {
 
 .region--footer_top__inner > *, .region--footer_bottom__inner > * {
-      flex: 1
-  }
-
-[dir] .region--footer_top__inner > *, [dir] .region--footer_bottom__inner > * {
+      flex: 1;
       margin-bottom: 0
   }
 
-      [dir=ltr] .region--footer_top__inner > *:not(:last-child), [dir=ltr] .region--footer_bottom__inner > *:not(:last-child) {
-    margin-right: 36px;
-      }
+      [dir="ltr"] .region--footer_top__inner > *:not(:last-child),[dir="ltr"]  .region--footer_bottom__inner > *:not(:last-child) {
+        margin-right: 36px;
+  }
 
-      [dir=rtl] .region--footer_top__inner > *:not(:last-child), [dir=rtl] .region--footer_bottom__inner > *:not(:last-child) {
+      [dir="rtl"] .region--footer_top__inner > *:not(:last-child),[dir="rtl"]  .region--footer_bottom__inner > *:not(:last-child) {
         margin-left: 36px;
-      }
+  }
     }
 
 @media (min-width: 700px) {
diff --git a/css/layout/layout-footer.pcss.css b/css/layout/layout-footer.pcss.css
index 1085440..00fc28f 100644
--- a/css/layout/layout-footer.pcss.css
+++ b/css/layout/layout-footer.pcss.css
@@ -6,26 +6,24 @@
 @import "../base/variables.pcss.css";
 
 .site-footer__inner {
-  padding-top: var(--sp2);
-  padding-bottom: var(--sp2);
+  padding-block: var(--sp2);
 
   @media (--nav) {
-    padding-top: var(--sp4);
-    padding-bottom: calc(13 * var(--sp));
+    padding-block: var(--sp4) calc(13 * var(--sp));
   }
 }
 
 .region--footer_top__inner,
 .region--footer_bottom__inner {
   > * {
-    margin-bottom: var(--sp2);
+    margin-block-end: var(--sp2);
 
     @media (--md) {
       flex: 1;
-      margin-bottom: 0;
+      margin-block-end: 0;
 
       &:not(:last-child) {
-        margin-right: var(--sp2);
+        margin-inline-end: var(--sp2);
       }
     }
   }
diff --git a/css/layout/layout-views-grid-horizontal.css b/css/layout/layout-views-grid-horizontal.css
index 40f49dd..f322a24 100644
--- a/css/layout/layout-views-grid-horizontal.css
+++ b/css/layout/layout-views-grid-horizontal.css
@@ -81,90 +81,90 @@
   flex-wrap: wrap;
 }
 
+[dir="ltr"] .views-view-grid--horizontal.cols-1 > * {
+      margin-right: 0;
+}
+
+[dir="rtl"] .views-view-grid--horizontal.cols-1 > * {
+      margin-left: 0;
+}
+
 .views-view-grid--horizontal.cols-1 > * {
       flex-basis: 100%;
     }
 
-[dir=ltr] .views-view-grid--horizontal.cols-1 > * {
-  margin-right: 0;
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-2 > * {
+      margin-right: 0;
+}
 
-[dir=rtl] .views-view-grid--horizontal.cols-1 > * {
+[dir="rtl"] .views-view-grid--horizontal.cols-2 > * {
       margin-left: 0;
-    }
+}
 
 .views-view-grid--horizontal.cols-2 > * {
       flex-basis: 100%;
     }
 
-[dir=ltr] .views-view-grid--horizontal.cols-2 > * {
-  margin-right: 0;
-    }
-
-[dir=rtl] .views-view-grid--horizontal.cols-2 > * {
-      margin-left: 0;
-    }
-
 /* 2 column layout. */
 
 @media (min-width: 700px) {
 
-.views-view-grid--horizontal.cols-2 > * {
-        flex-basis: calc(50% - 9px)
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-2 > * {
+        margin-right: 18px;
+  }
 
-[dir=ltr] .views-view-grid--horizontal.cols-2 > * {
-    margin-right: 18px
-    }
+[dir="rtl"] .views-view-grid--horizontal.cols-2 > * {
+        margin-left: 18px;
+  }
 
-[dir=rtl] .views-view-grid--horizontal.cols-2 > * {
-        margin-left: 18px
+.views-view-grid--horizontal.cols-2 > * {
+        flex-basis: calc(50% - 9px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-2 > *:nth-child(2n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-2 > *:nth-child(2n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-2 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-2 > *:nth-child(2n) {
           margin-left: 0;
-        }
+  }
       }
 
-.views-view-grid--horizontal.cols-3 > * {
-      flex-basis: 100%;
-    }
-
-[dir=ltr] .views-view-grid--horizontal.cols-3 > * {
-  margin-right: 0;
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-3 > * {
+      margin-right: 0;
+}
 
-[dir=rtl] .views-view-grid--horizontal.cols-3 > * {
+[dir="rtl"] .views-view-grid--horizontal.cols-3 > * {
       margin-left: 0;
+}
+
+.views-view-grid--horizontal.cols-3 > * {
+      flex-basis: 100%;
     }
 
 /* 2 column layout. */
 
 @media (min-width: 700px) {
 
-.views-view-grid--horizontal.cols-3 > * {
-        flex-basis: calc(50% - 9px)
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-3 > * {
+        margin-right: 18px;
+  }
 
-[dir=ltr] .views-view-grid--horizontal.cols-3 > * {
-    margin-right: 18px
-    }
+[dir="rtl"] .views-view-grid--horizontal.cols-3 > * {
+        margin-left: 18px;
+  }
 
-[dir=rtl] .views-view-grid--horizontal.cols-3 > * {
-        margin-left: 18px
+.views-view-grid--horizontal.cols-3 > * {
+        flex-basis: calc(50% - 9px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 3 column layout. */
@@ -175,58 +175,58 @@
         flex-basis: calc(33.33333% - 12px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-3 > *:nth-child(2n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-3 > *:nth-child(3n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-3 > *:nth-child(3n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-3 > *:nth-child(3n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-3 > *:nth-child(3n) {
           margin-left: 0;
-        }
+  }
       }
 
-.views-view-grid--horizontal.cols-4 > * {
-      flex-basis: 100%;
-    }
-
-[dir=ltr] .views-view-grid--horizontal.cols-4 > * {
-  margin-right: 0;
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-4 > * {
+      margin-right: 0;
+}
 
-[dir=rtl] .views-view-grid--horizontal.cols-4 > * {
+[dir="rtl"] .views-view-grid--horizontal.cols-4 > * {
       margin-left: 0;
+}
+
+.views-view-grid--horizontal.cols-4 > * {
+      flex-basis: 100%;
     }
 
 /* 2 column layout. */
 
 @media (min-width: 700px) {
 
-.views-view-grid--horizontal.cols-4 > * {
-        flex-basis: calc(50% - 9px)
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-4 > * {
+        margin-right: 18px;
+  }
 
-[dir=ltr] .views-view-grid--horizontal.cols-4 > * {
-    margin-right: 18px
-    }
+[dir="rtl"] .views-view-grid--horizontal.cols-4 > * {
+        margin-left: 18px;
+  }
 
-[dir=rtl] .views-view-grid--horizontal.cols-4 > * {
-        margin-left: 18px
+.views-view-grid--horizontal.cols-4 > * {
+        flex-basis: calc(50% - 9px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 4 column layout. */
@@ -237,58 +237,58 @@
         flex-basis: calc(25% - 13.5px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-4 > *:nth-child(2n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-4 > *:nth-child(4n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-4 > *:nth-child(4n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-4 > *:nth-child(4n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-4 > *:nth-child(4n) {
           margin-left: 0;
-        }
+  }
       }
 
-.views-view-grid--horizontal.cols-5 > * {
-      flex-basis: 100%;
-    }
-
-[dir=ltr] .views-view-grid--horizontal.cols-5 > * {
-  margin-right: 0;
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-5 > * {
+      margin-right: 0;
+}
 
-[dir=rtl] .views-view-grid--horizontal.cols-5 > * {
+[dir="rtl"] .views-view-grid--horizontal.cols-5 > * {
       margin-left: 0;
+}
+
+.views-view-grid--horizontal.cols-5 > * {
+      flex-basis: 100%;
     }
 
 /* 2 column layout. */
 
 @media (min-width: 500px) {
 
-.views-view-grid--horizontal.cols-5 > * {
-        flex-basis: calc(50% - 9px)
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-5 > * {
+        margin-right: 18px;
+  }
 
-[dir=ltr] .views-view-grid--horizontal.cols-5 > * {
-    margin-right: 18px
-    }
+[dir="rtl"] .views-view-grid--horizontal.cols-5 > * {
+        margin-left: 18px;
+  }
 
-[dir=rtl] .views-view-grid--horizontal.cols-5 > * {
-        margin-left: 18px
+.views-view-grid--horizontal.cols-5 > * {
+        flex-basis: calc(50% - 9px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 3 column layout. */
@@ -299,21 +299,21 @@
         flex-basis: calc(33.33333% - 12px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(2n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 5 column layout. */
@@ -324,58 +324,58 @@
         flex-basis: calc(20% - 14.4px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(3n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-5 > *:nth-child(5n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-5 > *:nth-child(5n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-5 > *:nth-child(5n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-5 > *:nth-child(5n) {
           margin-left: 0;
-        }
+  }
       }
 
-.views-view-grid--horizontal.cols-6 > * {
-      flex-basis: 100%;
-    }
-
-[dir=ltr] .views-view-grid--horizontal.cols-6 > * {
-  margin-right: 0;
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-6 > * {
+      margin-right: 0;
+}
 
-[dir=rtl] .views-view-grid--horizontal.cols-6 > * {
+[dir="rtl"] .views-view-grid--horizontal.cols-6 > * {
       margin-left: 0;
+}
+
+.views-view-grid--horizontal.cols-6 > * {
+      flex-basis: 100%;
     }
 
 /* 2 column layout. */
 
 @media (min-width: 500px) {
 
-.views-view-grid--horizontal.cols-6 > * {
-        flex-basis: calc(50% - 9px)
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-6 > * {
+        margin-right: 18px;
+  }
 
-[dir=ltr] .views-view-grid--horizontal.cols-6 > * {
-    margin-right: 18px
-    }
+[dir="rtl"] .views-view-grid--horizontal.cols-6 > * {
+        margin-left: 18px;
+  }
 
-[dir=rtl] .views-view-grid--horizontal.cols-6 > * {
-        margin-left: 18px
+.views-view-grid--horizontal.cols-6 > * {
+        flex-basis: calc(50% - 9px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 3 column layout. */
@@ -386,21 +386,21 @@
         flex-basis: calc(33.33333% - 12px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(2n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 6 column layout. */
@@ -411,58 +411,58 @@
         flex-basis: calc(16.66667% - 15px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(3n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-6 > *:nth-child(6n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-6 > *:nth-child(6n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-6 > *:nth-child(6n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-6 > *:nth-child(6n) {
           margin-left: 0;
-        }
+  }
       }
 
-.views-view-grid--horizontal.cols-7 > * {
-      flex-basis: 100%;
-    }
-
-[dir=ltr] .views-view-grid--horizontal.cols-7 > * {
-  margin-right: 0;
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-7 > * {
+      margin-right: 0;
+}
 
-[dir=rtl] .views-view-grid--horizontal.cols-7 > * {
+[dir="rtl"] .views-view-grid--horizontal.cols-7 > * {
       margin-left: 0;
+}
+
+.views-view-grid--horizontal.cols-7 > * {
+      flex-basis: 100%;
     }
 
 /* 2 column layout. */
 
 @media (min-width: 500px) {
 
-.views-view-grid--horizontal.cols-7 > * {
-        flex-basis: calc(50% - 9px)
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-7 > * {
+        margin-right: 18px;
+  }
 
-[dir=ltr] .views-view-grid--horizontal.cols-7 > * {
-    margin-right: 18px
-    }
+[dir="rtl"] .views-view-grid--horizontal.cols-7 > * {
+        margin-left: 18px;
+  }
 
-[dir=rtl] .views-view-grid--horizontal.cols-7 > * {
-        margin-left: 18px
+.views-view-grid--horizontal.cols-7 > * {
+        flex-basis: calc(50% - 9px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 3 column layout. */
@@ -473,21 +473,21 @@
         flex-basis: calc(33.33333% - 12px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(2n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 7 column layout. */
@@ -498,58 +498,58 @@
         flex-basis: calc(14.28571% - 15.42857px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(3n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-7 > *:nth-child(7n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-7 > *:nth-child(7n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-7 > *:nth-child(7n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-7 > *:nth-child(7n) {
           margin-left: 0;
-        }
+  }
       }
 
-.views-view-grid--horizontal.cols-8 > * {
-      flex-basis: 100%;
-    }
-
-[dir=ltr] .views-view-grid--horizontal.cols-8 > * {
-  margin-right: 0;
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-8 > * {
+      margin-right: 0;
+}
 
-[dir=rtl] .views-view-grid--horizontal.cols-8 > * {
+[dir="rtl"] .views-view-grid--horizontal.cols-8 > * {
       margin-left: 0;
+}
+
+.views-view-grid--horizontal.cols-8 > * {
+      flex-basis: 100%;
     }
 
 /* 2 column layout. */
 
 @media (min-width: 500px) {
 
-.views-view-grid--horizontal.cols-8 > * {
-        flex-basis: calc(50% - 9px)
-    }
+[dir="ltr"] .views-view-grid--horizontal.cols-8 > * {
+        margin-right: 18px;
+  }
 
-[dir=ltr] .views-view-grid--horizontal.cols-8 > * {
-    margin-right: 18px
-    }
+[dir="rtl"] .views-view-grid--horizontal.cols-8 > * {
+        margin-left: 18px;
+  }
 
-[dir=rtl] .views-view-grid--horizontal.cols-8 > * {
-        margin-left: 18px
+.views-view-grid--horizontal.cols-8 > * {
+        flex-basis: calc(50% - 9px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 4 column layout. */
@@ -560,21 +560,21 @@
         flex-basis: calc(25% - 13.5px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(2n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) {
           margin-left: 0;
-        }
+  }
       }
 
 /* 8 column layout. */
@@ -585,36 +585,25 @@
         flex-basis: calc(12.5% - 15.75px)
     }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) {
-    margin-right: 18px;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) {
+          margin-right: 18px;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(4n) {
           margin-left: 18px;
-        }
+  }
 
-        [dir=ltr] .views-view-grid--horizontal.cols-8 > *:nth-child(8n) {
-    margin-right: 0;
-        }
+        [dir="ltr"] .views-view-grid--horizontal.cols-8 > *:nth-child(8n) {
+          margin-right: 0;
+  }
 
-        [dir=rtl] .views-view-grid--horizontal.cols-8 > *:nth-child(8n) {
+        [dir="rtl"] .views-view-grid--horizontal.cols-8 > *:nth-child(8n) {
           margin-left: 0;
-        }
+  }
       }
 
 .views-view-grid--horizontal > * {
     flex-grow: 0;
     flex-shrink: 0;
-  }
-
-[dir] .views-view-grid--horizontal > * {
     margin-bottom: 18px;
   }
-
-[dir=ltr] .views-view-grid--horizontal > * {
-  margin-right: 18px;
-  }
-
-[dir=rtl] .views-view-grid--horizontal > * {
-    margin-left: 18px;
-  }
diff --git a/css/layout/layout-views-grid-horizontal.pcss.css b/css/layout/layout-views-grid-horizontal.pcss.css
index 45007cc..00d8dc8 100644
--- a/css/layout/layout-views-grid-horizontal.pcss.css
+++ b/css/layout/layout-views-grid-horizontal.pcss.css
@@ -16,22 +16,22 @@
   &.cols-1 {
     > * {
       flex-basis: 100%;
-      margin-right: 0;
+      margin-inline-end: 0;
     }
   }
 
   &.cols-2 {
     > * {
       flex-basis: 100%;
-      margin-right: 0;
+      margin-inline-end: 0;
 
       /* 2 column layout. */
       @media (--md) {
         flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap)));
-        margin-right: var(--views-grid-layout-gap);
+        margin-inline-end: var(--views-grid-layout-gap);
 
         &:nth-child(2n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
     }
@@ -40,15 +40,15 @@
   &.cols-3 {
     > * {
       flex-basis: 100%;
-      margin-right: 0;
+      margin-inline-end: 0;
 
       /* 2 column layout. */
       @media (--md) {
         flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap)));
-        margin-right: var(--views-grid-layout-gap);
+        margin-inline-end: var(--views-grid-layout-gap);
 
         &:nth-child(2n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -57,11 +57,11 @@
         flex-basis: calc(100% / 3 - (((3 - 1) / 3) * var(--views-grid-layout-gap)));
 
         &:nth-child(2n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(3n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
     }
@@ -70,15 +70,15 @@
   &.cols-4 {
     > * {
       flex-basis: 100%;
-      margin-right: 0;
+      margin-inline-end: 0;
 
       /* 2 column layout. */
       @media (--md) {
         flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap)));
-        margin-right: var(--views-grid-layout-gap);
+        margin-inline-end: var(--views-grid-layout-gap);
 
         &:nth-child(2n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -87,11 +87,11 @@
         flex-basis: calc(100% / 4 - (((4 - 1) / 4) * var(--views-grid-layout-gap)));
 
         &:nth-child(2n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(4n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
     }
@@ -100,15 +100,15 @@
   &.cols-5 {
     > * {
       flex-basis: 100%;
-      margin-right: 0;
+      margin-inline-end: 0;
 
       /* 2 column layout. */
       @media (--sm) {
         flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap)));
-        margin-right: var(--views-grid-layout-gap);
+        margin-inline-end: var(--views-grid-layout-gap);
 
         &:nth-child(2n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -117,11 +117,11 @@
         flex-basis: calc(100% / 3 - (((3 - 1) / 3) * var(--views-grid-layout-gap)));
 
         &:nth-child(2n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(3n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -130,11 +130,11 @@
         flex-basis: calc(100% / 5 - (((5 - 1) / 5) * var(--views-grid-layout-gap)));
 
         &:nth-child(3n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(5n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
     }
@@ -143,15 +143,15 @@
   &.cols-6 {
     > * {
       flex-basis: 100%;
-      margin-right: 0;
+      margin-inline-end: 0;
 
       /* 2 column layout. */
       @media (--sm) {
         flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap)));
-        margin-right: var(--views-grid-layout-gap);
+        margin-inline-end: var(--views-grid-layout-gap);
 
         &:nth-child(2n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -160,11 +160,11 @@
         flex-basis: calc(100% / 3 - (((3 - 1) / 3) * var(--views-grid-layout-gap)));
 
         &:nth-child(2n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(3n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -173,11 +173,11 @@
         flex-basis: calc(100% / 6 - (((6 - 1) / 6) * var(--views-grid-layout-gap)));
 
         &:nth-child(3n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(6n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
     }
@@ -186,15 +186,15 @@
   &.cols-7 {
     > * {
       flex-basis: 100%;
-      margin-right: 0;
+      margin-inline-end: 0;
 
       /* 2 column layout. */
       @media (--sm) {
         flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap)));
-        margin-right: var(--views-grid-layout-gap);
+        margin-inline-end: var(--views-grid-layout-gap);
 
         &:nth-child(2n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -203,11 +203,11 @@
         flex-basis: calc(100% / 3 - (((3 - 1) / 3) * var(--views-grid-layout-gap)));
 
         &:nth-child(2n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(3n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -216,11 +216,11 @@
         flex-basis: calc(100% / 7 - (((7 - 1) / 7) * var(--views-grid-layout-gap)));
 
         &:nth-child(3n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(7n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
     }
@@ -229,15 +229,15 @@
   &.cols-8 {
     > * {
       flex-basis: 100%;
-      margin-right: 0;
+      margin-inline-end: 0;
 
       /* 2 column layout. */
       @media (--sm) {
         flex-basis: calc(100% / 2 - (((2 - 1) / 2) * var(--views-grid-layout-gap)));
-        margin-right: var(--views-grid-layout-gap);
+        margin-inline-end: var(--views-grid-layout-gap);
 
         &:nth-child(2n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -246,11 +246,11 @@
         flex-basis: calc(100% / 4 - (((4 - 1) / 4) * var(--views-grid-layout-gap)));
 
         &:nth-child(2n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(4n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
 
@@ -259,11 +259,11 @@
         flex-basis: calc(100% / 8 - (((8 - 1) / 8) * var(--views-grid-layout-gap)));
 
         &:nth-child(4n) {
-          margin-right: var(--views-grid-layout-gap);
+          margin-inline-end: var(--views-grid-layout-gap);
         }
 
         &:nth-child(8n) {
-          margin-right: 0;
+          margin-inline-end: 0;
         }
       }
     }
@@ -272,7 +272,6 @@
   > * {
     flex-grow: 0;
     flex-shrink: 0;
-    margin-right: var(--views-grid-layout-gap);
-    margin-bottom: var(--views-grid-layout-gap);
+    margin-block-end: var(--views-grid-layout-gap);
   }
 }
diff --git a/css/layout/layout-views-grid-vertical.css b/css/layout/layout-views-grid-vertical.css
index f803379..4469246 100644
--- a/css/layout/layout-views-grid-vertical.css
+++ b/css/layout/layout-views-grid-vertical.css
@@ -76,14 +76,11 @@
   /* Form */
 }
 
-.views-view-grid--vertical { /* Offset the bottom row's padding. */
+.views-view-grid--vertical {
+  margin-bottom: -18px; /* Offset the bottom row's padding. */
   column-gap: 18px;
 }
 
-[dir] .views-view-grid--vertical {
-  margin-bottom: -18px;
-}
-
 @media (min-width: 500px) {
 
 .views-view-grid--vertical.cols-2 {
@@ -211,9 +208,6 @@
     }
 
 .views-view-grid--vertical .views-view-grid__item > * {
-      break-inside: avoid;
-    }
-
-[dir] .views-view-grid--vertical .views-view-grid__item > * {
       padding-bottom: 18px;
+      break-inside: avoid;
     }
diff --git a/css/layout/layout-views-grid-vertical.pcss.css b/css/layout/layout-views-grid-vertical.pcss.css
index 2755dc3..f8d771c 100644
--- a/css/layout/layout-views-grid-vertical.pcss.css
+++ b/css/layout/layout-views-grid-vertical.pcss.css
@@ -10,7 +10,7 @@
 }
 
 .views-view-grid--vertical {
-  margin-bottom: calc(-1 * var(--views-grid-layout-gap)); /* Offset the bottom row's padding. */
+  margin-block-end: calc(-1 * var(--views-grid-layout-gap)); /* Offset the bottom row's padding. */
   column-gap: var(--views-grid-layout-gap);
 
   &.cols-2 {
@@ -101,7 +101,7 @@
 
   .views-view-grid__item {
     > * {
-      padding-bottom: var(--views-grid-layout-gap);
+      padding-block-end: var(--views-grid-layout-gap);
       break-inside: avoid;
     }
   }
diff --git a/css/layout/layout.css b/css/layout/layout.css
index 0d7989d..ba642e3 100644
--- a/css/layout/layout.css
+++ b/css/layout/layout.css
@@ -79,26 +79,13 @@
 .container {
   width: 100%;
   max-width: 1350px;
-}
-
-[dir=ltr] .container {
-  padding-right: 18px;
-  padding-left: 18px;
-}
-
-[dir=rtl] .container {
   padding-left: 18px;
   padding-right: 18px;
 }
 
 @media (min-width: 1200px) {
 
-[dir=ltr] .container {
-    padding-right: 36px;
-    padding-left: 36px
-}
-
-[dir=rtl] .container {
+.container {
     padding-left: 36px;
     padding-right: 36px
 }
@@ -106,9 +93,6 @@
 
 .page-wrapper {
   max-width: 1570px;
-}
-
-[dir] .page-wrapper {
   background: #fff;
 }
 
@@ -125,26 +109,26 @@
 
 @media (min-width: 1200px) {
 
-.main-content {
-    width: calc(100% - 90px)
-}
+[dir="ltr"] .main-content {
+    margin-right: auto;
+  }
 
-[dir=ltr] .main-content {
-    margin-right: auto
-}
+[dir="rtl"] .main-content {
+    margin-left: auto;
+  }
 
-[dir=rtl] .main-content {
-    margin-left: auto
+.main-content {
+    width: calc(100% - 90px)
 }
   }
 
-[dir] .main-content__container {
+.main-content__container {
   padding-top: 54px;
 }
 
 @media (min-width: 700px) {
 
-[dir] .main-content__container {
+.main-content__container {
     padding-top: 90px
 }
   }
diff --git a/css/layout/layout.pcss.css b/css/layout/layout.pcss.css
index 28d9ee4..60e8920 100644
--- a/css/layout/layout.pcss.css
+++ b/css/layout/layout.pcss.css
@@ -8,12 +8,10 @@
 .container {
   width: 100%;
   max-width: var(--max-width);
-  padding-right: var(--container-padding);
-  padding-left: var(--container-padding);
+  padding-inline: var(--container-padding);
 
   @media (--nav) {
-    padding-right: var(--container-padding-nav);
-    padding-left: var(--container-padding-nav);
+    padding-inline: var(--container-padding-nav);
   }
 }
 
@@ -34,14 +32,14 @@
 .main-content {
   @media (--nav) {
     width: calc(100% - var(--content-left));
-    margin-right: auto;
+    margin-inline-end: auto;
   }
 }
 
 .main-content__container {
-  padding-top: var(--sp3);
+  padding-block-start: var(--sp3);
 
   @media (--md) {
-    padding-top: var(--sp5);
+    padding-block-start: var(--sp5);
   }
 }
diff --git a/css/layout/region-content-below.css b/css/layout/region-content-below.css
index 79dd051..52c359d 100644
--- a/css/layout/region-content-below.css
+++ b/css/layout/region-content-below.css
@@ -83,27 +83,29 @@
     flex-wrap: wrap
 }
 
+    [dir="ltr"] .region--content-below > * {
+      margin-right: 36px
+  }
+
+    [dir="rtl"] .region--content-below > * {
+      margin-left: 36px
+  }
+
     .region--content-below > * {
       flex-basis: calc(50% - 18px);
       flex-grow: 1;
       flex-shrink: 0;
     }
 
-    [dir=ltr] .region--content-below > * {
-    margin-right: 36px;
-    }
-
-    [dir=rtl] .region--content-below > * {
-      margin-left: 36px;
-    }
-
-      [dir=ltr] .region--content-below > *:nth-child(2n), [dir=ltr] .region--content-below > *:last-child {
-    margin-right: 0;
-      }
+      [dir="ltr"] .region--content-below > *:nth-child(2n),[dir="ltr"] 
+      .region--content-below > *:last-child {
+        margin-right: 0
+  }
 
-      [dir=rtl] .region--content-below > *:nth-child(2n), [dir=rtl] .region--content-below > *:last-child {
-        margin-left: 0;
-      }
+      [dir="rtl"] .region--content-below > *:nth-child(2n),[dir="rtl"] 
+      .region--content-below > *:last-child {
+        margin-left: 0
+  }
   }
 
 @media (min-width: 700px) {
@@ -111,19 +113,23 @@
       flex-basis: calc(33.33% - 23.976px);
     }
 
-      [dir=ltr] .region--content-below > *:nth-child(2n), [dir=ltr] .region--content-below > *:last-child {
-    margin-right: 36px;
-      }
+      [dir="ltr"] .region--content-below > *:nth-child(2n),[dir="ltr"] 
+      .region--content-below > *:last-child {
+        margin-right: 36px
+  }
 
-      [dir=rtl] .region--content-below > *:nth-child(2n), [dir=rtl] .region--content-below > *:last-child {
-        margin-left: 36px;
-      }
+      [dir="rtl"] .region--content-below > *:nth-child(2n),[dir="rtl"] 
+      .region--content-below > *:last-child {
+        margin-left: 36px
+  }
 
-      [dir=ltr] .region--content-below > *:nth-child(3n), [dir=ltr] .region--content-below > *:last-child {
-    margin-right: 0;
-      }
+      [dir="ltr"] .region--content-below > *:nth-child(3n),[dir="ltr"] 
+      .region--content-below > *:last-child {
+        margin-right: 0
+  }
 
-      [dir=rtl] .region--content-below > *:nth-child(3n), [dir=rtl] .region--content-below > *:last-child {
-        margin-left: 0;
-      }
+      [dir="rtl"] .region--content-below > *:nth-child(3n),[dir="rtl"] 
+      .region--content-below > *:last-child {
+        margin-left: 0
+  }
   }
diff --git a/css/layout/region-content-below.pcss.css b/css/layout/region-content-below.pcss.css
index c088b7e..be48b2d 100644
--- a/css/layout/region-content-below.pcss.css
+++ b/css/layout/region-content-below.pcss.css
@@ -14,11 +14,11 @@
       flex-basis: calc(50% - (var(--grid-gap--md) / 2));
       flex-grow: 1;
       flex-shrink: 0;
-      margin-right: var(--grid-gap--md);
+      margin-inline-end: var(--grid-gap--md);
 
       &:nth-child(2n),
       &:last-child {
-        margin-right: 0;
+        margin-inline-end: 0;
       }
     }
   }
@@ -29,12 +29,12 @@
 
       &:nth-child(2n),
       &:last-child {
-        margin-right: var(--grid-gap--md);
+        margin-inline-end: var(--grid-gap--md);
       }
 
       &:nth-child(3n),
       &:last-child {
-        margin-right: 0;
+        margin-inline-end: 0;
       }
     }
   }
diff --git a/css/layout/region-content.css b/css/layout/region-content.css
index 09dce04..aa12033 100644
--- a/css/layout/region-content.css
+++ b/css/layout/region-content.css
@@ -76,20 +76,20 @@
   /* Form */
 }
 
-[dir] .region--content {
+.region--content {
   margin-bottom: 18px;
 }
 
 @media (min-width: 700px) {
 
-[dir] .region--content {
+.region--content {
     margin-bottom: 36px
 }
   }
 
 @media (min-width: 1000px) {
 
-[dir] .region--content {
+.region--content {
     margin-bottom: 54px
 }
   }
diff --git a/css/layout/region-content.pcss.css b/css/layout/region-content.pcss.css
index 9571dfe..05ee1ec 100644
--- a/css/layout/region-content.pcss.css
+++ b/css/layout/region-content.pcss.css
@@ -6,13 +6,13 @@
 @import "../base/variables.pcss.css";
 
 .region--content {
-  margin-bottom: var(--sp);
+  margin-block-end: var(--sp);
 
   @media (--md) {
-    margin-bottom: var(--sp2);
+    margin-block-end: var(--sp2);
   }
 
   @media (--lg) {
-    margin-bottom: var(--sp3);
+    margin-block-end: var(--sp3);
   }
 }
diff --git a/css/layout/region-hero.css b/css/layout/region-hero.css
index ae5a841..90e6fc3 100644
--- a/css/layout/region-hero.css
+++ b/css/layout/region-hero.css
@@ -76,6 +76,6 @@
   /* Form */
 }
 
-[dir] .region--hero > *:last-child {
+.region--hero > *:last-child {
     margin-bottom: 0;
   }
diff --git a/css/layout/region-hero.pcss.css b/css/layout/region-hero.pcss.css
index 2534d2a..e6eb594 100644
--- a/css/layout/region-hero.pcss.css
+++ b/css/layout/region-hero.pcss.css
@@ -7,6 +7,6 @@
 
 .region--hero {
   > *:last-child {
-    margin-bottom: 0;
+    margin-block-end: 0;
   }
 }
diff --git a/css/layout/region.css b/css/layout/region.css
index 512fa47..93385fe 100644
--- a/css/layout/region.css
+++ b/css/layout/region.css
@@ -76,20 +76,20 @@
   /* Form */
 }
 
-[dir] .region > * {
+.region > * {
   margin-bottom: 18px;
 }
 
 @media (min-width: 700px) {
 
-[dir] .region > * {
+.region > * {
     margin-bottom: 36px
 }
   }
 
 @media (min-width: 1000px) {
 
-[dir] .region > * {
+.region > * {
     margin-bottom: 54px
 }
   }
diff --git a/css/layout/region.pcss.css b/css/layout/region.pcss.css
index 98c3ddf..bc02691 100644
--- a/css/layout/region.pcss.css
+++ b/css/layout/region.pcss.css
@@ -6,13 +6,13 @@
 @import "../base/variables.pcss.css";
 
 .region > * {
-  margin-bottom: var(--sp);
+  margin-block-end: var(--sp);
 
   @media (--md) {
-    margin-bottom: var(--sp2);
+    margin-block-end: var(--sp2);
   }
 
   @media (--lg) {
-    margin-bottom: var(--sp3);
+    margin-block-end: var(--sp3);
   }
 }
diff --git a/css/layout/social-bar.css b/css/layout/social-bar.css
index 298612d..eb20b6d 100644
--- a/css/layout/social-bar.css
+++ b/css/layout/social-bar.css
@@ -81,49 +81,74 @@
 
 .social-bar {
     flex-shrink: 0;
-    width: 90px
-}
-
-[dir] .social-bar {
+    width: 90px;
     background-color: #f7f9fa
 }
   }
 
-.social-bar__inner {
-  position: relative;
+[dir="ltr"] .social-bar__inner {
+  padding-left: 18px
 }
 
-[dir] .social-bar__inner {
-  padding: 9px 18px;
+[dir="rtl"] .social-bar__inner {
+  padding-right: 18px
+}
+
+[dir="ltr"] .social-bar__inner {
+  padding-right: 18px
+}
+
+[dir="rtl"] .social-bar__inner {
+  padding-left: 18px
+}
+
+.social-bar__inner {
+  position: relative;
+  padding-top: 9px;
+  padding-bottom: 9px;
 }
 
 @media (min-width: 1200px) {
 
+[dir="ltr"] .social-bar__inner {
+    padding-left: 0
+  }
+
+[dir="rtl"] .social-bar__inner {
+    padding-right: 0
+  }
+
+[dir="ltr"] .social-bar__inner {
+    padding-right: 0
+  }
+
+[dir="rtl"] .social-bar__inner {
+    padding-left: 0
+  }
+
 .social-bar__inner {
     position: relative;
-    width: 90px
+    width: 90px;
+    padding-top: 90px;
+    padding-bottom: 90px
 }
 
-[dir] .social-bar__inner {
-    padding: 90px 0
-}
+    [dir="ltr"] .social-bar__inner.js-fixed {
+      left: 0
+  }
+
+    [dir="rtl"] .social-bar__inner.js-fixed {
+      right: 0
+  }
 
     .social-bar__inner.js-fixed {
       position: fixed;
       top: 108px;
       height: calc(100vh - 108px);
     }
-
-    [dir=ltr] .social-bar__inner.js-fixed {
-    left: 0;
-    }
-
-    [dir=rtl] .social-bar__inner.js-fixed {
-      right: 0;
-    }
   }
 
-[dir] .rotate > * {
+.rotate > * {
     margin-bottom: 36px;
   }
 
@@ -131,67 +156,73 @@
 
 .rotate > * {
       display: flex;
-      align-items: center
-  }
-
-[dir] .rotate > * {
+      align-items: center;
       margin-bottom: 0
   }
 
-      [dir=ltr] .rotate > *:not(:first-child) {
-    margin-right: 36px;
-      }
+      [dir="ltr"] .rotate > *:not(:first-child) {
+        margin-right: 36px
+  }
 
-      [dir=rtl] .rotate > *:not(:first-child) {
-        margin-left: 36px;
-      }
+      [dir="rtl"] .rotate > *:not(:first-child) {
+        margin-left: 36px
+  }
     }
 
 @media (min-width: 1200px) {
 
-[dir=ltr] .rotate .contextual {
-    right: auto;
-    left: 100%;
-    transform: rotate(90deg);
-    transform-origin: top left
+[dir="ltr"] .rotate .contextual {
+      left: 100%;
+      right: auto
   }
 
-[dir=rtl] .rotate .contextual {
-      left: auto;
+[dir="rtl"] .rotate .contextual {
       right: 100%;
-      transform: rotate(-90deg);
-      transform-origin: top right
+      left: auto
   }
 
-      [dir=ltr] .rotate .contextual .trigger {
-    float: left;
-      }
+.rotate .contextual {
+      transform: rotate(90deg);
+      transform-origin: top left
+  }
 
-      [dir=rtl] .rotate .contextual .trigger {
-        float: right;
+      [dir="rtl"] .rotate .contextual {
+        transform: rotate(-90deg);
+        transform-origin: top right;
       }
+
+      [dir="ltr"] .rotate .contextual .trigger {
+        float: left
+  }
+
+      [dir="rtl"] .rotate .contextual .trigger {
+        float: right
+  }
     }
 
 @media (min-width: 1200px) {
 
+[dir="ltr"] .rotate {
+    left: 50%
+  }
+
+[dir="rtl"] .rotate {
+    right: 50%
+  }
+
 .rotate {
     position: absolute;
     display: flex;
     flex-direction: row-reverse;
-    width: 100vh
-}
-
-[dir=ltr] .rotate {
-    left: 50%;
+    width: 100vh;
     transform: rotate(-90deg) translateX(-100%);
     transform-origin: left
 }
 
-[dir=rtl] .rotate {
-    right: 50%;
-    transform: rotate(90deg) translateX(100%);
-    transform-origin: right
-}
+    [dir="rtl"] .rotate {
+      transform: rotate(90deg) translateX(100%);
+      transform-origin: right;
+    }
 
     @supports ((width: -webkit-max-content) or (width: max-content)) {
 
diff --git a/css/layout/social-bar.pcss.css b/css/layout/social-bar.pcss.css
index 8082f95..4c22c6e 100644
--- a/css/layout/social-bar.pcss.css
+++ b/css/layout/social-bar.pcss.css
@@ -16,17 +16,21 @@
 
 .social-bar__inner {
   position: relative;
-  padding: var(--sp0-5) var(--sp);
+  padding-block: var(--sp0-5);
+  padding-inline-start: var(--sp);
+  padding-inline-end: var(--sp);
 
   @media (--nav) {
     position: relative;
     width: var(--content-left);
-    padding: calc(5 * var(--sp)) 0;
+    padding-block: calc(5 * var(--sp));
+    padding-inline-start: 0;
+    padding-inline-end: 0;
 
     &.js-fixed {
       position: fixed;
-      top: var(--sp6);
-      left: 0;
+      inset-block-start: var(--sp6);
+      inset-inline-start: 0;
       height: calc(100vh - 6 * var(--sp));
     }
   }
@@ -34,41 +38,50 @@
 
 .rotate {
   > * {
-    margin-bottom: var(--sp2);
+    margin-block-end: var(--sp2);
 
     @media (--nav) {
       display: flex;
       align-items: center;
-      margin-bottom: 0;
+      margin-block-end: 0;
 
       &:not(:first-child) {
-        margin-right: var(--sp2);
+        margin-inline-end: var(--sp2);
       }
     }
   }
 
   .contextual {
     @media (--nav) {
-      right: auto;
-      left: 100%;
+      inset-inline: 100% auto;
       transform: rotate(90deg);
       transform-origin: top left;
 
+      [dir="rtl"] & {
+        transform: rotate(-90deg);
+        transform-origin: top right;
+      }
+
       .trigger {
-        float: left;
+        float: inline-start;
       }
     }
   }
 
   @media (--nav) {
     position: absolute;
-    left: 50%;
+    inset-inline-start: 50%;
     display: flex;
     flex-direction: row-reverse;
     width: 100vh;
     transform: rotate(-90deg) translateX(-100%);
     transform-origin: left;
 
+    [dir="rtl"] & {
+      transform: rotate(90deg) translateX(100%);
+      transform-origin: right;
+    }
+
     @supports (width: max-content) {
       width: max-content;
     }
diff --git a/css/layout/views.css b/css/layout/views.css
index fbf60cf..f293897 100644
--- a/css/layout/views.css
+++ b/css/layout/views.css
@@ -76,17 +76,17 @@
   /* Form */
 }
 
-[dir] .view > * {
+.view > * {
     margin-bottom: 36px;
   }
 
-[dir] .view > *:last-child {
+.view > *:last-child {
       margin-bottom: 0;
     }
 
 @media (min-width: 700px) {
 
-[dir] .view > * {
+.view > * {
       margin-bottom: 54px
   }
     }
diff --git a/css/layout/views.pcss.css b/css/layout/views.pcss.css
index 189a2af..1cd944a 100644
--- a/css/layout/views.pcss.css
+++ b/css/layout/views.pcss.css
@@ -7,14 +7,14 @@
 
 .view {
   > * {
-    margin-bottom: var(--sp2);
+    margin-block-end: var(--sp2);
 
     &:last-child {
-      margin-bottom: 0;
+      margin-block-end: 0;
     }
 
     @media (--md) {
-      margin-bottom: var(--sp3);
+      margin-block-end: var(--sp3);
     }
   }
 }
diff --git a/css/theme/ckeditor-frame.css b/css/theme/ckeditor-frame.css
index 1e851ec..4400eab 100644
--- a/css/theme/ckeditor-frame.css
+++ b/css/theme/ckeditor-frame.css
@@ -76,7 +76,7 @@
   /* Form */
 }
 
-[dir] .cke_editable {
+.cke_editable {
   margin: 18px;
   background-image: none;
 }
@@ -85,36 +85,36 @@
   background: #fff;
 }
 
-[dir] .cke_panel_listItem a > * {
+.cke_panel_listItem a > * {
   margin-top: 0;
   margin-bottom: 0;
 }
 
-[dir] .cke_panel_grouptitle {
+.cke_panel_grouptitle {
   margin: 0;
 }
 
-[dir=ltr] .cke_editable blockquote {
+[dir="ltr"] .cke_editable blockquote {
   margin-left: 54px;
 }
 
-[dir=rtl] .cke_editable blockquote {
+[dir="rtl"] .cke_editable blockquote {
   margin-right: 54px;
 }
 
-[dir=ltr] .cke_editable .align-right {
+[dir="ltr"] .cke_editable .align-right {
   margin-right: 0;
 }
 
-[dir=rtl] .cke_editable .align-right {
+[dir="rtl"] .cke_editable .align-right {
   margin-left: 0;
 }
 
-[dir=ltr] .cke_editable .align-left {
+[dir="ltr"] .cke_editable .align-left {
   margin-left: 0;
 }
 
-[dir=rtl] .cke_editable .align-left {
+[dir="rtl"] .cke_editable .align-left {
   margin-right: 0;
 }
 
@@ -122,10 +122,10 @@
   vertical-align: top;
 }
 
-[dir] figure.cke_widget_element {
+figure.cke_widget_element {
   margin: 0;
 }
 
-[dir] figcaption.cke_widget_editable {
+figcaption.cke_widget_editable {
   background-color: #fff;
 }
diff --git a/css/theme/ckeditor-frame.pcss.css b/css/theme/ckeditor-frame.pcss.css
index cba83d4..5cb8385 100644
--- a/css/theme/ckeditor-frame.pcss.css
+++ b/css/theme/ckeditor-frame.pcss.css
@@ -15,8 +15,7 @@
 }
 
 .cke_panel_listItem a > * {
-  margin-top: 0;
-  margin-bottom: 0;
+  margin-block: 0;
 }
 
 .cke_panel_grouptitle {
@@ -24,15 +23,15 @@
 }
 
 .cke_editable blockquote {
-  margin-left: var(--sp3);
+  margin-inline-start: var(--sp3);
 }
 
 .cke_editable .align-right {
-  margin-right: 0;
+  margin-inline-end: 0;
 }
 
 .cke_editable .align-left {
-  margin-left: 0;
+  margin-inline-start: 0;
 }
 
 .cke_image_resizer_wrapper {
diff --git a/css/theme/filter.theme.css b/css/theme/filter.theme.css
index e51d833..1de4d6c 100644
--- a/css/theme/filter.theme.css
+++ b/css/theme/filter.theme.css
@@ -80,7 +80,7 @@
  * Filter information under field.
  */
 
-[dir] .text-full > .form-item {
+.text-full > .form-item {
   margin-bottom: 0;
 }
 
@@ -88,39 +88,36 @@
   vertical-align: top;
 }
 
-[dir] .filter-wrapper {
+.filter-wrapper {
   margin-top: 18px;
   margin-bottom: 9px;
 }
 
-[dir] .filter-wrapper .form-item {
+.filter-wrapper .form-item {
   margin: 0;
 }
 
-.filter-help {
-  font-size: 0.75rem;
-}
-
-[dir] .filter-help {
-  padding-top: 9px;
-  padding-bottom: 9px;
-}
-
-[dir=ltr] .filter-help {
+[dir="ltr"] .filter-help {
   float: right;
 }
 
-[dir=rtl] .filter-help {
+[dir="rtl"] .filter-help {
   float: left;
 }
 
+.filter-help {
+  padding-top: 9px;
+  padding-bottom: 9px;
+  font-size: 0.75rem;
+}
+
 /**
  * Compose tips.
  *
  * Wraps filter tips on page '/filter/tips[/name]'.
  */
 
-[dir] .compose-tips__item {
+.compose-tips__item {
   margin-top: 27px;
   margin-bottom: 27px;
 }
@@ -130,15 +127,12 @@
  */
 
 .filter-guidelines__item {
+  margin-top: 18px;
   font-size: 0.875rem;
   line-height: 1.125rem;
 }
 
-[dir] .filter-guidelines__item {
-  margin-top: 18px;
-}
-
-[dir] .filter-guidelines p {
+.filter-guidelines p {
   margin-top: 4.5px;
   margin-bottom: 0;
 }
@@ -150,16 +144,17 @@
  * below a text format input.
  */
 
-[dir] .filter-tips--long {
+.filter-tips--long {
   margin-bottom: 27px;
 }
 
-[dir] .filter-tips__item, [dir] .filter-tips--long p {
+.filter-tips__item,
+.filter-tips--long p {
   margin-top: 13.5px;
   margin-bottom: 13.5px;
 }
 
-[dir] .filter-tips__item--short {
+.filter-tips__item--short {
   margin-top: 4.5px;
   margin-bottom: 0;
 }
diff --git a/css/theme/filter.theme.pcss.css b/css/theme/filter.theme.pcss.css
index b4fc5ab..1b52812 100644
--- a/css/theme/filter.theme.pcss.css
+++ b/css/theme/filter.theme.pcss.css
@@ -9,15 +9,14 @@
  * Filter information under field.
  */
 .text-full > .form-item {
-  margin-bottom: 0;
+  margin-block-end: 0;
 }
 .form-element--editor-format {
   vertical-align: top;
 }
 
 .filter-wrapper {
-  margin-top: var(--sp1);
-  margin-bottom: var(--sp0-5);
+  margin-block: var(--sp1) var(--sp0-5);
 }
 
 .filter-wrapper .form-item {
@@ -25,9 +24,8 @@
 }
 
 .filter-help {
-  float: right;
-  padding-top: var(--sp0-5);
-  padding-bottom: var(--sp0-5);
+  float: inline-end;
+  padding-block: var(--sp0-5);
   font-size: var(--font-size-xxs);
 }
 
@@ -37,21 +35,19 @@
  * Wraps filter tips on page '/filter/tips[/name]'.
  */
 .compose-tips__item {
-  margin-top: var(--sp1-5);
-  margin-bottom: var(--sp1-5);
+  margin-block: var(--sp1-5);
 }
 
 /**
  * Filter guidelines.
  */
 .filter-guidelines__item {
-  margin-top: var(--sp1);
+  margin-block-start: var(--sp1);
   font-size: var(--font-size-s);
   line-height: var(--line-height-s);
 }
 .filter-guidelines p {
-  margin-top: var(--sp0-25);
-  margin-bottom: 0;
+  margin-block: var(--sp0-25) 0;
 }
 
 /**
@@ -61,14 +57,12 @@
  * below a text format input.
  */
 .filter-tips--long {
-  margin-bottom: var(--sp1-5);
+  margin-block-end: var(--sp1-5);
 }
 .filter-tips__item,
 .filter-tips--long p {
-  margin-top: var(--sp0-75);
-  margin-bottom: var(--sp0-75);
+  margin-block: var(--sp0-75);
 }
 .filter-tips__item--short {
-  margin-top: var(--sp0-25);
-  margin-bottom: 0;
+  margin-block: var(--sp0-25) 0;
 }
diff --git a/package.json b/package.json
index 04958bd..ef311a9 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
     "lint:core-js-passing": "node ./node_modules/eslint/bin/eslint.js --quiet --config=.eslintrc.passing.json .",
     "lint:core-js-stats": "node ./node_modules/eslint/bin/eslint.js --format=./scripts/js/eslint-stats-by-type.js .",
     "lint:css": "stylelint \"**/*.pcss.css\"",
+    "lint:css-fix": "stylelint \"**/*.pcss.css\" --fix",
     "lint:css-checkstyle": "stylelint \"**/*.pcss.css\" --custom-formatter ./node_modules/stylelint-checkstyle-formatter/index.js",
     "test:nightwatch": "cross-env BABEL_ENV=development node -r dotenv-safe/config -r @babel/register ./node_modules/.bin/nightwatch --config ./tests/Drupal/Nightwatch/nightwatch.conf.js",
     "prettier": "prettier --write \"./**/*.es6.js\" \"./tests/Drupal/Nightwatch/**/*.js\""
@@ -60,8 +61,8 @@
     "postcss-header": "^2.0.0",
     "postcss-import": "^12.0.1",
     "postcss-nested": "^4.1.2",
-    "postcss-rtl": "^1.5",
     "postcss-pxtorem": "^5.1.1",
+    "postcss-rtl": "^1.5",
     "prettier": "^1.14.0",
     "stylelint": "^13.0.0",
     "stylelint-checkstyle-formatter": "^0.1.1",
@@ -97,5 +98,10 @@
         ]
       }
     }
+  },
+  "dependencies": {
+    "postcss-dir-pseudo-class": "^5.0.0",
+    "postcss-logical": "^4.0.2",
+    "stylelint-use-logical": "^1.1.0"
   }
 }
diff --git a/scripts/css/compile.js b/scripts/css/compile.js
index f95951f..54a5be9 100644
--- a/scripts/css/compile.js
+++ b/scripts/css/compile.js
@@ -7,11 +7,13 @@ const postcssCalc = require("postcss-calc");
 const postcssImport = require('postcss-import');
 const autoprefixer = require('autoprefixer');
 const postcssHeader = require('postcss-header');
+const postcssLogical = require('postcss-logical');
+const postcssDirPseudoClass = require('postcss-dir-pseudo-class');
 
 // @todo: Olivero postCSS dependencies that will need to get merged into Core.
 const postcssNested = require('postcss-nested');
 const postcssCustomMedia = require('postcss-custom-media');
-const postcssRTL = require('postcss-rtl');
+// const postcssRTL = require('postcss-rtl');
 const postcssPixelsToRem = require('postcss-pxtorem');
 
 module.exports = (filePath, callback) => {
@@ -27,6 +29,8 @@ module.exports = (filePath, callback) => {
         preserve: false,
       }),
       postcssCalc,
+      postcssLogical(),
+      postcssDirPseudoClass(),
       autoprefixer({
         // Output without visual cascade for more consistency with existing
         // Drupal CSS.
@@ -36,7 +40,6 @@ module.exports = (filePath, callback) => {
         grid: 'no-autoplace',
       }),
       postcssPixelsToRem,
-      postcssRTL,
       postcssHeader({
         header: `/*\n * DO NOT EDIT THIS FILE.\n * See the following change record for more information,\n * https://www.drupal.org/node/2815083\n * @preserve\n */\n`,
       }),
diff --git a/yarn.lock b/yarn.lock
index c9c3192..a708782 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1786,6 +1786,11 @@ cross-spawn@^7.0.0:
     shebang-command "^2.0.0"
     which "^2.0.1"
 
+cssesc@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
+  integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
+
 cssesc@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
@@ -4639,6 +4644,14 @@ postcss-custom-properties@^9.0.2:
     postcss "^7.0.17"
     postcss-values-parser "^3.0.5"
 
+postcss-dir-pseudo-class@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2"
+  integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==
+  dependencies:
+    postcss "^7.0.2"
+    postcss-selector-parser "^5.0.0-rc.3"
+
 postcss-header@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/postcss-header/-/postcss-header-2.0.0.tgz#e7dbc95abeaa2dfb46b3106c1541c4845d3382da"
@@ -4678,6 +4691,13 @@ postcss-less@^3.1.0, postcss-less@^3.1.4:
   dependencies:
     postcss "^7.0.14"
 
+postcss-logical@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-4.0.2.tgz#63f5207bae63f1f646462c26509185c2eae22c72"
+  integrity sha512-tlX1n19np6/JznvyymZM6SIe0FymD5Ngwcg2j825vNKhADu0p1PTgEmsCjakCbvn78kaIFzYTI32NpgOEwgifQ==
+  dependencies:
+    postcss "^7.0.17"
+
 postcss-markdown@^0.36.0:
   version "0.36.0"
   resolved "https://registry.yarnpkg.com/postcss-markdown/-/postcss-markdown-0.36.0.tgz#7f22849ae0e3db18820b7b0d5e7833f13a447560"
@@ -4786,6 +4806,15 @@ postcss-selector-parser@^3.1.0:
     indexes-of "^1.0.1"
     uniq "^1.0.1"
 
+postcss-selector-parser@^5.0.0-rc.3:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
+  integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
+  dependencies:
+    cssesc "^2.0.0"
+    indexes-of "^1.0.1"
+    uniq "^1.0.1"
+
 postcss-selector-parser@^6.0.2:
   version "6.0.2"
   resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
@@ -5884,6 +5913,11 @@ stylelint-order@^4.0.0:
     postcss "^7.0.31"
     postcss-sorting "^5.0.1"
 
+stylelint-use-logical@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/stylelint-use-logical/-/stylelint-use-logical-1.1.0.tgz#f419386f48dae19fc59b024255c04f36738d879f"
+  integrity sha512-WwYAEoUNXxu4A9tZ+mPnvFSf3wKG9mY9+ZqnNjVHikfOQA4MTO6XeSC8BGCsY7LOG0GnDfmxMrRUJXFZRtaCmg==
+
 stylelint@^13.0.0:
   version "13.6.1"
   resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.6.1.tgz#cc1d76338116d55e8ff2be94c4a4386c1239b878"
