diff --git a/scss/_semantic.scss b/scss/_semantic.scss
new file mode 100644
index 0000000000000000000000000000000000000000..dbc6b2c239603efea57c33801da109bc06d18a7e
--- /dev/null
+++ b/scss/_semantic.scss
@@ -0,0 +1,30 @@
+$semantic-selector: ".semantic" !default;
+
+$semantic-implications: () !default;
+// stylelint-disable-next-line scss/dollar-variable-default
+$semantic-implications: map-merge(
+  (
+    ".blockquote > footer": ".blockquote-footer",
+    "blockquote > footer": ".blockquote-footer",
+    ".list-inline > li": ".list-inline-item",
+    ".figure > img": ".figure-img",
+    "figure > img": ".figure-img",
+    ".figure > figcaption": ".figure-caption",
+    "figure > figcaption": ".figure-caption",
+    ".breadcrumb > li": ".breadcrumb-item",
+    ".list-group > li": ".list-group-item",
+  ),
+  $semantic-implications
+);
+
+
+@each $selectors, $implied in $semantic-implications {
+  @each $selector in $selectors {
+    $i: str-index($selector, " ") or -1;
+    $selector: str-insert($selector, $semantic-selector, $i);
+
+    #{$selector} {
+      @extend #{$implied};
+    }
+  }
+}
diff --git a/scss/bootstrap.scss b/scss/bootstrap.scss
index 7138211c48d47ceb1ae6a14c026bf233f0d08966..9a2654935f33045662eeece970195b78ff5be8bc 100644
--- a/scss/bootstrap.scss
+++ b/scss/bootstrap.scss
@@ -52,3 +52,7 @@
 // Utilities
 
 @import "utilities/api";
+
+
+// Semantic styling
+@import "semantic";