diff --git a/core/modules/block_place/css/block-place.css b/core/modules/block_place/css/block-place.css
index 297b518e4b..bdfae3948d 100644
--- a/core/modules/block_place/css/block-place.css
+++ b/core/modules/block_place/css/block-place.css
@@ -20,13 +20,13 @@
   padding: 0;
   white-space: nowrap;
   border: 1px solid #ccc;
-  background: url(../../../misc/icons/bebebe/plus.svg) #fff center center / 16px 16px no-repeat;
+  background: url(../../images/core/icons/bebebe/plus.svg) #fff center center / 16px 16px no-repeat;
   font-size: 1rem;
 }
 
 .block-place-region:hover a.button,
 .block-place-region:focus a.button {
-  background-image: url(../../../misc/icons/787878/plus.svg);
+  background-image: url(../../images/core/icons/787878/plus.svg);
 }
 
 .block-place-region .ajax-progress {
diff --git a/core/modules/contextual/css/contextual.icons.theme.css b/core/modules/contextual/css/contextual.icons.theme.css
index 36644efe02..3c88fdbf39 100644
--- a/core/modules/contextual/css/contextual.icons.theme.css
+++ b/core/modules/contextual/css/contextual.icons.theme.css
@@ -7,11 +7,11 @@
  * Toolbar tab icon.
  */
 .toolbar-bar .toolbar-icon-edit:before {
-  background-image: url(../../../misc/icons/bebebe/pencil.svg);
+  background-image: url(../../images/core/icons/bebebe/pencil.svg);
 }
 .toolbar-bar .toolbar-icon-edit:active:before,
 .toolbar-bar .toolbar-icon-edit.is-active:before {
-  background-image: url(../../../misc/icons/ffffff/pencil.svg);
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
 }
 
 /**
@@ -23,17 +23,17 @@
   /* Override the .focusable height: auto */
   height: 26px !important;
   text-indent: -9999px;
-  background-image: url(../../../misc/icons/bebebe/pencil.svg);
+  background-image: url(../../images/core/icons/bebebe/pencil.svg);
   background-repeat: no-repeat;
   background-position: center center;
   background-size: 16px 16px;
 }
 
 .contextual .trigger:hover {
-  background-image: url(../../../misc/icons/787878/pencil.svg);
+  background-image: url(../../images/core/icons/787878/pencil.svg);
 }
 
 .contextual .trigger:focus {
   outline: none;
-  background-image: url(../../../misc/icons/5181c6/pencil.svg);
+  background-image: url(../../images/core/icons/5181c6/pencil.svg);
 }
diff --git a/core/modules/dblog/css/dblog.module.css b/core/modules/dblog/css/dblog.module.css
index d39e822ba4..3c72b5ea02 100644
--- a/core/modules/dblog/css/dblog.module.css
+++ b/core/modules/dblog/css/dblog.module.css
@@ -27,11 +27,11 @@
   background: no-repeat center;
 }
 .admin-dblog .dblog-warning .icon {
-  background-image: url(../../../misc/icons/e29700/warning.svg);
+  background-image: url(../../images/core/icons/e29700/warning.svg);
 }
 .admin-dblog .dblog-error .icon,
 .admin-dblog .dblog-critical .icon,
 .admin-dblog .dblog-alert .icon,
 .admin-dblog .dblog-emergency .icon {
-  background-image: url(../../../misc/icons/e32700/error.svg);
+  background-image: url(../../images/core/icons/e32700/error.svg);
 }
diff --git a/core/modules/layout_builder/css/layout-builder.css b/core/modules/layout_builder/css/layout-builder.css
index cbd03bb313..8c8a7b7ef8 100644
--- a/core/modules/layout_builder/css/layout-builder.css
+++ b/core/modules/layout_builder/css/layout-builder.css
@@ -17,7 +17,7 @@
   padding-left: 1.3em; /* LTR */
   color: #686868;
   border-bottom: none;
-  background: url(../../../misc/icons/787878/plus.svg) transparent center left / 1em no-repeat; /* LTR */
+  background: url(../../images/core/icons/787878/plus.svg) transparent center left / 1em no-repeat; /* LTR */
 }
 
 [dir="rtl"] .layout-builder__link--add {
@@ -73,7 +73,7 @@
   text-indent: -9999px;
   border: 1px solid #ccc;
   border-radius: 26px;
-  background: url(../../../misc/icons/bebebe/ex.svg) #fff center center / 16px 16px no-repeat;
+  background: url(../../images/core/icons/bebebe/ex.svg) #fff center center / 16px 16px no-repeat;
   font-size: 1rem;
 }
 
@@ -83,7 +83,7 @@
 }
 
 .layout-builder__link--remove:hover {
-  background-image: url(../../../misc/icons/787878/ex.svg);
+  background-image: url(../../images/core/icons/787878/ex.svg);
 }
 
 .layout-builder-block {
@@ -100,10 +100,10 @@
   background-repeat: no-repeat;
 }
 .layout-builder__message--defaults .messages {
-  background-image: url("../../../misc/icons/73b355/globe.svg");
+  background-image: url("../../images/core/icons/73b355/globe.svg");
 }
 .layout-builder__message--overrides .messages {
-  background-image: url("../../../misc/icons/73b355/location.svg");
+  background-image: url("../../images/core/icons/73b355/location.svg");
 }
 
 .layout-builder-block__content-preview-placeholder-label {
@@ -134,7 +134,7 @@
   padding-left: 44px;
   color: #eee;
   border-bottom: 1px solid #333;
-  background: url(../../../misc/icons/bebebe/plus.svg) transparent 16px no-repeat;
+  background: url(../../images/core/icons/bebebe/plus.svg) transparent 16px no-repeat;
   font-size: 16px;
 }
 
diff --git a/core/modules/locale/css/locale.admin.css b/core/modules/locale/css/locale.admin.css
index a118a27bb9..a1f4b9da2b 100644
--- a/core/modules/locale/css/locale.admin.css
+++ b/core/modules/locale/css/locale.admin.css
@@ -74,10 +74,10 @@
 .locale-translation-update__wrapper {
   margin-left: -12px;
   padding-left: 12px;
-  background: transparent url(../../../misc/menu-collapsed.png) left 0.6em no-repeat;
+  background: transparent url(../../images/core/menu-collapsed.png) left 0.6em no-repeat;
 }
 .expanded .locale-translation-update__wrapper {
-  background: transparent url(../../../misc/menu-expanded.png) left 0.6em no-repeat;
+  background: transparent url(../../images/core/menu-expanded.png) left 0.6em no-repeat;
 }
 #locale-translation-status-form .description {
   cursor: pointer;
diff --git a/core/modules/migrate_drupal_ui/css/components/upgrade-analysis-report-tables.css b/core/modules/migrate_drupal_ui/css/components/upgrade-analysis-report-tables.css
index 39b1e00ffd..8126371258 100644
--- a/core/modules/migrate_drupal_ui/css/components/upgrade-analysis-report-tables.css
+++ b/core/modules/migrate_drupal_ui/css/components/upgrade-analysis-report-tables.css
@@ -13,11 +13,11 @@
 }
 
 .upgrade-analysis-report__status-icon--warning:before {
-  background-image: url(../../../../misc/icons/e29700/warning.svg);
+  background-image: url(../../../images/core/icons/e29700/warning.svg);
 }
 .upgrade-analysis-report__status-icon--checked:before {
-  background-image: url(../../../../misc/icons/73b355/check.svg);
+  background-image: url(../../../images/core/icons/73b355/check.svg);
 }
 .upgrade-analysis-report__status-icon--error:before {
-  background-image: url(../../../../misc/icons/e32700/error.svg);
+  background-image: url(../../../images/core/icons/e32700/error.svg);
 }
diff --git a/core/modules/quickedit/css/quickedit.icons.theme.css b/core/modules/quickedit/css/quickedit.icons.theme.css
index 4a1768de0b..e05f7e026f 100644
--- a/core/modules/quickedit/css/quickedit.icons.theme.css
+++ b/core/modules/quickedit/css/quickedit.icons.theme.css
@@ -58,17 +58,17 @@
 .quickedit .icon-close:before {
   top: 10px;
   height: 12px;
-  background-image: url(../../../misc/icons/787878/ex.svg);
+  background-image: url(../../images/core/icons/787878/ex.svg);
 }
 .quickedit .icon-close:hover:before,
 .quickedit .icon-close:active:before {
-  background-image: url(../../../misc/icons/000000/ex.svg);
+  background-image: url(../../images/core/icons/000000/ex.svg);
 }
 .quickedit .icon-throbber:before {
   background-image: url(../images/icon-throbber.gif);
 }
 .quickedit .icon-pencil:before {
-  background-image: url(../../../misc/icons/5181c6/pencil.svg);
+  background-image: url(../../images/core/icons/5181c6/pencil.svg);
   background-position: left center;
   background-size: 1.3em;
 }
diff --git a/core/modules/settings_tray/css/settings_tray.theme.css b/core/modules/settings_tray/css/settings_tray.theme.css
index 4d4c1d9378..5848a443b7 100644
--- a/core/modules/settings_tray/css/settings_tray.theme.css
+++ b/core/modules/settings_tray/css/settings_tray.theme.css
@@ -43,20 +43,20 @@
 }
 /* Make the inactive icon grey. */
 .toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item:before {
-  background-image: url(../../../misc/icons/bebebe/pencil.svg);
+  background-image: url(../../images/core/icons/bebebe/pencil.svg);
 }
 /* Make the active icon white. */
 .toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item.is-active:before {
-  background-image: url(../../../misc/icons/ffffff/pencil.svg);
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
 }
 .toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item:hover:before {
-  background-image: url(../../../misc/icons/ffffff/pencil.svg);
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
 }
 .toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item:hover > .toolbar-icon-edit:before {
-  background-image: url(../../../misc/icons/ffffff/pencil.svg);
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
 }
 .toolbar-tab > .button.toolbar-icon.toolbar-icon.toolbar-icon-edit:before {
-  background-image: url(../../../misc/icons/ffffff/pencil.svg);
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
 }
 
 /* Style the editables while in edit mode. */
diff --git a/core/modules/settings_tray/css/settings_tray.toolbar.css b/core/modules/settings_tray/css/settings_tray.toolbar.css
index 3157e75a62..474186804f 100644
--- a/core/modules/settings_tray/css/settings_tray.toolbar.css
+++ b/core/modules/settings_tray/css/settings_tray.toolbar.css
@@ -45,17 +45,17 @@
 }
 .toolbar-icon.toolbar-icon-edit.toolbar-item:before,
 button.toolbar-icon.toolbar-icon-edit.toolbar-item:before {
-  background-image: url(../../../misc/icons/bebebe/pencil.svg);
+  background-image: url(../../images/core/icons/bebebe/pencil.svg);
 }
 .toolbar-icon.toolbar-icon-edit.toolbar-item:before:hover,
 button.toolbar-icon.toolbar-icon-edit.toolbar-item:before:focus {
-  background-image: url(../../../misc/icons/ffffff/pencil.svg);
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
 }
 .toolbar-icon.toolbar-icon-edit.toolbar-item:hover > .toolbar-icon-edit:before {
-  background-image: url(../../../misc/icons/ffffff/pencil.svg);
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
 }
 #toolbar-bar.button.toolbar-icon.toolbar-icon.toolbar-icon-edit:before {
-  background-image: url(../../../misc/icons/ffffff/pencil.svg);
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
 }
 
 #toolbar-bar.js-settings-tray-edit-mode button.toolbar-icon.toolbar-icon-edit.toolbar-item.is-active {
diff --git a/core/modules/shortcut/css/shortcut.icons.theme.css b/core/modules/shortcut/css/shortcut.icons.theme.css
index 6d7ad58dad..9110197a46 100644
--- a/core/modules/shortcut/css/shortcut.icons.theme.css
+++ b/core/modules/shortcut/css/shortcut.icons.theme.css
@@ -7,11 +7,11 @@
  * Toolbar tab icon.
  */
 .toolbar-bar .toolbar-icon-shortcut:before {
-  background-image: url(../../../misc/icons/bebebe/star.svg);
+  background-image: url(../../images/core/icons/bebebe/star.svg);
 }
 .toolbar-bar .toolbar-icon-shortcut:active:before,
 .toolbar-bar .toolbar-icon-shortcut.is-active:before {
-  background-image: url(../../../misc/icons/ffffff/star.svg);
+  background-image: url(../../images/core/icons/ffffff/star.svg);
 }
 
 /**
diff --git a/core/modules/system/css/components/ajax-progress.module.css b/core/modules/system/css/components/ajax-progress.module.css
index e1be68e60b..de9efd41fb 100644
--- a/core/modules/system/css/components/ajax-progress.module.css
+++ b/core/modules/system/css/components/ajax-progress.module.css
@@ -13,7 +13,7 @@
 .ajax-progress-throbber .throbber {
   display: inline;
   padding: 1px 5px 2px;
-  background: transparent url(../../../../misc/throbber-active.gif) no-repeat 0 center;
+  background: transparent url(../../../images/core/throbber-active.gif) no-repeat 0 center;
 }
 .ajax-progress-throbber .message {
   display: inline;
@@ -39,7 +39,7 @@ tr .ajax-progress-throbber .throbber {
   opacity: 0.9;
   border-radius: 7px;
   background-color: #232323;
-  background-image: url(../../../../misc/loading-small.gif);
+  background-image: url(../../../images/core/loading-small.gif);
   background-repeat: no-repeat;
   background-position: center center;
 }
diff --git a/core/modules/system/css/components/autocomplete-loading.module.css b/core/modules/system/css/components/autocomplete-loading.module.css
index b4eceb9a86..93d6d4fc24 100644
--- a/core/modules/system/css/components/autocomplete-loading.module.css
+++ b/core/modules/system/css/components/autocomplete-loading.module.css
@@ -6,7 +6,7 @@
  */
 
 .js input.form-autocomplete {
-  background-image: url(../../../../misc/throbber-inactive.png);
+  background-image: url(../../../images/core/throbber-inactive.png);
   background-repeat: no-repeat;
   background-position: 100% center; /* LTR */
 }
@@ -14,7 +14,7 @@
   background-position: 0% center;
 }
 .js input.form-autocomplete.ui-autocomplete-loading {
-  background-image: url(../../../../misc/throbber-active.gif);
+  background-image: url(../../../images/core/throbber-active.gif);
   background-position: 100% center; /* LTR */
 }
 .js[dir="rtl"] input.form-autocomplete.ui-autocomplete-loading {
diff --git a/core/modules/system/css/components/system-status-counter.css b/core/modules/system/css/components/system-status-counter.css
index fe3b4eff65..ed2d425c91 100644
--- a/core/modules/system/css/components/system-status-counter.css
+++ b/core/modules/system/css/components/system-status-counter.css
@@ -20,11 +20,11 @@
 }
 
 .system-status-counter__status-icon--error:before {
-  background-image: url(../../../../misc/icons/e32700/error.svg);
+  background-image: url(../../../images/core/icons/e32700/error.svg);
 }
 .system-status-counter__status-icon--warning:before {
-  background-image: url(../../../../misc/icons/e29700/warning.svg);
+  background-image: url(../../../images/core/icons/e29700/warning.svg);
 }
 .system-status-counter__status-icon--checked:before {
-  background-image: url(../../../../misc/icons/73b355/check.svg);
+  background-image: url(../../../images/core/icons/73b355/check.svg);
 }
diff --git a/core/modules/system/css/components/tabledrag.module.css b/core/modules/system/css/components/tabledrag.module.css
index 8f93e8529e..8421617662 100644
--- a/core/modules/system/css/components/tabledrag.module.css
+++ b/core/modules/system/css/components/tabledrag.module.css
@@ -41,11 +41,11 @@ a.tabledrag-handle .handle {
   height: 14px;
   margin: -0.4em 0.5em 0;
   padding: 0.42em 0.5em;
-  background: url(../../../../misc/icons/787878/move.svg) no-repeat 6px 7px;
+  background: url(../../../images/core/icons/787878/move.svg) no-repeat 6px 7px;
 }
 a.tabledrag-handle:hover .handle,
 a.tabledrag-handle:focus .handle {
-  background-image: url(../../../../misc/icons/000000/move.svg);
+  background-image: url(../../../images/core/icons/000000/move.svg);
 }
 .touchevents .draggable td {
   padding: 0 10px;
diff --git a/core/modules/system/css/components/tablesort.module.css b/core/modules/system/css/components/tablesort.module.css
index f531ae01f3..51988eac96 100644
--- a/core/modules/system/css/components/tablesort.module.css
+++ b/core/modules/system/css/components/tablesort.module.css
@@ -12,8 +12,8 @@
   background-size: 100%;
 }
 .tablesort--asc {
-  background-image: url(../../../../misc/icons/787878/twistie-down.svg);
+  background-image: url(../../../images/core/icons/787878/twistie-down.svg);
 }
 .tablesort--desc {
-  background-image: url(../../../../misc/icons/787878/twistie-up.svg);
+  background-image: url(../../../images/core/icons/787878/twistie-up.svg);
 }
diff --git a/core/modules/system/css/components/tree-child.module.css b/core/modules/system/css/components/tree-child.module.css
index 71bb8c8581..a09b389660 100644
--- a/core/modules/system/css/components/tree-child.module.css
+++ b/core/modules/system/css/components/tree-child.module.css
@@ -4,15 +4,15 @@
  */
 
 div.tree-child {
-  background: url(../../../../misc/tree.png) no-repeat 11px center; /* LTR */
+  background: url(../../../images/core/tree.png) no-repeat 11px center; /* LTR */
 }
 div.tree-child-last {
-  background: url(../../../../misc/tree-bottom.png) no-repeat 11px center; /* LTR */
+  background: url(../../../images/core/tree-bottom.png) no-repeat 11px center; /* LTR */
 }
 [dir="rtl"] div.tree-child,
 [dir="rtl"] div.tree-child-last {
   background-position: -65px center;
 }
 div.tree-child-horizontal {
-  background: url(../../../../misc/tree.png) no-repeat -11px center;
+  background: url(../../../images/core/tree.png) no-repeat -11px center;
 }
diff --git a/core/modules/system/css/system.admin.css b/core/modules/system/css/system.admin.css
index c54aa0569e..4a3ddb1169 100644
--- a/core/modules/system/css/system.admin.css
+++ b/core/modules/system/css/system.admin.css
@@ -182,19 +182,19 @@ small .admin-link:after {
   float: right;
 }
 .module-link-help {
-  background: url(../../../misc/icons/787878/questionmark-disc.svg) 0 50% no-repeat; /* LTR */
+  background: url(../../images/core/icons/787878/questionmark-disc.svg) 0 50% no-repeat; /* LTR */
 }
 [dir="rtl"] .module-link-help {
   background-position: top 50% right 0;
 }
 .module-link-permissions {
-  background: url(../../../misc/icons/787878/key.svg) 0 50% no-repeat; /* LTR */
+  background: url(../../images/core/icons/787878/key.svg) 0 50% no-repeat; /* LTR */
 }
 [dir="rtl"] .module-link-permissions {
   background-position: top 50% right 0;
 }
 .module-link-configure {
-  background: url(../../../misc/icons/787878/cog.svg) 0 50% no-repeat; /* LTR */
+  background: url(../../images/core/icons/787878/cog.svg) 0 50% no-repeat; /* LTR */
 }
 [dir="rtl"] .module-link-configure {
   background-position: top 50% right 0;
@@ -228,10 +228,10 @@ small .admin-link:after {
   left: auto;
 }
 .system-status-report__status-icon--error:before {
-  background-image: url(../../../misc/icons/e32700/error.svg);
+  background-image: url(../../images/core/icons/e32700/error.svg);
 }
 .system-status-report__status-icon--warning:before {
-  background-image: url(../../../misc/icons/e29700/warning.svg);
+  background-image: url(../../images/core/icons/e29700/warning.svg);
 }
 .system-status-report__entry__value {
   padding: 1em 0.5em;
diff --git a/core/modules/toolbar/css/toolbar.icons.theme.css b/core/modules/toolbar/css/toolbar.icons.theme.css
index 974557d1cb..659529c3f4 100644
--- a/core/modules/toolbar/css/toolbar.icons.theme.css
+++ b/core/modules/toolbar/css/toolbar.icons.theme.css
@@ -72,78 +72,78 @@
  * Top level icons.
  */
 .toolbar-bar .toolbar-icon-menu:before {
-  background-image: url(../../../misc/icons/bebebe/hamburger.svg);
+  background-image: url(../../images/core/icons/bebebe/hamburger.svg);
 }
 .toolbar-bar .toolbar-icon-menu:active:before,
 .toolbar-bar .toolbar-icon-menu.is-active:before {
-  background-image: url(../../../misc/icons/ffffff/hamburger.svg);
+  background-image: url(../../images/core/icons/ffffff/hamburger.svg);
 }
 .toolbar-bar .toolbar-icon-help:before {
-  background-image: url(../../../misc/icons/bebebe/questionmark-disc.svg);
+  background-image: url(../../images/core/icons/bebebe/questionmark-disc.svg);
 }
 .toolbar-bar .toolbar-icon-help:active:before,
 .toolbar-bar .toolbar-icon-help.is-active:before {
-  background-image: url(../../../misc/icons/ffffff/questionmark-disc.svg);
+  background-image: url(../../images/core/icons/ffffff/questionmark-disc.svg);
 }
 
 /**
  * Main menu icons.
  */
 .toolbar-icon-system-admin-content:before {
-  background-image: url(../../../misc/icons/787878/file.svg);
+  background-image: url(../../images/core/icons/787878/file.svg);
 }
 .toolbar-icon-system-admin-content:active:before,
 .toolbar-icon-system-admin-content.is-active:before {
-  background-image: url(../../../misc/icons/000000/file.svg);
+  background-image: url(../../images/core/icons/000000/file.svg);
 }
 .toolbar-icon-system-admin-structure:before {
-  background-image: url(../../../misc/icons/787878/orgchart.svg);
+  background-image: url(../../images/core/icons/787878/orgchart.svg);
 }
 .toolbar-icon-system-admin-structure:active:before,
 .toolbar-icon-system-admin-structure.is-active:before {
-  background-image: url(../../../misc/icons/000000/orgchart.svg);
+  background-image: url(../../images/core/icons/000000/orgchart.svg);
 }
 .toolbar-icon-system-themes-page:before {
-  background-image: url(../../../misc/icons/787878/paintbrush.svg);
+  background-image: url(../../images/core/icons/787878/paintbrush.svg);
 }
 .toolbar-icon-system-themes-page:active:before,
 .toolbar-icon-system-themes-page.is-active:before {
-  background-image: url(../../../misc/icons/000000/paintbrush.svg);
+  background-image: url(../../images/core/icons/000000/paintbrush.svg);
 }
 .toolbar-icon-entity-user-collection:before {
-  background-image: url(../../../misc/icons/787878/people.svg);
+  background-image: url(../../images/core/icons/787878/people.svg);
 }
 .toolbar-icon-entity-user-collection:active:before,
 .toolbar-icon-entity-user-collection.is-active:before {
-  background-image: url(../../../misc/icons/000000/people.svg);
+  background-image: url(../../images/core/icons/000000/people.svg);
 }
 .toolbar-icon-system-modules-list:before {
-  background-image: url(../../../misc/icons/787878/puzzlepiece.svg);
+  background-image: url(../../images/core/icons/787878/puzzlepiece.svg);
 }
 .toolbar-icon-system-modules-list:active:before,
 .toolbar-icon-system-modules-list.is-active:before {
-  background-image: url(../../../misc/icons/000000/puzzlepiece.svg);
+  background-image: url(../../images/core/icons/000000/puzzlepiece.svg);
 }
 .toolbar-icon-system-admin-config:before {
-  background-image: url(../../../misc/icons/787878/wrench.svg);
+  background-image: url(../../images/core/icons/787878/wrench.svg);
 }
 .toolbar-icon-system-admin-config:active:before,
 .toolbar-icon-system-admin-config.is-active:before {
-  background-image: url(../../../misc/icons/000000/wrench.svg);
+  background-image: url(../../images/core/icons/000000/wrench.svg);
 }
 .toolbar-icon-system-admin-reports:before {
-  background-image: url(../../../misc/icons/787878/barchart.svg);
+  background-image: url(../../images/core/icons/787878/barchart.svg);
 }
 .toolbar-icon-system-admin-reports:active:before,
 .toolbar-icon-system-admin-reports.is-active:before {
-  background-image: url(../../../misc/icons/000000/barchart.svg);
+  background-image: url(../../images/core/icons/000000/barchart.svg);
 }
 .toolbar-icon-help-main:before {
-  background-image: url(../../../misc/icons/787878/questionmark-disc.svg);
+  background-image: url(../../images/core/icons/787878/questionmark-disc.svg);
 }
 .toolbar-icon-help-main:active:before,
 .toolbar-icon-help-main.is-active:before {
-  background-image: url(../../../misc/icons/000000/questionmark-disc.svg);
+  background-image: url(../../images/core/icons/000000/questionmark-disc.svg);
 }
 
 @media only screen and (min-width: 16.5em) {
@@ -234,24 +234,24 @@
   left: auto;
 }
 .toolbar .toolbar-icon.toolbar-handle:before {
-  background-image: url(../../../misc/icons/5181c6/chevron-disc-down.svg);
+  background-image: url(../../images/core/icons/5181c6/chevron-disc-down.svg);
 }
 .toolbar .toolbar-icon.toolbar-handle.open:before {
-  background-image: url(../../../misc/icons/787878/chevron-disc-up.svg);
+  background-image: url(../../images/core/icons/787878/chevron-disc-up.svg);
 }
 .toolbar .toolbar-menu .toolbar-menu .toolbar-icon.toolbar-handle:before {
-  background-image: url(../../../misc/icons/5181c6/twistie-down.svg);
+  background-image: url(../../images/core/icons/5181c6/twistie-down.svg);
   background-size: 75%;
 }
 .toolbar .toolbar-menu .toolbar-menu .toolbar-icon.toolbar-handle.open:before {
-  background-image: url(../../../misc/icons/787878/twistie-up.svg);
+  background-image: url(../../images/core/icons/787878/twistie-up.svg);
   background-size: 75%;
 }
 .toolbar .toolbar-icon-escape-admin:before {
-  background-image: url(../../../misc/icons/bebebe/chevron-disc-left.svg);
+  background-image: url(../../images/core/icons/bebebe/chevron-disc-left.svg);
 }
 [dir="rtl"] .toolbar .toolbar-icon-escape-admin:before {
-  background-image: url(../../../misc/icons/bebebe/chevron-disc-right.svg);
+  background-image: url(../../images/core/icons/bebebe/chevron-disc-right.svg);
 }
 /**
  * Orientation toggle.
@@ -276,23 +276,23 @@
  * specific targeting, setting and unsetting.
  */
 .toolbar .toolbar-toggle-orientation [value="vertical"]:before {
-  background-image: url(../../../misc/icons/bebebe/push-left.svg); /* LTR */
+  background-image: url(../../images/core/icons/bebebe/push-left.svg); /* LTR */
 }
 .toolbar .toolbar-toggle-orientation [value="vertical"]:hover:before,
 .toolbar .toolbar-toggle-orientation [value="vertical"]:focus:before {
-  background-image: url(../../../misc/icons/787878/push-left.svg); /* LTR */
+  background-image: url(../../images/core/icons/787878/push-left.svg); /* LTR */
 }
 [dir="rtl"] .toolbar .toolbar-toggle-orientation [value="vertical"]:before {
-  background-image: url(../../../misc/icons/bebebe/push-right.svg);
+  background-image: url(../../images/core/icons/bebebe/push-right.svg);
 }
 [dir="rtl"] .toolbar .toolbar-toggle-orientation [value="vertical"]:hover:before,
 [dir="rtl"] .toolbar .toolbar-toggle-orientation [value="vertical"]:focus:before {
-  background-image: url(../../../misc/icons/787878/push-right.svg);
+  background-image: url(../../images/core/icons/787878/push-right.svg);
 }
 .toolbar .toolbar-toggle-orientation [value="horizontal"]:before {
-  background-image: url(../../../misc/icons/bebebe/push-up.svg);
+  background-image: url(../../images/core/icons/bebebe/push-up.svg);
 }
 .toolbar .toolbar-toggle-orientation [value="horizontal"]:hover:before,
 .toolbar .toolbar-toggle-orientation [value="horizontal"]:focus:before {
-  background-image: url(../../../misc/icons/787878/push-up.svg);
+  background-image: url(../../images/core/icons/787878/push-up.svg);
 }
diff --git a/core/modules/user/css/user.icons.admin.css b/core/modules/user/css/user.icons.admin.css
index 66c2366c02..f8546862bf 100644
--- a/core/modules/user/css/user.icons.admin.css
+++ b/core/modules/user/css/user.icons.admin.css
@@ -7,9 +7,9 @@
  * Toolbar tab icon.
  */
 .toolbar-bar .toolbar-icon-user:before {
-  background-image: url(../../../misc/icons/bebebe/person.svg);
+  background-image: url(../../images/core/icons/bebebe/person.svg);
 }
 .toolbar-bar .toolbar-icon-user:active:before,
 .toolbar-bar .toolbar-icon-user.is-active:before {
-  background-image: url(../../../misc/icons/ffffff/person.svg);
+  background-image: url(../../images/core/icons/ffffff/person.svg);
 }
diff --git a/core/tests/Drupal/KernelTests/Core/Theme/Stable9LibraryOverrideTest.php b/core/tests/Drupal/KernelTests/Core/Theme/Stable9LibraryOverrideTest.php
new file mode 100644
index 0000000000..3d830895b3
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Theme/Stable9LibraryOverrideTest.php
@@ -0,0 +1,188 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Theme;
+
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Tests Stable 9's library overrides.
+ *
+ * @group Theme
+ */
+class Stable9LibraryOverrideTest extends KernelTestBase {
+
+  /**
+   * The theme manager.
+   *
+   * @var \Drupal\Core\Theme\ThemeManagerInterface
+   */
+  protected $themeManager;
+
+  /**
+   * The theme initialization.
+   *
+   * @var \Drupal\Core\Theme\ThemeInitializationInterface
+   */
+  protected $themeInitialization;
+
+  /**
+   * The library discovery service.
+   *
+   * @var \Drupal\Core\Asset\LibraryDiscoveryInterface
+   */
+  protected $libraryDiscovery;
+
+  /**
+   * A list of all core modules.
+   *
+   * @var string[]
+   */
+  protected $allModules;
+
+  /**
+   * A list of libraries to skip checking, in the format extension/library_name.
+   *
+   * @var string[]
+   */
+  protected $librariesToSkip = [
+    'simpletest/drupal.simpletest',
+  ];
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['system', 'user', 'path_alias'];
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+
+    $this->container->get('theme_installer')->install(['stable9']);
+
+    // Enable all core modules.
+    $all_modules = $this->container->get('extension.list.module')->getList();
+    $all_modules = array_filter($all_modules, function ($module) {
+      // Filter contrib, hidden, experimental, already enabled modules, and
+      // modules in the Testing package.
+      if ($module->origin !== 'core' || !empty($module->info['hidden']) || $module->status == TRUE || $module->info['package'] == 'Testing' || $module->info['package'] == 'Core (Experimental)') {
+        return FALSE;
+      }
+      return TRUE;
+    });
+    $this->allModules = array_keys($all_modules);
+    $this->allModules[] = 'system';
+    $this->allModules[] = 'user';
+    $this->allModules[] = 'path_alias';
+    sort($this->allModules);
+    $this->container->get('module_installer')->install($this->allModules);
+
+    $this->themeManager = $this->container->get('theme.manager');
+    $this->themeInitialization = $this->container->get('theme.initialization');
+    $this->libraryDiscovery = $this->container->get('library.discovery');
+  }
+
+  /**
+   * Ensures that Stable 9 overrides all relevant core library assets.
+   */
+  public function testStable9LibraryOverrides() {
+    // First get the clean library definitions with no active theme.
+    $libraries_before = $this->getAllLibraries();
+    $libraries_before = $this->removeVendorAssets($libraries_before);
+
+    $this->themeManager->setActiveTheme($this->themeInitialization->getActiveThemeByName('stable9'));
+    $this->libraryDiscovery->clearCachedDefinitions();
+
+    // Now get the library definitions with Stable 9 as the active theme.
+    $libraries_after = $this->getAllLibraries();
+    $libraries_after = $this->removeVendorAssets($libraries_after);
+
+    foreach ($libraries_before as $extension => $libraries) {
+      foreach ($libraries as $library_name => $library) {
+        // Allow skipping libraries.
+        if (in_array("$extension/$library_name", $this->librariesToSkip)) {
+          continue;
+        }
+        $library_after = $libraries_after[$extension][$library_name];
+
+        // Check that all the CSS assets are overridden.
+        foreach ($library['css'] as $index => $asset) {
+          $clean_path = $asset['data'];
+          $stable_path = $library_after['css'][$index]['data'];
+          // Make core/misc assets look like they are coming from a "core"
+          // module.
+          $replacements = [
+            'core/misc/' => "core/modules/core/css/",
+          ];
+          $expected_path = strtr($clean_path, $replacements);
+
+          // Adjust the module asset paths to correspond with the Stable 9
+          // folder structure.
+          $expected_path = str_replace("core/modules/$extension/css/", "core/themes/stable9/css/$extension/", $expected_path);
+          $assert_path = str_replace("core/modules/$extension/", '', $clean_path);
+
+          $this->assertEqual($expected_path, $stable_path, "$assert_path from the $extension/$library_name library is overridden in Stable 9.");
+        }
+      }
+    }
+  }
+
+  /**
+   * Removes all vendor libraries and assets from the library definitions.
+   *
+   * @param array[] $all_libraries
+   *   An associative array of libraries keyed by extension, then by library
+   *   name, and so on.
+   *
+   * @return array[]
+   *   The reduced array of libraries.
+   */
+  protected function removeVendorAssets(array $all_libraries) {
+    foreach ($all_libraries as $extension => $libraries) {
+      foreach ($libraries as $library_name => $library) {
+        if (isset($library['remote'])) {
+          unset($all_libraries[$extension][$library_name]);
+        }
+        foreach (['css', 'js'] as $asset_type) {
+          foreach ($library[$asset_type] as $index => $asset) {
+            if (strpos($asset['data'], 'core/assets/vendor') !== FALSE) {
+              unset($all_libraries[$extension][$library_name][$asset_type][$index]);
+              // Re-key the array of assets. This is needed because
+              // libraries-override doesn't always preserve the order.
+              if (!empty($all_libraries[$extension][$library_name][$asset_type])) {
+                $all_libraries[$extension][$library_name][$asset_type] = array_values($all_libraries[$extension][$library_name][$asset_type]);
+              }
+            }
+          }
+        }
+      }
+    }
+    return $all_libraries;
+  }
+
+  /**
+   * Gets all libraries for core and all installed modules.
+   *
+   * @return array[]
+   *   An associative array of libraries keyed by extension, then by library
+   *   name, and so on.
+   */
+  protected function getAllLibraries() {
+    $modules = \Drupal::moduleHandler()->getModuleList();
+    $module_list = array_keys($modules);
+    sort($module_list);
+    $this->assertEqual($this->allModules, $module_list, 'All core modules are installed.');
+
+    $libraries['core'] = $this->libraryDiscovery->getLibrariesByExtension('core');
+
+    foreach ($modules as $module_name => $module) {
+      $library_file = $module->getPath() . '/' . $module_name . '.libraries.yml';
+      if (is_file($this->root . '/' . $library_file)) {
+        $libraries[$module_name] = $this->libraryDiscovery->getLibrariesByExtension($module_name);
+      }
+    }
+    return $libraries;
+  }
+
+}
diff --git a/core/tests/Drupal/KernelTests/Core/Theme/Stable9TemplateOverrideTest.php b/core/tests/Drupal/KernelTests/Core/Theme/Stable9TemplateOverrideTest.php
new file mode 100644
index 0000000000..d0540e31aa
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/Theme/Stable9TemplateOverrideTest.php
@@ -0,0 +1,100 @@
+<?php
+
+namespace Drupal\KernelTests\Core\Theme;
+
+use Drupal\Core\Theme\Registry;
+use Drupal\KernelTests\KernelTestBase;
+
+/**
+ * Tests Stable 9's template overrides.
+ *
+ * @group Theme
+ */
+class Stable9TemplateOverrideTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['system', 'user'];
+
+  /**
+   * An array of template names to skip, without the extension.
+   *
+   * @var string[]
+   */
+  protected $templatesToSkip = [
+    'simpletest-result-summary',
+    'views-form-views-form',
+  ];
+
+  /**
+   * The theme handler.
+   *
+   * @var \Drupal\Core\Extension\ThemeHandlerInterface
+   */
+  protected $themeHandler;
+
+  /**
+   * A list of all core modules.
+   *
+   * @var string[]
+   */
+  protected $allModules;
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function setUp() {
+    parent::setUp();
+    $this->themeHandler = $this->container->get('theme_handler');
+
+    $this->container->get('theme_installer')->install(['stable9']);
+
+    $this->installAllModules();
+  }
+
+  /**
+   * Installs all core modules.
+   */
+  protected function installAllModules() {
+    // Enable all core modules.
+    $all_modules = $this->container->get('extension.list.module')->getList();
+    $all_modules = array_filter($all_modules, function ($module) {
+      // Filter contrib, hidden, experimental, already enabled modules, and
+      // modules in the Testing package.
+      if ($module->origin !== 'core' || !empty($module->info['hidden']) || $module->status == TRUE || $module->info['package'] == 'Testing' || $module->info['package'] == 'Core (Experimental)') {
+        return FALSE;
+      }
+      return TRUE;
+    });
+    $this->allModules = array_keys($all_modules);
+    sort($this->allModules);
+
+    $module_installer = $this->container->get('module_installer');
+    $module_installer->install($this->allModules);
+
+    $this->installConfig(['system', 'user']);
+  }
+
+  /**
+   * Ensures that Stable 9 overrides all relevant core templates.
+   */
+  public function testStable9TemplateOverrides() {
+    $registry = new Registry($this->root, \Drupal::cache(), \Drupal::lock(), \Drupal::moduleHandler(), $this->themeHandler, \Drupal::service('theme.initialization'), 'stable9');
+    $registry->setThemeManager(\Drupal::theme());
+
+    $registry_full = $registry->get();
+
+    foreach ($registry_full as $hook => $info) {
+      if (isset($info['template'])) {
+        // Allow skipping templates.
+        if (in_array($info['template'], $this->templatesToSkip)) {
+          continue;
+        }
+
+        $this->assertEquals('core/themes/stable9', $info['theme path'], $info['template'] . '.html.twig overridden in Stable 9.');
+      }
+    }
+  }
+
+}
diff --git a/core/themes/stable9/README.txt b/core/themes/stable9/README.txt
new file mode 100644
index 0000000000..491054699b
--- /dev/null
+++ b/core/themes/stable9/README.txt
@@ -0,0 +1,26 @@
+
+ABOUT STABLE 9
+--------------
+
+Stable is the default base theme for Drupal 9; it provides minimal markup and
+very few CSS classes.
+
+Stable allows core markup and styling to evolve by functioning as a backwards
+compatibility layer for themes against changes to core markup and CSS. If you
+browse Stable's contents, you will find copies of all the Twig templates and
+CSS files provided by core.
+
+Stable 9 will be used as the base theme if no base theme is set in a theme's
+.info.yml file. To opt out of Stable you can set the base theme to false in
+your theme's .info.yml file (see the warning below before doing this):
+  base theme: false
+
+Warning: Themes that opt out of using Stable as a base theme will need
+continuous maintenance as core changes, so only opt out if you are prepared to
+keep track of those changes and how they affect your theme.
+
+ABOUT DRUPAL THEMING
+--------------------
+
+For more information, see Drupal.org's theming guide.
+https://www.drupal.org/docs/8/theming
diff --git a/core/themes/stable9/css/block/block.admin.css b/core/themes/stable9/css/block/block.admin.css
new file mode 100644
index 0000000000..df1dda398b
--- /dev/null
+++ b/core/themes/stable9/css/block/block.admin.css
@@ -0,0 +1,46 @@
+/* Block listing page */
+.region-title__action {
+  display: inline-block;
+  margin-left: 1em; /* LTR */
+}
+[dir="rtl"] .region-title__action {
+  margin-right: 1em;
+  margin-left: 0;
+}
+
+/* Block demo mode */
+.block-region {
+  margin-top: 4px;
+  margin-bottom: 4px;
+  padding: 3px;
+  background-color: #ff6;
+}
+a.block-demo-backlink,
+a.block-demo-backlink:link,
+a.block-demo-backlink:visited {
+  position: fixed;
+  z-index: 499;
+  left: 20px; /* LTR */
+  padding: 5px 10px;
+  color: #000;
+  border-radius: 0 0 10px 10px;
+  background-color: #b4d7f0;
+  font-family: "Lucida Grande", Verdana, sans-serif;
+  font-size: small;
+  line-height: 20px;
+}
+a.block-demo-backlink:hover {
+  text-decoration: underline;
+}
+
+/* Configure block form - Block description */
+.block-form .form-item-settings-admin-label label {
+  display: inline;
+}
+.block-form .form-item-settings-admin-label label:after {
+  content: ":";
+}
+.block-disabled:not(:hover) {
+  opacity: 0.675;
+  background: #fcfcfa;
+}
diff --git a/core/themes/stable9/css/ckeditor/ckeditor-iframe.css b/core/themes/stable9/css/ckeditor/ckeditor-iframe.css
new file mode 100644
index 0000000000..aafa5f2055
--- /dev/null
+++ b/core/themes/stable9/css/ckeditor/ckeditor-iframe.css
@@ -0,0 +1,25 @@
+/**
+ * CSS added to iframe-based instances only.
+ */
+body {
+  margin: 8px;
+  color: #222;
+  background-color: #fff;
+  font-family: Arial, Verdana, sans-serif;
+  font-size: 15px;
+}
+
+@media screen and (max-width: 600px) {
+  /* A font-size of 16px prevents iOS from zooming. */
+  body {
+    font-size: 16px;
+  }
+}
+
+ol,
+ul,
+dl {
+  /* Preserved spaces for list items with text direction other than the list.
+   * (CKEditor issues #6249,#8049) */
+  padding: 0 40px;
+}
diff --git a/core/themes/stable9/css/ckeditor/ckeditor.admin.css b/core/themes/stable9/css/ckeditor/ckeditor.admin.css
new file mode 100644
index 0000000000..d1eff01f96
--- /dev/null
+++ b/core/themes/stable9/css/ckeditor/ckeditor.admin.css
@@ -0,0 +1,331 @@
+/**
+ * @file
+ * Styles for configuration of CKEditor module.
+ *
+ * Many of these styles are adapted directly from the default CKEditor theme
+ * "moono".
+ */
+
+.ckeditor-toolbar {
+  margin: 5px 0;
+  padding: 0.1667em 0.1667em 0.08em;
+  /* Disallow any user selections in the drag-and-drop toolbar config UI. */
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  border: 1px solid #b6b6b6;
+  background: #cfd1cf;
+  background-image: -webkit-linear-gradient(top, whiteSmoke, #cfd1cf);
+  background-image: linear-gradient(top, whiteSmoke, #cfd1cf);
+  box-shadow: 0 1px 0 white inset;
+}
+.ckeditor-toolbar-active {
+  margin-top: 0.25em;
+}
+.ckeditor-toolbar-disabled {
+  margin-bottom: 0.5em;
+}
+.ckeditor-toolbar ul,
+.ckeditor-toolbar-disabled ul {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+/* This is required to win over specificity of [dir="rtl"] ul */
+[dir="rtl"] .ckeditor-toolbar ul,
+[dir="rtl"] .ckeditor-toolbar-disabled ul {
+  margin-right: 0;
+}
+
+.ckeditor-row {
+  padding: 2px 0 3px;
+  border-radius: 3px;
+}
+.ckeditor-group-names-are-visible .ckeditor-row {
+  border: 1px solid whitesmoke;
+}
+.ckeditor-row + .ckeditor-row {
+  margin-top: 0.25em;
+}
+.ckeditor-toolbar-group,
+.ckeditor-toolbar-group-placeholder,
+.ckeditor-add-new-group {
+  float: left; /* LTR */
+}
+[dir="rtl"] .ckeditor-toolbar-group,
+[dir="rtl"] .ckeditor-toolbar-group-placeholder,
+[dir="rtl"] .ckeditor-add-new-group {
+  float: right;
+}
+.ckeditor-toolbar-groups {
+  min-height: 2em;
+}
+.ckeditor-toolbar-group {
+  margin: 0 0.3333em;
+  cursor: move;
+}
+.ckeditor-group-names-are-visible .ckeditor-toolbar-group,
+.ckeditor-add-new-group {
+  padding: 0.2em 0.4em;
+  border: 1px dotted #a6a6a6;
+  border-radius: 3px;
+}
+.ckeditor-toolbar-group.placeholder,
+.ckeditor-toolbar-group.placeholder .ckeditor-toolbar-group-name {
+  cursor: not-allowed;
+}
+.ckeditor-toolbar-group.placeholder .ckeditor-toolbar-group-name {
+  font-style: italic;
+}
+.ckeditor-toolbar-group-name {
+  display: none;
+  margin: 0.25em 0;
+  font-size: 1em;
+  font-weight: normal;
+}
+.ckeditor-group-names-are-visible .ckeditor-toolbar-group-name {
+  display: block;
+  cursor: pointer;
+}
+.ckeditor-toolbar-active .placeholder,
+.ckeditor-toolbar-active .ckeditor-add-new-group {
+  display: none;
+}
+.ckeditor-group-names-are-visible .placeholder,
+.ckeditor-group-names-are-visible .ckeditor-add-new-group {
+  display: block;
+}
+.ckeditor-toolbar-group-buttons {
+  float: left; /* LTR */
+}
+[dir="rtl"] .ckeditor-toolbar-group-buttons {
+  float: right;
+}
+.ckeditor-groupnames-toggle {
+  float: right; /* LTR */
+  cursor: pointer;
+}
+[dir="rtl"] .ckeditor-groupnames-toggle {
+  float: left;
+}
+.ckeditor-toolbar .ckeditor-toolbar-group > li {
+  margin: 3px 6px;
+  padding: 3px;
+  border: 1px solid white;
+  border-radius: 5px;
+  background-image: -webkit-linear-gradient(transparent 60%, rgba(0, 0, 0, 0.1));
+  background-image: linear-gradient(transparent 60%, rgba(0, 0, 0, 0.1));
+}
+.ckeditor-toolbar-configuration .fieldset-description {
+  margin-bottom: 1em;
+}
+.ckeditor-toolbar-disabled .ckeditor-toolbar-available,
+.ckeditor-toolbar-disabled .ckeditor-toolbar-dividers {
+  box-sizing: border-box;
+}
+.ckeditor-toolbar-disabled .ckeditor-toolbar-available {
+  float: left; /* LTR */
+  width: 80%;
+}
+[dir="rtl"] .ckeditor-toolbar-disabled .ckeditor-toolbar-available {
+  float: right;
+}
+.ckeditor-toolbar-disabled .ckeditor-toolbar-dividers {
+  float: right; /* LTR */
+  width: 20%;
+}
+[dir="rtl"] .ckeditor-toolbar-disabled .ckeditor-toolbar-dividers {
+  float: left;
+}
+.ckeditor-toolbar-disabled .ckeditor-buttons li a,
+.ckeditor-toolbar .ckeditor-buttons,
+.ckeditor-add-new-group button {
+  border: 1px solid #a6a6a6;
+  border-bottom-color: #979797;
+  border-radius: 3px;
+  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5), 0 0 2px rgba(255, 255, 255, 0.15) inset, 0 1px 0 rgba(255, 255, 255, 0.15) inset;
+}
+.ckeditor-toolbar-disabled .ckeditor-buttons {
+  border: 0;
+}
+.ckeditor-toolbar-disabled .ckeditor-buttons li {
+  margin: 2px;
+}
+.ckeditor-buttons {
+  min-width: 26px;
+  min-height: 26px;
+}
+.ckeditor-buttons li {
+  float: left; /* LTR */
+  margin: 0;
+  padding: 0;
+}
+[dir="rtl"] .ckeditor-buttons li {
+  float: right;
+}
+.ckeditor-buttons li a,
+.ckeditor-add-new-group button {
+  color: #474747;
+  background: #e4e4e4;
+  background-image: -webkit-linear-gradient(top, white, #e4e4e4);
+  background-image: linear-gradient(top, white, #e4e4e4);
+}
+.ckeditor-buttons li a {
+  position: relative;
+  display: block;
+  min-height: 18px;
+  padding: 4px 6px;
+  cursor: move;
+  white-space: nowrap;
+  text-decoration: none;
+  border: 0;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+  line-height: 1.4;
+}
+.ckeditor-toolbar-dividers {
+  float: right; /* LTR */
+}
+[dir="rtl"] .ckeditor-toolbar-dividers {
+  float: left;
+}
+.ckeditor-buttons li .cke-icon-only {
+  /* Firefox includes the offscreen text in the focus indicator, resulting in a
+     far too wide focus indicator. This fixes that. */
+  overflow: hidden;
+  width: 16px;
+  text-indent: -9999px;
+}
+.ckeditor-buttons .cke_button_icon img {
+  width: 16px;
+  height: 16px;
+}
+.ckeditor-buttons li .cke_ltr {
+  direction: ltr;
+}
+.ckeditor-buttons li .cke_rtl {
+  direction: rtl;
+}
+.ckeditor-buttons li a:focus,
+.ckeditor-buttons li a:active,
+.ckeditor-multiple-buttons li a:focus {
+  z-index: 11; /* Ensure focused buttons show their outline on all sides. */
+}
+.ckeditor-buttons li:first-child a {
+  border-top-left-radius: 2px; /* LTR */
+  border-bottom-left-radius: 2px; /* LTR */
+}
+[dir="rtl"] .ckeditor-buttons li:first-child a {
+  border-top-right-radius: 2px;
+  border-bottom-right-radius: 2px;
+}
+.ckeditor-buttons li:last-child a {
+  border-top-right-radius: 2px; /* LTR */
+  border-bottom-right-radius: 2px; /* LTR */
+}
+[dir="rtl"] .ckeditor-buttons li:last-child a {
+  border-top-left-radius: 2px;
+  border-bottom-left-radius: 2px;
+}
+.ckeditor-button-placeholder,
+.ckeditor-buttons .ckeditor-button-placeholder a,
+.ckeditor-toolbar-group-placeholder {
+  background: #9dcae7;
+}
+.ckeditor-toolbar-group-placeholder {
+  border-radius: 4px;
+}
+.ckeditor-multiple-buttons {
+  float: left; /* LTR */
+  margin: 5px;
+  padding: 1px 2px;
+  list-style: none;
+}
+[dir="rtl"] .ckeditor-multiple-buttons {
+  float: right;
+}
+.ckeditor-multiple-buttons li {
+  float: left; /* LTR */
+  margin: 0;
+  padding: 0;
+}
+[dir="rtl"] .ckeditor-multiple-buttons li {
+  float: right;
+}
+.ckeditor-multiple-buttons li a {
+  display: inline-block;
+  min-height: 18px;
+  margin: 0;
+  padding: 2px 0;
+  cursor: move;
+  line-height: 1.4;
+}
+.ckeditor-buttons .ckeditor-group-button-separator,
+.ckeditor-multiple-buttons .ckeditor-group-button-separator {
+  margin: -1px -3px -2px;
+}
+.ckeditor-buttons .ckeditor-group-button-separator a,
+.ckeditor-multiple-buttons .ckeditor-group-button-separator a {
+  position: relative;
+  z-index: 10;
+  width: 13px;
+  height: 29px;
+  padding: 0;
+  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA0AAAAdCAMAAABG4xbVAAAAhFBMVEUAAACmpqampqampqb////l5eX////5+fmmpqatra2urq6vr6+1tbW2tra4uLi6urq8vLzb29ve3t7i4uLl5eXn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz+/v7qIQO+AAAACHRSTlMATVmAi8XM29MuWToAAABjSURBVBiVrc5BCoAwDETRMKhtRBduev9LKm1xjItWRBBE6Nt9QkIwOTcUzk0Imi8aoMssxbgoTHMtqsFMLta0vPh2N49HyfdelPg6k9uvX/a+Bmggt1qJRNzQFVgjEnkUZDoBmH57VSypjg4AAAAASUVORK5CYII=) no-repeat center center;
+}
+ul.ckeditor-buttons li.ckeditor-button-separator a {
+  position: relative;
+  z-index: 10;
+  width: 1px;
+  height: 24px;
+  margin: 1px 0 0;
+  padding: 0;
+  background: #e4e4e4;
+  background-image: -webkit-linear-gradient(#e4e4e4, #b4b4b4);
+  background-image: linear-gradient(#e4e4e4, #b4b4b4);
+}
+.ckeditor-multiple-buttons .ckeditor-button-separator a {
+  width: 2px;
+  height: 26px;
+  margin: 0 10px;
+  padding: 0;
+}
+.ckeditor-separator {
+  display: block;
+  width: 1px;
+  height: 18px;
+  margin: 5px 0;
+  background-color: silver;
+  background-color: rgba(0, 0, 0, 0.2);
+  box-shadow: 1px 0 1px rgba(255, 255, 255, 0.5);
+}
+.ckeditor-button-arrow {
+  display: inline-block;
+  width: 0;
+  margin: 0 4px 2px;
+  text-align: center;
+  border-top: 3px solid #333;
+  border-right: 3px solid transparent;
+  border-left: 3px solid transparent;
+}
+.ckeditor-row-controls {
+  float: right; /* LTR */
+  width: 40px;
+  text-align: right; /* LTR */
+  font-size: 18px;
+}
+[dir="rtl"] .ckeditor-row-controls {
+  float: left;
+  text-align: left;
+}
+.ckeditor-row-controls a {
+  display: inline-block;
+  box-sizing: border-box;
+  width: 20px;
+  height: 28px;
+  padding: 6px 2px;
+  text-decoration: none;
+  color: #333;
+  font-weight: bold;
+  line-height: 0.9;
+}
diff --git a/core/themes/stable9/css/ckeditor/ckeditor.css b/core/themes/stable9/css/ckeditor/ckeditor.css
new file mode 100644
index 0000000000..c1e2d4409f
--- /dev/null
+++ b/core/themes/stable9/css/ckeditor/ckeditor.css
@@ -0,0 +1,39 @@
+.ckeditor-dialog-loading {
+  position: absolute;
+  top: 0;
+  width: 100%;
+  text-align: center;
+}
+
+.ckeditor-dialog-loading-link {
+  position: relative;
+  top: 0;
+  display: inline-block;
+  padding: 3px 10px;
+  -webkit-user-select: none;
+  -khtml-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  border: 1px solid #b6b6b6;
+  border-top: none;
+  border-radius: 0 0 5px 5px;
+  background: white;
+  box-shadow: 0 0 10px -3px #000;
+  font-size: 14px;
+  -webkit-touch-callout: none;
+}
+
+/**
+ * Adjust the style of in-place editing CKEditor instances.
+ */
+.quickedit-toolgroup.wysiwyg-main .cke_chrome,
+.quickedit-toolgroup.wysiwyg-main .cke_inner,
+.quickedit-toolgroup.wysiwyg-main .cke_top {
+  border-top: none;
+  border-right: none;
+  border-bottom: none;
+  border-left: none;
+  background: transparent;
+  box-shadow: none;
+}
diff --git a/core/themes/stable9/css/ckeditor/plugins/drupalimagecaption/ckeditor.drupalimagecaption.css b/core/themes/stable9/css/ckeditor/plugins/drupalimagecaption/ckeditor.drupalimagecaption.css
new file mode 100644
index 0000000000..29f6a490e5
--- /dev/null
+++ b/core/themes/stable9/css/ckeditor/plugins/drupalimagecaption/ckeditor.drupalimagecaption.css
@@ -0,0 +1,21 @@
+/**
+ * @file
+ * Image Caption: overrides to make centered alignment work inside CKEditor.
+ */
+
+/**
+ * Since .align-center is set on the non-captioned image's parent block element
+ * in CKEditor, the image must be centered separately.
+ */
+p[data-widget="image"].align-center {
+  text-align: center;
+}
+
+/**
+ * Since .align-center is set on captioned widget's wrapper element in CKEditor,
+ * the alignment of internals must be set separately.
+ */
+div[data-cke-widget-wrapper].align-center > figure[data-widget="image"] {
+  margin-right: auto;
+  margin-left: auto;
+}
diff --git a/core/themes/stable9/css/ckeditor/plugins/language/ckeditor.language.css b/core/themes/stable9/css/ckeditor/plugins/language/ckeditor.language.css
new file mode 100644
index 0000000000..41b7569952
--- /dev/null
+++ b/core/themes/stable9/css/ckeditor/plugins/language/ckeditor.language.css
@@ -0,0 +1,19 @@
+/**
+ * @file
+ * Language: add styling for elements that have a language attribute.
+ */
+
+/**
+ * Show the user that a 'lang' tag has been applied by adding a thin dotted
+ * border. We also append the value of the tag between brackets, for example:
+ * '(en)'. Since the html element has a 'lang' attribute too we only target
+ * elements within the html scope.
+ */
+html [lang] {
+  outline: 1px dotted gray;
+}
+html [lang]:after {
+  content: " ("attr(lang)")";
+  color: #666;
+  font-size: 10px;
+}
diff --git a/core/themes/stable9/css/color/color.admin.css b/core/themes/stable9/css/color/color.admin.css
new file mode 100644
index 0000000000..d15948873e
--- /dev/null
+++ b/core/themes/stable9/css/color/color.admin.css
@@ -0,0 +1,153 @@
+/**
+ * @file
+ * Stylesheet for the administration pages of the Color module.
+ */
+.color-form {
+  max-width: 50em;
+}
+.farbtastic {
+  margin: 0 auto;
+}
+.color-form .form-item {
+  height: 2em;
+  margin: 0.5em 0;
+  padding: 0.5em;
+}
+.color-form label {
+  clear: left; /* LTR */
+}
+[dir="rtl"] .color-form label {
+  clear: right;
+}
+.color-form .form-text {
+  float: left; /* LTR */
+  width: 86%;
+  cursor: pointer;
+  text-align: center;
+}
+[dir="rtl"] .color-form .form-text {
+  float: right;
+}
+.color-palette__hook {
+  float: left; /* LTR */
+  width: 16px;
+  height: 16px;
+}
+[dir="rtl"] .color-palette__hook {
+  float: right;
+}
+.color-palette__hook.is-down,
+.color-palette__hook.is-up,
+.color-palette__hook.is-both {
+  background: url(../../images/color/hook.png) no-repeat 100% 0; /* LTR */
+}
+[dir="rtl"] .color-palette__hook.is-down,
+[dir="rtl"] .color-palette__hook.is-up,
+[dir="rtl"] .color-palette__hook.is-both {
+  background: url(../../images/color/hook-rtl.png) no-repeat 0 0;
+}
+.color-palette__hook.is-up {
+  background-position: 100% -27px; /* LTR */
+}
+[dir="rtl"] .color-palette__hook.is-up {
+  background-position: 0 -27px;
+}
+.color-palette__hook.is-both {
+  background-position: 100% -54px; /* LTR */
+}
+[dir="rtl"] .color-palette__hook.is-both {
+  background-position: 0 -54px;
+}
+/**
+ * The button also inherits from .link, which hides the background. Use a more
+ * specific selector to overwrite.
+ */
+button.color-palette__lock,
+.color-palette__lock {
+  position: relative;
+  top: -1.7em;
+  left: -10px;
+  float: left; /* LTR */
+  width: 20px;
+  height: 19px;
+  cursor: pointer;
+  text-indent: -9999px;
+  direction: ltr;
+  border: 0;
+  outline: 0;
+  background: url(../../images/color/lock.png) no-repeat 50% 0;
+}
+[dir="rtl"] button.color-palette__lock,
+[dir="rtl"] .color-palette__lock {
+  float: right;
+}
+/* Same as above .color-palette__lock rule. */
+button.is-unlocked,
+.is-unlocked {
+  background-position: 50% -22px;
+}
+
+/* wide viewport. */
+@media screen and (min-width: 37.5625em) { /* 601px */
+  .color-placeholder {
+    float: right; /* LTR */
+  }
+  [dir="rtl"] .color-placeholder {
+    float: left;
+  }
+  .color-form .form-item {
+    margin: 0.5em 195px 0.5em 0; /* LTR */
+  }
+  [dir="rtl"] .color-form .form-item {
+    margin: 0.5em 0 0.5em 195px;
+  }
+  .color-form label {
+    float: left; /* LTR */
+    clear: left; /* LTR */
+    width: 15em;
+  }
+  [dir="rtl"] .color-form label {
+    float: right;
+    clear: right;
+  }
+  .color-form .form-text,
+  .color-form .form-select {
+    float: left; /* LTR */
+    width: auto;
+  }
+  [dir="rtl"] .color-form .form-text,
+  [dir="rtl"] .color-form .form-select {
+    float: right;
+  }
+  .color-palette__hook {
+    float: left; /* LTR */
+    margin-top: 3px;
+  }
+  [dir="rtl"] .color-palette__hook {
+    float: right;
+  }
+}
+.item-selected {
+  background: #eee;
+}
+
+/* Preview */
+.color-preview {
+  display: none;
+}
+.js .color-preview {
+  position: relative;
+  display: block;
+  float: left; /* LTR */
+}
+.js[dir="rtl"] .color-preview {
+  float: right;
+}
+
+@media screen and (max-width: 30em) { /* 480px */
+  .color-form .color-preview-sidebar,
+  .color-form .color-preview-content {
+    width: auto;
+    margin: 0;
+  }
+}
diff --git a/core/themes/stable9/css/config_translation/config_translation.admin.css b/core/themes/stable9/css/config_translation/config_translation.admin.css
new file mode 100644
index 0000000000..0a79b48d93
--- /dev/null
+++ b/core/themes/stable9/css/config_translation/config_translation.admin.css
@@ -0,0 +1,24 @@
+/**
+ * @file
+ * Styles for Configuration Translation.
+ */
+
+/**
+ * Hide the label, in an accessible way, for responsive screens which show the
+ * form in one column.
+ */
+.translation-set__translated label {
+  position: absolute;
+  overflow: hidden;
+  clip: rect(1px, 1px, 1px, 1px);
+  width: 1px;
+  height: 1px;
+}
+
+@media screen and (min-width: 38em) {
+  .translation-set__translated label {
+    position: inherit;
+    width: auto;
+    height: auto;
+  }
+}
diff --git a/core/themes/stable9/css/content_moderation/content_moderation.module.css b/core/themes/stable9/css/content_moderation/content_moderation.module.css
new file mode 100644
index 0000000000..2ffefa5269
--- /dev/null
+++ b/core/themes/stable9/css/content_moderation/content_moderation.module.css
@@ -0,0 +1,38 @@
+/**
+ * @file
+ * Component styles for the content_moderation module.
+ */
+.entity-moderation-form {
+  display: -webkit-flex; /* Safari */
+  display: flex;
+  -webkit-flex-wrap: wrap; /* Safari */
+  flex-wrap: wrap;
+  -webkit-align-items: flex-start; /* Safari */
+  align-items: flex-start;
+  list-style: none;
+}
+
+.entity-moderation-form__item {
+  display: table;
+  margin-right: 2em;
+}
+
+.entity-moderation-form__item:last-child {
+  -webkit-align-self: flex-end; /* Safari */
+  align-self: flex-end;
+  margin-right: 0;
+}
+
+.entity-moderation-form .form-item {
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+.entity-moderation-form .form-item label {
+  display: table;
+  padding-bottom: 0.25em;
+}
+
+.entity-moderation-form input[type=submit] {
+  margin-bottom: 1.2em;
+}
diff --git a/core/themes/stable9/css/content_moderation/content_moderation.theme.css b/core/themes/stable9/css/content_moderation/content_moderation.theme.css
new file mode 100644
index 0000000000..12242db25c
--- /dev/null
+++ b/core/themes/stable9/css/content_moderation/content_moderation.theme.css
@@ -0,0 +1,10 @@
+/**
+ * @file
+ * Theme styles for the content_moderation module.
+ */
+.entity-moderation-form {
+  margin: 2em 0;
+  padding-left: 1em;
+  border: 1px dashed #bbb;
+  background: #fff;
+}
diff --git a/core/themes/stable9/css/content_translation/content_translation.admin.css b/core/themes/stable9/css/content_translation/content_translation.admin.css
new file mode 100644
index 0000000000..732ea0f11b
--- /dev/null
+++ b/core/themes/stable9/css/content_translation/content_translation.admin.css
@@ -0,0 +1,33 @@
+/**
+ * @file
+ * Styles for the content language administration page.
+ */
+
+.language-content-settings-form .bundle {
+  width: 24%;
+}
+.language-content-settings-form .field {
+  width: 24%;
+  padding-left: 3em; /* LTR */
+}
+[dir="rtl"] .language-content-settings-form .field {
+  padding-right: 3em;
+  padding-left: 1em;
+}
+.language-content-settings-form .column {
+  padding-left: 5em; /* LTR */
+}
+[dir="rtl"] .language-content-settings-form .column {
+  padding-right: 5em;
+  padding-left: 1em;
+}
+.language-content-settings-form .field label,
+.language-content-settings-form .column label {
+  font-weight: normal;
+}
+.language-content-settings-form .translatable {
+  width: 1%;
+}
+.language-content-settings-form .operations {
+  width: 75%;
+}
diff --git a/core/themes/stable9/css/contextual/contextual.icons.theme.css b/core/themes/stable9/css/contextual/contextual.icons.theme.css
new file mode 100644
index 0000000000..3c88fdbf39
--- /dev/null
+++ b/core/themes/stable9/css/contextual/contextual.icons.theme.css
@@ -0,0 +1,39 @@
+/**
+ * @file
+ * Styling for contextual module icons.
+ */
+
+/**
+ * Toolbar tab icon.
+ */
+.toolbar-bar .toolbar-icon-edit:before {
+  background-image: url(../../images/core/icons/bebebe/pencil.svg);
+}
+.toolbar-bar .toolbar-icon-edit:active:before,
+.toolbar-bar .toolbar-icon-edit.is-active:before {
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
+}
+
+/**
+ * Contextual trigger.
+ */
+.contextual .trigger {
+  /* Override the .focusable height: auto */
+  width: 26px !important;
+  /* Override the .focusable height: auto */
+  height: 26px !important;
+  text-indent: -9999px;
+  background-image: url(../../images/core/icons/bebebe/pencil.svg);
+  background-repeat: no-repeat;
+  background-position: center center;
+  background-size: 16px 16px;
+}
+
+.contextual .trigger:hover {
+  background-image: url(../../images/core/icons/787878/pencil.svg);
+}
+
+.contextual .trigger:focus {
+  outline: none;
+  background-image: url(../../images/core/icons/5181c6/pencil.svg);
+}
diff --git a/core/themes/stable9/css/contextual/contextual.module.css b/core/themes/stable9/css/contextual/contextual.module.css
new file mode 100644
index 0000000000..2a21e1bb0a
--- /dev/null
+++ b/core/themes/stable9/css/contextual/contextual.module.css
@@ -0,0 +1,18 @@
+/**
+ * @file
+ * Generic base styles for contextual module.
+ */
+
+.contextual-region {
+  position: relative;
+}
+.contextual .trigger:focus {
+  /* Override the .focusable position: static */
+  position: relative !important;
+}
+.contextual-links {
+  display: none;
+}
+.contextual.open .contextual-links {
+  display: block;
+}
diff --git a/core/themes/stable9/css/contextual/contextual.theme.css b/core/themes/stable9/css/contextual/contextual.theme.css
new file mode 100644
index 0000000000..d84444d18d
--- /dev/null
+++ b/core/themes/stable9/css/contextual/contextual.theme.css
@@ -0,0 +1,112 @@
+/**
+ * @file
+ * Styling for contextual module.
+ */
+
+/**
+ * Contextual links wrappers.
+ */
+.contextual {
+  position: absolute;
+  z-index: 500;
+  top: 6px;
+  right: 0; /* LTR */
+}
+[dir="rtl"] .contextual {
+  right: auto;
+  left: 0;
+}
+
+/**
+ * Contextual region.
+ */
+.contextual-region.focus {
+  outline: 1px dashed #d6d6d6;
+  outline-offset: 1px;
+}
+
+/**
+ * Contextual trigger.
+ */
+.contextual .trigger {
+  position: relative;
+  right: 6px; /* LTR */
+  float: right; /* LTR */
+  overflow: hidden;
+  margin: 0;
+  padding: 0 2px;
+  cursor: pointer;
+  border: 1px solid #ccc;
+  border-radius: 13px;
+  background-color: #fff;
+  background-attachment: scroll;
+}
+[dir="rtl"] .contextual .trigger {
+  right: auto;
+  left: 6px;
+  float: left;
+}
+.contextual.open .trigger {
+  z-index: 2;
+  border: 1px solid #ccc;
+  border-bottom-color: transparent;
+  border-radius: 13px 13px 0 0;
+  box-shadow: none;
+}
+
+/**
+ * Contextual links.
+ *
+ * The following selectors are heavy to discourage theme overriding.
+ */
+.contextual-region .contextual .contextual-links {
+  position: relative;
+  top: -1px;
+  right: 6px; /* LTR */
+  float: right; /* LTR */
+  clear: both;
+  margin: 0;
+  padding: 0.25em 0;
+  text-align: left; /* LTR */
+  white-space: nowrap;
+  border: 1px solid #ccc;
+  border-radius: 4px 0 4px 4px; /* LTR */
+  background-color: #fff;
+}
+[dir="rtl"] .contextual-region .contextual .contextual-links {
+  right: auto;
+  left: 6px;
+  float: left;
+  text-align: right;
+  border-radius: 0 4px 4px 4px;
+}
+.contextual-region .contextual .contextual-links li {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+  list-style-image: none;
+  border: none;
+  background-color: #fff;
+  line-height: 100%;
+}
+.contextual-region .contextual .contextual-links a {
+  display: block;
+  margin: 0.25em 0;
+  padding: 0.4em 0.6em;
+  color: #333;
+  background-color: #fff;
+  font-family: sans-serif;
+  font-size: small;
+  line-height: 0.8em;
+}
+.touchevents .contextual-region .contextual .contextual-links a {
+  font-size: large;
+}
+.contextual-region .contextual .contextual-links a,
+.contextual-region .contextual .contextual-links a:hover {
+  text-decoration: none;
+}
+.no-touchevents .contextual-region .contextual .contextual-links li a:hover {
+  color: #000;
+  background: #f7fcff;
+}
diff --git a/core/themes/stable9/css/contextual/contextual.toolbar.css b/core/themes/stable9/css/contextual/contextual.toolbar.css
new file mode 100644
index 0000000000..5b84c24acc
--- /dev/null
+++ b/core/themes/stable9/css/contextual/contextual.toolbar.css
@@ -0,0 +1,24 @@
+/**
+ * @file
+ * Styling for contextual module's toolbar tab.
+ */
+
+/* Tab appearance. */
+.toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab {
+  float: right; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab {
+  float: left;
+}
+.toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item {
+  margin: 0;
+}
+.toolbar .toolbar-bar .contextual-toolbar-tab .toolbar-item.is-active {
+  background-image: -webkit-linear-gradient(rgb(78, 159, 234) 0%, rgb(69, 132, 221) 100%);
+  background-image: linear-gradient(rgb(78, 159, 234) 0%, rgb(69, 132, 221) 100%);
+}
+
+/* @todo get rid of this declaration by making toolbar.module's CSS less specific */
+.toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab.hidden {
+  display: none;
+}
diff --git a/core/themes/stable9/css/dblog/dblog.module.css b/core/themes/stable9/css/dblog/dblog.module.css
new file mode 100644
index 0000000000..3c72b5ea02
--- /dev/null
+++ b/core/themes/stable9/css/dblog/dblog.module.css
@@ -0,0 +1,37 @@
+/**
+ * @file
+ * Admin styles for the Database Logging module.
+ */
+.dblog-filter-form .form-item-type,
+.dblog-filter-form .form-item-severity {
+  display: inline-block;
+  max-width: 30%;
+  margin: 0.1em 0.9em 0.1em 0.1em; /* LTR */
+}
+[dir="rtl"] .dblog-filter-form .form-item-type,
+[dir="rtl"] .dblog-filter-form .form-item-severity {
+  margin: 0.1em 0.1em 0.1em 0.9em;
+}
+.dblog-filter-form .form-actions {
+  display: inline-block;
+  padding: 3ex 0 0;
+  vertical-align: top;
+}
+.admin-dblog .icon,
+.admin-dblog .dblog-warning .icon,
+.admin-dblog .dblog-error .icon,
+.admin-dblog .dblog-critical .icon,
+.admin-dblog .dblog-alert .icon,
+.admin-dblog .dblog-emergency .icon {
+  width: 16px;
+  background: no-repeat center;
+}
+.admin-dblog .dblog-warning .icon {
+  background-image: url(../../images/core/icons/e29700/warning.svg);
+}
+.admin-dblog .dblog-error .icon,
+.admin-dblog .dblog-critical .icon,
+.admin-dblog .dblog-alert .icon,
+.admin-dblog .dblog-emergency .icon {
+  background-image: url(../../images/core/icons/e32700/error.svg);
+}
diff --git a/core/themes/stable9/css/field_ui/field_ui.admin.css b/core/themes/stable9/css/field_ui/field_ui.admin.css
new file mode 100644
index 0000000000..f1716491c4
--- /dev/null
+++ b/core/themes/stable9/css/field_ui/field_ui.admin.css
@@ -0,0 +1,53 @@
+/**
+ * @file
+ * Stylesheet for the Field UI module.
+ */
+
+/* 'Manage fields' and 'Manage display' overviews */
+.field-ui-overview .region-title td {
+  font-weight: bold;
+}
+.field-ui-overview .region-message td {
+  font-style: italic;
+}
+
+/* 'Manage form display' and 'Manage display' overview */
+.field-ui-overview .field-plugin-summary-cell {
+  line-height: 1em;
+}
+.field-ui-overview .field-plugin-summary {
+  float: left; /* LTR */
+  font-size: 0.9em;
+}
+[dir="rtl"] .field-ui-overview .field-plugin-summary {
+  float: right;
+}
+.field-ui-overview .field-plugin-summary-cell .warning {
+  display: block;
+  float: left; /* LTR */
+  margin-right: 0.5em;
+}
+[dir="rtl"] .field-ui-overview .field-plugin-summary-cell .warning {
+  float: right;
+}
+.field-ui-overview .field-plugin-settings-edit-wrapper {
+  float: right; /* LTR */
+}
+[dir="rtl"] .field-ui-overview .field-plugin-settings-edit-wrapper {
+  float: left;
+}
+.field-ui-overview .field-plugin-settings-edit {
+  float: right; /* LTR */
+}
+[dir="rtl"] .field-ui-overview .field-plugin-settings-edit {
+  float: left;
+}
+.field-ui-overview .field-plugin-settings-editing td {
+  vertical-align: top;
+}
+.field-ui-overview .field-plugin-settings-editing .field-plugin-type {
+  display: none;
+}
+.field-ui-overview .field-plugin-settings-edit-form .plugin-name {
+  font-weight: bold;
+}
diff --git a/core/themes/stable9/css/filter/filter.caption.css b/core/themes/stable9/css/filter/filter.caption.css
new file mode 100644
index 0000000000..327b733030
--- /dev/null
+++ b/core/themes/stable9/css/filter/filter.caption.css
@@ -0,0 +1,30 @@
+/**
+ * @file
+ * Caption filter: default styling for displaying image captions.
+ */
+
+/**
+ * Essentials, based on http://stackoverflow.com/a/13363408.
+ */
+.caption {
+  display: table;
+}
+.caption > * {
+  display: block;
+  max-width: 100%;
+}
+.caption > figcaption {
+  display: table-caption;
+  max-width: none;
+  caption-side: bottom;
+}
+
+/**
+ * While editing and whenever the caption is empty, show a placeholder.
+ *
+ * Based on http://codepen.io/flesler/pen/AEIFc.
+ */
+.caption > figcaption[contenteditable=true]:empty:before {
+  content: attr(data-placeholder);
+  font-style: italic;
+}
diff --git a/core/themes/stable9/css/image/editors/image.css b/core/themes/stable9/css/image/editors/image.css
new file mode 100644
index 0000000000..f9733d2834
--- /dev/null
+++ b/core/themes/stable9/css/image/editors/image.css
@@ -0,0 +1,52 @@
+/**
+ * @file
+ * Functional styles for the Image module's in-place editor.
+ */
+
+/**
+ * A minimum width/height is required so that users can drag and drop files
+ * onto small images.
+ */
+.quickedit-image-element {
+  min-width: 200px;
+  min-height: 200px;
+}
+
+.quickedit-image-dropzone {
+  position: absolute;
+  top: 0;
+  left: 0;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  width: 100%;
+  height: 100%;
+}
+
+.quickedit-image-icon {
+  display: block;
+  width: 50px;
+  height: 50px;
+  background-repeat: no-repeat;
+  background-size: cover;
+}
+
+.quickedit-image-field-info {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+}
+
+.quickedit-image-text {
+  display: block;
+}
+
+/**
+ * If we do not prevent pointer-events for child elements, our drag+drop events
+ * will not fire properly. This can lead to unintentional redirects if a file
+ * is dropped on a child element when a user intended to upload it.
+ */
+.quickedit-image-dropzone * {
+  pointer-events: none;
+}
diff --git a/core/themes/stable9/css/image/editors/image.theme.css b/core/themes/stable9/css/image/editors/image.theme.css
new file mode 100644
index 0000000000..eab3b947bd
--- /dev/null
+++ b/core/themes/stable9/css/image/editors/image.theme.css
@@ -0,0 +1,100 @@
+/**
+ * @file
+ * Theme styles for the Image module's in-place editor.
+ */
+
+.quickedit-image-dropzone {
+  transition: background 0.2s;
+  background: rgba(116, 183, 255, 0.8);
+}
+
+.quickedit-image-icon {
+  margin: 0 0 10px 0;
+  transition: margin 0.5s;
+}
+
+.quickedit-image-dropzone.hover {
+  background: rgba(116, 183, 255, 0.9);
+}
+
+.quickedit-image-dropzone.error {
+  background: rgba(255, 52, 27, 0.81);
+}
+
+.quickedit-image-dropzone.upload .quickedit-image-icon {
+  background-image: url("../../../images/image/upload.svg");
+}
+
+.quickedit-image-dropzone.error .quickedit-image-icon {
+  background-image: url("../../../images/image/error.svg");
+}
+
+.quickedit-image-dropzone.loading .quickedit-image-icon {
+  margin: -10px 0 20px 0;
+}
+
+.quickedit-image-dropzone.loading .quickedit-image-icon::after {
+  display: block;
+  width: 60px;
+  height: 60px;
+  margin-top: -5px;
+  margin-left: -10px;
+  content: "";
+  animation-name: quickedit-image-spin;
+  animation-duration: 2s;
+  animation-timing-function: linear;
+  animation-iteration-count: infinite;
+  border-width: 5px;
+  border-style: solid;
+  border-color: white transparent transparent transparent;
+  border-radius: 35px;
+}
+
+@keyframes quickedit-image-spin {
+  0% { transform: rotate(0deg); }
+  50% { transform: rotate(180deg); }
+  100% { transform: rotate(360deg); }
+}
+
+.quickedit-image-text {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  text-align: center;
+  color: white;
+  font-family: "Droid sans", "Lucida Grande", sans-serif;
+  font-size: 16px;
+}
+
+.quickedit-image-field-info {
+  padding: 5px;
+  border-top: 1px solid #c5c5c5;
+  background: rgba(0, 0, 0, 0.05);
+}
+
+.quickedit-image-field-info div {
+  margin-right: 10px; /* LTR */
+}
+
+.quickedit-image-field-info div:last-child {
+  margin-right: 0; /* LTR */
+}
+
+[dir="rtl"] .quickedit-image-field-info div {
+  margin-right: 0;
+  margin-left: 10px;
+}
+
+[dir="rtl"] .quickedit-image-field-info div:last-child {
+  margin-left: 0;
+}
+
+.quickedit-image-errors .messages__wrapper {
+  margin: 0;
+  padding: 0;
+}
+
+.quickedit-image-errors .messages--error {
+  box-shadow: none;
+}
diff --git a/core/themes/stable9/css/image/image.admin.css b/core/themes/stable9/css/image/image.admin.css
new file mode 100644
index 0000000000..40e06151c0
--- /dev/null
+++ b/core/themes/stable9/css/image/image.admin.css
@@ -0,0 +1,74 @@
+
+/**
+ * Image style configuration pages.
+ */
+.image-style-new,
+.image-style-new div {
+  display: inline;
+}
+.image-style-preview .preview-image-wrapper {
+  top: 50%;
+  float: left;
+  width: 48%;
+  padding-bottom: 2em;
+  text-align: center;
+}
+.image-style-preview .preview-image {
+  position: relative;
+  margin: auto;
+}
+.image-style-preview .preview-image .width {
+  position: absolute;
+  bottom: -6px;
+  left: -1px;
+  box-sizing: content-box;
+  height: 2px;
+  border: 1px solid #666;
+  border-top: none;
+}
+.image-style-preview .preview-image .width span {
+  position: relative;
+  top: 4px;
+}
+.image-style-preview .preview-image .height {
+  position: absolute;
+  top: -1px;
+  right: -6px;
+  box-sizing: content-box;
+  width: 2px;
+  border: 1px solid #666;
+  border-left: none;
+}
+.image-style-preview .preview-image .height span {
+  position: absolute;
+  top: 50%;
+  left: 10px;
+  height: 2em;
+  margin-top: -1em;
+}
+
+/**
+ * Improve image style preview on narrow viewports.
+ */
+@media screen and (max-width: 470px) {
+  .image-style-preview .preview-image-wrapper {
+    float: none;
+    margin-bottom: 1em;
+  }
+  .image-style-preview .preview-image-wrapper:last-child {
+    margin-bottom: 0;
+  }
+}
+
+/**
+ * Image anchor element.
+ */
+.image-anchor {
+  width: auto;
+}
+.image-anchor tr {
+  background: none;
+}
+.image-anchor td {
+  border: 1px solid #ccc;
+}
diff --git a/core/themes/stable9/css/language/language.admin.css b/core/themes/stable9/css/language/language.admin.css
new file mode 100644
index 0000000000..910279ee3c
--- /dev/null
+++ b/core/themes/stable9/css/language/language.admin.css
@@ -0,0 +1,11 @@
+/**
+ * @file
+ * Styles for the content language administration page.
+ */
+
+#language-content-settings-form table .bundle {
+  width: 25%;
+}
+#language-content-settings-form table .operations {
+  width: 75%;
+}
diff --git a/core/themes/stable9/css/layout_builder/layout-builder.css b/core/themes/stable9/css/layout_builder/layout-builder.css
new file mode 100644
index 0000000000..8c8a7b7ef8
--- /dev/null
+++ b/core/themes/stable9/css/layout_builder/layout-builder.css
@@ -0,0 +1,222 @@
+.layout-builder {
+  padding: 1.5em 1.5em 0.5em;
+  border: 3px solid #2f91da;
+  background-color: #fff;
+}
+
+.layout-builder__add-section {
+  width: 100%;
+  margin-bottom: 1.5em;
+  padding: 1.5em 0;
+  text-align: center;
+  outline: 2px dashed #979797;
+  background-color: #f7f7f7;
+}
+
+.layout-builder__link--add {
+  padding-left: 1.3em; /* LTR */
+  color: #686868;
+  border-bottom: none;
+  background: url(../../images/core/icons/787878/plus.svg) transparent center left / 1em no-repeat; /* LTR */
+}
+
+[dir="rtl"] .layout-builder__link--add {
+  padding-right: 1.3em;
+  padding-left: 0;
+  background-position-x: right;
+}
+
+.layout-builder__link--add:hover,
+.layout-builder__link--add:active,
+.layout-builder__link--add:focus {
+  color: #000;
+  border-bottom-style: none;
+}
+
+.layout-builder__section {
+  margin-bottom: 1.5em;
+}
+
+.layout-builder__section .ui-sortable-helper {
+  outline: 2px solid #f7f7f7;
+  background-color: #fff;
+}
+
+.layout-builder__section .ui-state-drop {
+  margin: 20px;
+  padding: 30px;
+  outline: 2px dashed #fedb60;
+  background-color: #ffd;
+}
+
+.layout-builder__region {
+  outline: 2px dashed #2f91da;
+}
+
+.layout-builder__add-block {
+  padding: 1.5em 0;
+  text-align: center;
+  background-color: #eff6fc;
+}
+
+.layout-builder__link--remove {
+  position: relative;
+  z-index: 2;
+  display: inline-block;
+  box-sizing: border-box;
+  width: 26px;
+  height: 26px;
+  margin-right: 6px; /* LTR */
+  margin-left: -10px; /* LTR */
+  padding: 0;
+  white-space: nowrap;
+  text-indent: -9999px;
+  border: 1px solid #ccc;
+  border-radius: 26px;
+  background: url(../../images/core/icons/bebebe/ex.svg) #fff center center / 16px 16px no-repeat;
+  font-size: 1rem;
+}
+
+[dir="rtl"] .layout-builder__link--remove {
+  margin-right: -10px;
+  margin-left: 6px;
+}
+
+.layout-builder__link--remove:hover {
+  background-image: url(../../images/core/icons/787878/ex.svg);
+}
+
+.layout-builder-block {
+  padding: 1.5em;
+  cursor: move;
+  background-color: #fff;
+}
+
+.layout-builder-block [tabindex="-1"] {
+  pointer-events: none;
+}
+
+.layout-builder__message .messages {
+  background-repeat: no-repeat;
+}
+.layout-builder__message--defaults .messages {
+  background-image: url("../../images/core/icons/73b355/globe.svg");
+}
+.layout-builder__message--overrides .messages {
+  background-image: url("../../images/core/icons/73b355/location.svg");
+}
+
+.layout-builder-block__content-preview-placeholder-label {
+  margin: 0;
+  text-align: center;
+  font-size: 1.429em;
+  line-height: 1.4;
+}
+
+.layout-builder--content-preview-disabled .layout-builder-block {
+  margin: 0;
+  border-bottom: 2px dashed #979797;
+}
+
+#drupal-off-canvas .layout-selection li {
+  display: block;
+  padding-bottom: 1em;
+}
+
+#drupal-off-canvas .layout-selection li a {
+  display: block;
+  padding-top: 0.55em;
+}
+
+#drupal-off-canvas .inline-block-create-button {
+  display: block;
+  padding: 24px;
+  padding-left: 44px;
+  color: #eee;
+  border-bottom: 1px solid #333;
+  background: url(../../images/core/icons/bebebe/plus.svg) transparent 16px no-repeat;
+  font-size: 16px;
+}
+
+#drupal-off-canvas .inline-block-create-button,
+#drupal-off-canvas .inline-block-list__item {
+  margin: 0 -20px;
+  background-color: #444;
+}
+
+#drupal-off-canvas .inline-block-create-button:hover,
+#drupal-off-canvas .inline-block-list__item:hover {
+  background-color: #333;
+}
+
+#drupal-off-canvas .inline-block-list {
+  margin-bottom: 15px;
+}
+
+#drupal-off-canvas .inline-block-list__item {
+  display: block;
+  padding: 15px 0 15px 25px;
+}
+
+.layout-builder__add-section.is-layout-builder-highlighted {
+  margin-bottom: calc(1.5em - 8px);
+  outline: none;
+}
+.layout-builder__layout.is-layout-builder-highlighted,
+.layout-builder-block.is-layout-builder-highlighted,
+.layout-builder__add-block.is-layout-builder-highlighted {
+  position: relative;
+  z-index: 1;
+  margin: -4px -2px;
+}
+.layout-builder__add-block.is-layout-builder-highlighted,
+.layout-builder__add-section.is-layout-builder-highlighted,
+.layout-builder__layout.is-layout-builder-highlighted:before,
+.layout-builder__layout.is-layout-builder-highlighted,
+.layout-builder-block.is-layout-builder-highlighted {
+  border: 4px solid #000;
+}
+
+/* Highlight the active block in the Move Block dialog. */
+#drupal-off-canvas .layout-builder-components-table__block-label--current {
+  padding-left: 17px;
+  border-left: solid 5px;
+}
+
+/**
+ * @todo remove in https://www.drupal.org/project/drupal/issues/3042127
+ *   This rule ensures the row weight dropdowns in the Move Block dialog
+ *   maintain the background color of their container when they are hovered
+ *   over or are inside the active row.
+ */
+#drupal-off-canvas .layout-builder-components-table__row .form-item {
+  background-color: transparent;
+}
+
+.layout-builder__region-label,
+.layout-builder__section-label {
+  display: none;
+}
+
+.layout-builder--move-blocks-active .layout-builder__region-label {
+  display: block;
+}
+
+.layout-builder--move-blocks-active .layout-builder__section-label {
+  display: inline;
+}
+
+.layout__region-info {
+  padding: 0.5em;
+  text-align: center;
+  border-bottom: 2px dashed #979797;
+}
+
+/**
+ * Remove "You have unsaved changes" warning because Layout Builder always has
+ * unsaved changes until "Save layout" is submitted.
+ * @todo create issue for todo.
+ */
+.layout-builder-components-table .tabledrag-changed-warning {
+  display: none !important;
+}
diff --git a/core/themes/stable9/css/locale/locale.admin.css b/core/themes/stable9/css/locale/locale.admin.css
new file mode 100644
index 0000000000..a1f4b9da2b
--- /dev/null
+++ b/core/themes/stable9/css/locale/locale.admin.css
@@ -0,0 +1,134 @@
+.locale-translate-filter-form .details-wrapper {
+  overflow: hidden;
+}
+.locale-translate-filter-form .form-item-langcode,
+.locale-translate-filter-form .form-item-translation,
+.locale-translate-filter-form .form-item-customized {
+  float: left; /* LTR */
+  /**
+   * In Opera 9, DOM elements with the property of "overflow: auto"
+   * will partially hide its contents with unnecessary scrollbars when
+   * its immediate child is floated without an explicit width set.
+   */
+  width: 15em;
+  margin-right: 1em; /* LTR */
+  margin-bottom: 0;
+}
+[dir="rtl"] .locale-translate-filter-form .form-item-langcode,
+[dir="rtl"] .locale-translate-filter-form .form-item-translation,
+[dir="rtl"] .locale-translate-filter-form .form-item-customized {
+  float: right;
+  margin-right: 0;
+  margin-left: 1em;
+}
+.locale-translate-filter-form .form-type-select select {
+  width: 100%;
+}
+.locale-translate-filter-form .form-actions {
+  float: left; /* LTR */
+  padding: 3.8ex 0 0 0; /* LTR */
+}
+[dir="rtl"] .locale-translate-filter-form .form-actions {
+  float: right;
+  padding: 3.5ex 0 0 0;
+}
+.locale-translate-edit-form th {
+  width: 50%;
+  table-layout: fixed;
+}
+.locale-translate-edit-form td {
+  vertical-align: top;
+}
+
+.locale-translate-edit-form tr.changed {
+  background: #ffb;
+}
+
+.locale-translate-edit-form tr .form-type-item .ajax-changed {
+  position: absolute;
+}
+
+.locale-translate-filter-form .form-wrapper {
+  margin-bottom: 0;
+}
+
+.locale-translate-edit-form table.changed {
+  margin-top: 0;
+}
+
+/**
+ * Available translation updates page.
+ */
+#locale-translation-status-form table {
+  table-layout: fixed;
+}
+#locale-translation-status-form th.select-all {
+  width: 4%;
+}
+#locale-translation-status-form th.title {
+  width: 25%;
+}
+#locale-translation-status-form td {
+  vertical-align: top;
+}
+.locale-translation-update__wrapper {
+  margin-left: -12px;
+  padding-left: 12px;
+  background: transparent url(../../images/core/menu-collapsed.png) left 0.6em no-repeat;
+}
+.expanded .locale-translation-update__wrapper {
+  background: transparent url(../../images/core/menu-expanded.png) left 0.6em no-repeat;
+}
+#locale-translation-status-form .description {
+  cursor: pointer;
+}
+.locale-translation-update__wrapper {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  color: #5c5c5b;
+  line-height: 20px;
+}
+.expanded .locale-translation-update__wrapper {
+  overflow: visible;
+  height: auto;
+  white-space: normal;
+}
+.expanded .locale-translation-update__message {
+  -webkit-hyphens: auto;
+  -moz-hyphens: auto;
+  -ms-hyphens: auto;
+  hyphens: auto;
+}
+.js .locale-translation-update__wrapper {
+  height: 20px;
+}
+.expanded .locale-translation-update__wrapper {
+  overflow: visible;
+  height: auto;
+  white-space: normal;
+}
+.locale-translation-update__details {
+  max-width: 490px;
+  padding: 5px 0;
+  white-space: normal;
+  color: #666;
+  font-size: 0.9em;
+}
+.locale-translation-update__details ul {
+  margin: 0;
+  padding: 0;
+}
+.locale-translation-update__details li {
+  margin: 0 0 0.25em 1.5em;
+  padding: 0;
+}
+
+@media screen and (max-width: 40em) {
+  #locale-translation-status-form th.title {
+    width: 20%;
+  }
+  #locale-translation-status-form th.status {
+    width: 40%;
+  }
+}
diff --git a/core/themes/stable9/css/media/filter.caption.css b/core/themes/stable9/css/media/filter.caption.css
new file mode 100644
index 0000000000..a92505c308
--- /dev/null
+++ b/core/themes/stable9/css/media/filter.caption.css
@@ -0,0 +1,10 @@
+/**
+ * @file
+ * Caption filter: default styling for displaying Media Embed captions.
+ */
+
+.caption .media .field,
+.caption .media .field * {
+  float: none;
+  margin: unset;
+}
diff --git a/core/themes/stable9/css/media/oembed.formatter.css b/core/themes/stable9/css/media/oembed.formatter.css
new file mode 100644
index 0000000000..caf220e444
--- /dev/null
+++ b/core/themes/stable9/css/media/oembed.formatter.css
@@ -0,0 +1,3 @@
+.media-oembed-content {
+  max-width: 100%;
+}
diff --git a/core/themes/stable9/css/media/oembed.frame.css b/core/themes/stable9/css/media/oembed.frame.css
new file mode 100644
index 0000000000..c0c283b399
--- /dev/null
+++ b/core/themes/stable9/css/media/oembed.frame.css
@@ -0,0 +1,8 @@
+iframe {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  margin: 0;
+}
diff --git a/core/themes/stable9/css/media/plugins/drupalmedia/ckeditor.drupalmedia.css b/core/themes/stable9/css/media/plugins/drupalmedia/ckeditor.drupalmedia.css
new file mode 100644
index 0000000000..82923ff63e
--- /dev/null
+++ b/core/themes/stable9/css/media/plugins/drupalmedia/ckeditor.drupalmedia.css
@@ -0,0 +1,41 @@
+/**
+ * @file
+ * Media embed: overrides to make focus styles and alignment work in CKEditor.
+ */
+
+/**
+ * Allow the drupal-media element's width to collapse to the size of its
+ * contents so that the outline has no extra white space (margin). This
+ * emulates the image2 plugin's styles inherited by the drupallink CKEditor
+ * plugin.
+ */
+drupal-media {
+  display: inline-block;
+}
+
+/**
+ * For center alignment, take advantage of drupal-media's inline-block
+ * display and center it as if it were text.
+ */
+.cke_widget_drupalmedia.align-center {
+  text-align: center;
+}
+
+/**
+ * Fix positioning without delete button. Can be removed with this issue:
+ * @see https://www.drupal.org/project/drupal/issues/3074859
+ */
+drupal-media .media-library-item__edit {
+  right: 10px;
+}
+
+/**
+ * Allow alignment to display in CKEditor.
+ */
+drupal-media[data-align=left],
+drupal-media[data-align=right] {
+  display: inline;
+}
+drupal-media[data-align=center] {
+  display: flex;
+}
diff --git a/core/themes/stable9/css/menu_ui/menu_ui.admin.css b/core/themes/stable9/css/menu_ui/menu_ui.admin.css
new file mode 100644
index 0000000000..efbfe7515e
--- /dev/null
+++ b/core/themes/stable9/css/menu_ui/menu_ui.admin.css
@@ -0,0 +1,6 @@
+.menu-enabled {
+  width: 70px;
+}
+.menu-label {
+  font-weight: bold;
+}
diff --git a/core/themes/stable9/css/migrate_drupal_ui/components/upgrade-analysis-report-tables.css b/core/themes/stable9/css/migrate_drupal_ui/components/upgrade-analysis-report-tables.css
new file mode 100644
index 0000000000..8126371258
--- /dev/null
+++ b/core/themes/stable9/css/migrate_drupal_ui/components/upgrade-analysis-report-tables.css
@@ -0,0 +1,23 @@
+/**
+ * @file
+ * Styles for the upgrade analysis report tables.
+ */
+.upgrade-analysis-report__status-icon:before {
+  display: inline-block;
+  width: 32px;
+  height: 14px;
+  content: "";
+  background-repeat: no-repeat;
+  background-position: left center;
+  background-size: 16px;
+}
+
+.upgrade-analysis-report__status-icon--warning:before {
+  background-image: url(../../../images/core/icons/e29700/warning.svg);
+}
+.upgrade-analysis-report__status-icon--checked:before {
+  background-image: url(../../../images/core/icons/73b355/check.svg);
+}
+.upgrade-analysis-report__status-icon--error:before {
+  background-image: url(../../../images/core/icons/e32700/error.svg);
+}
diff --git a/core/themes/stable9/css/node/node.admin.css b/core/themes/stable9/css/node/node.admin.css
new file mode 100644
index 0000000000..101a38d539
--- /dev/null
+++ b/core/themes/stable9/css/node/node.admin.css
@@ -0,0 +1,11 @@
+/**
+ * @file
+ * Styles for administration pages.
+ */
+
+/**
+ * Revisions overview screen.
+ */
+.revision-current {
+  background: #ffc;
+}
diff --git a/core/themes/stable9/css/node/node.module.css b/core/themes/stable9/css/node/node.module.css
new file mode 100644
index 0000000000..c564633691
--- /dev/null
+++ b/core/themes/stable9/css/node/node.module.css
@@ -0,0 +1,76 @@
+/**
+ * @file
+ * Styles for administration pages.
+ */
+
+/**
+ * Node add/edit form layout
+ */
+
+/* Narrow screens */
+.layout-region {
+  box-sizing: border-box;
+}
+
+/* Wide screens */
+@media
+  screen and (min-width: 780px),
+  (orientation: landscape) and (min-device-height: 780px) {
+
+  .layout-region-node-main,
+  .layout-region-node-footer {
+    float: left; /* LTR */
+    box-sizing: border-box;
+    width: 65%;
+    padding-right: 2em; /* LTR */
+  }
+
+  [dir="rtl"] .layout-region-node-main,
+  [dir="rtl"] .layout-region-node-footer {
+    float: right;
+    padding-right: 0;
+    padding-left: 2em;
+  }
+
+  .layout-region-node-secondary {
+    float: right; /* LTR */
+    width: 35%;
+  }
+
+  [dir="rtl"] .layout-region-node-secondary {
+    float: left;
+  }
+
+  /* @todo File an issue to add a standard class to all text-like inputs */
+  .layout-region-node-secondary .form-autocomplete,
+  .layout-region-node-secondary .form-text,
+  .layout-region-node-secondary .form-tel,
+  .layout-region-node-secondary .form-email,
+  .layout-region-node-secondary .form-url,
+  .layout-region-node-secondary .form-search,
+  .layout-region-node-secondary .form-number,
+  .layout-region-node-secondary .form-color,
+  .layout-region-node-secondary textarea {
+    box-sizing: border-box;
+    width: 100%;
+    max-width: 100%;
+  }
+}
+
+/**
+ * The vertical toolbar mode gets triggered for narrow screens, which throws off
+ * the intent of media queries written for the viewport width. When the vertical
+ * toolbar is on, we need to suppress layout for the original media width + the
+ * toolbar width (240px). In this case, 240px + 780px.
+ */
+@media
+  screen and (max-width: 1020px) {
+
+  .toolbar-vertical.toolbar-tray-open .layout-region-node-main,
+  .toolbar-vertical.toolbar-tray-open .layout-region-node-footer,
+  .toolbar-vertical.toolbar-tray-open .layout-region-node-secondary {
+    float: none;
+    width: auto;
+    padding-right: 0;
+  }
+}
diff --git a/core/themes/stable9/css/node/node.preview.css b/core/themes/stable9/css/node/node.preview.css
new file mode 100644
index 0000000000..15205ab92d
--- /dev/null
+++ b/core/themes/stable9/css/node/node.preview.css
@@ -0,0 +1,22 @@
+/**
+ * @file
+ * Styles for node preview page.
+ */
+
+.node-preview-container {
+  position: fixed;
+  z-index: 499;
+  box-sizing: border-box;
+  width: 100%;
+  padding: 10px;
+}
+
+@media only screen and (min-width: 36em) {
+  .node-preview-container .form-type-select {
+    margin-left: 25%; /* LTR */
+  }
+  [dir="rtl"] .node-preview-container .form-type-select {
+    margin-right: 25%;
+    margin-left: 0;
+  }
+}
diff --git a/core/themes/stable9/css/quickedit/quickedit.icons.theme.css b/core/themes/stable9/css/quickedit/quickedit.icons.theme.css
new file mode 100644
index 0000000000..4148c17827
--- /dev/null
+++ b/core/themes/stable9/css/quickedit/quickedit.icons.theme.css
@@ -0,0 +1,74 @@
+/**
+ * @file
+ * Icons for Quick Edit module.
+ */
+
+.quickedit .icon {
+  position: relative;
+  min-width: 2.5em;
+  min-height: 1em;
+}
+.quickedit .icon.icon-only {
+  text-indent: -9999px;
+}
+.quickedit .icon.icon-end {
+  padding-right: 2.5em; /* LTR */
+}
+[dir="rtl"] .quickedit .icon.icon-end {
+  padding-right: 0;
+  padding-left: 2.5em;
+}
+.quickedit .icon:before {
+  position: absolute;
+  top: 0;
+  left: 0; /* LTR */
+  display: block;
+  width: 100%;
+  height: 100%;
+  content: "";
+  background-color: transparent;
+  background-repeat: no-repeat;
+  background-attachment: scroll;
+  background-position: center center;
+}
+[dir="rtl"] .quickedit .icon:before {
+  right: 0;
+  left: auto;
+}
+.quickedit .icon-end:before {
+  right: 0.5em; /* LTR */
+  left: auto; /* LTR */
+  width: 18px;
+}
+[dir="rtl"] .quickedit .icon-end:before {
+  right: auto;
+  left: 0.5em;
+}
+.quickedit button.icon {
+  font-size: 1em;
+}
+.quickedit .icon-pencil {
+  margin-left: 0.5em;
+  padding-left: 1.5em;
+}
+
+/**
+ * Images.
+ */
+.quickedit .icon-close:before {
+  top: 10px;
+  height: 12px;
+  background-image: url(../../images/core/icons/787878/ex.svg);
+}
+.quickedit .icon-close:hover:before,
+.quickedit .icon-close:active:before {
+  background-image: url(../../images/core/icons/000000/ex.svg);
+}
+.quickedit .icon-throbber:before {
+  background-image: url(../../images/quickedit/icon-throbber.gif);
+}
+.quickedit .icon-pencil:before {
+  background-image: url(../../images/core/icons/5181c6/pencil.svg);
+  background-position: left center;
+  background-size: 1.3em;
+}
diff --git a/core/themes/stable9/css/quickedit/quickedit.module.css b/core/themes/stable9/css/quickedit/quickedit.module.css
new file mode 100644
index 0000000000..4c55a9a4f7
--- /dev/null
+++ b/core/themes/stable9/css/quickedit/quickedit.module.css
@@ -0,0 +1,122 @@
+/**
+ * @file
+ * Generic base styles for Quick Edit module.
+ *
+ * Note: every class is prefixed with "quickedit-" to prevent collisions with
+ * modules or themes. In Edit module-specific DOM subtrees, this is not
+ * necessary.
+ */
+
+/**
+ * Editable.
+ */
+.quickedit-editable {
+  position: relative;
+  z-index: 98;
+  cursor: pointer;
+}
+.quickedit-editable:focus {
+  outline: none;
+}
+
+/**
+ * Highlighted (hovered) editable.
+ */
+.quickedit-editable.quickedit-highlighted {
+  z-index: 99;
+}
+.quickedit-validation-errors > .messages {
+  margin-right: 0;
+  margin-left: 0;
+}
+.quickedit-validation-errors > .messages > ul {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+
+/**
+ * In-place editors that don't use a popup.
+ */
+.quickedit-validation-errors {
+  position: relative;
+  z-index: 300;
+}
+.quickedit-validation-errors .messages.error {
+  position: absolute;
+  top: 6px;
+  left: -5px; /* LTR */
+  margin: 0;
+  border: none;
+}
+[dir="rtl"] .quickedit-validation-errors .messages.error {
+  right: -5px;
+  left: auto;
+}
+
+/**
+ * Styling specific to the 'form' in-place editor.
+ */
+#quickedit_backstage {
+  display: none;
+}
+.quickedit-form {
+  position: absolute;
+  z-index: 300;
+  max-width: 35em;
+}
+.quickedit-form .placeholder {
+  min-height: 22px;
+}
+
+/**
+ * Default form styling overrides.
+ */
+.quickedit-form .form-wrapper .form-wrapper {
+  margin: inherit;
+}
+.quickedit-form .form-actions {
+  display: none;
+}
+.quickedit-form input {
+  max-width: 100%;
+}
+
+/**
+ * Entity toolbar.
+ */
+.quickedit-toolbar-container {
+  position: absolute;
+  z-index: 100;
+  width: 320px;
+  max-width: 320px;
+}
+.quickedit-toolbar-container > .quickedit-toolbar-pointer,
+.quickedit-toolbar-container > .quickedit-toolbar-lining {
+  display: none;
+}
+.quickedit-form-container {
+  position: relative;
+  z-index: 100;
+  margin: 0;
+  padding: 0;
+  vertical-align: baseline;
+  border: 0;
+}
+.quickedit-toolgroup.ops {
+  float: right; /* LTR */
+}
+[dir="rtl"] .quickedit-toolgroup.ops {
+  float: left;
+}
+.quickedit-toolbar-label {
+  overflow: hidden;
+}
+#quickedit-toolbar-fence {
+  position: fixed;
+  z-index: -1;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+}
diff --git a/core/themes/stable9/css/quickedit/quickedit.theme.css b/core/themes/stable9/css/quickedit/quickedit.theme.css
new file mode 100644
index 0000000000..cf8f60c561
--- /dev/null
+++ b/core/themes/stable9/css/quickedit/quickedit.theme.css
@@ -0,0 +1,254 @@
+/**
+ * @file
+ * Styling for Quick Edit module.
+ */
+
+/**
+ * Editable.
+ */
+.quickedit-field.quickedit-editable,
+.quickedit-field .quickedit-editable {
+  box-shadow: 0 0 0 2px #74b7ff;
+}
+
+/**
+ * Highlighted (hovered) editable.
+ */
+.quickedit-field.quickedit-highlighted,
+.quickedit-form.quickedit-highlighted,
+.quickedit-field .quickedit-highlighted {
+  box-shadow: 0 0 0 1px #74b7ff, 0 0 0 2px #007fff;
+}
+.quickedit-field.quickedit-changed,
+.quickedit-form.quickedit-changed,
+.quickedit-field .quickedit-changed {
+  box-shadow: 0 0 0 1px #fec17e, 0 0 0 2px #f7870a;
+}
+.quickedit-editing.quickedit-validation-error,
+.quickedit-form.quickedit-validation-error {
+  box-shadow: 0 0 0 1px #ee8b74, 0 0 0 2px #fa2209;
+}
+.quickedit-editing.quickedit-editor-is-popup {
+  box-shadow: none;
+}
+.quickedit-form .form-item .error {
+  border: 1px solid #eea0a0;
+}
+
+/**
+ * Default form styling overrides.
+ */
+.quickedit-form form {
+  padding: 0.5em;
+}
+.quickedit-form .form-item {
+  margin: 0;
+}
+.quickedit-form .form-wrapper {
+  margin: 0.5em;
+}
+
+/**
+ * Animations.
+ */
+.quickedit-animate-invisible {
+  opacity: 0;
+}
+.quickedit-animate-default {
+  -webkit-transition: all 0.4s ease;
+  transition: all 0.4s ease;
+}
+.quickedit-animate-slow {
+  -webkit-transition: all 0.6s ease;
+  transition: all 0.6s ease;
+}
+.quickedit-animate-delay-veryfast {
+  -webkit-transition-delay: 0.05s;
+  transition-delay: 0.05s;
+}
+.quickedit-animate-delay-fast {
+  -webkit-transition-delay: 0.2s;
+  transition-delay: 0.2s;
+}
+.quickedit-animate-disable-width {
+  -webkit-transition: width 0s;
+  transition: width 0s;
+}
+.quickedit-animate-only-visibility {
+  -webkit-transition: opacity 0.2s ease;
+  transition: opacity 0.2s ease;
+}
+
+/**
+ * In-place editors that don't use a popup.
+ */
+.quickedit-validation-errors .messages.error {
+  background-color: white;
+  box-shadow: 0 0 1px 1px red, 0 0 3px 3px rgba(153, 153, 153, 0.5);
+}
+
+/**
+ * Styling specific to the 'form' in-place editor.
+ */
+.quickedit-form {
+  background-color: white;
+  box-shadow: 0 0 30px 4px #4f4f4f;
+}
+
+/**
+ * Toolbars.
+ */
+.quickedit-toolbar-container {
+  padding-top: 7px;
+  padding-bottom: 7px;
+  -webkit-transition: all 1s;
+  transition: all 1s;
+  font-family: "Source Sans Pro", "Lucida Grande", sans-serif;
+}
+.quickedit-toolbar-container > .quickedit-toolbar-content {
+  position: relative;
+  z-index: 2;
+  box-sizing: border-box;
+  padding: 0.1667em;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+  color: black;
+  background-image: -webkit-linear-gradient(top, #fff, #e4e4e4);
+  background-image: linear-gradient(to bottom, #fff, #e4e4e4);
+}
+.quickedit-toolbar-container > .quickedit-toolbar-pointer {
+  position: absolute;
+  z-index: 1;
+  bottom: 2px;
+  left: 18px; /* LTR */
+  display: block;
+  width: 16px;
+  height: 16px;
+  -webkit-transform: rotate(45deg);
+  -ms-transform: rotate(45deg);
+  transform: rotate(45deg);
+  background-color: #e4e4e4;
+  box-shadow: 0 0 0 1px #818181, 0 0 0 4px rgba(150, 150, 150, 0.5);
+}
+[dir="rtl"] .quickedit-toolbar-container > .quickedit-toolbar-pointer {
+  right: 18px;
+  left: auto;
+}
+.quickedit-toolbar-container.quickedit-toolbar-pointer-top > .quickedit-toolbar-pointer {
+  top: 2px;
+  bottom: auto;
+}
+.quickedit-toolbar-container > .quickedit-toolbar-lining {
+  position: absolute;
+  z-index: 0;
+  top: 7px;
+  right: 0;
+  bottom: 7px;
+  left: 0;
+  display: block;
+  box-shadow: 0 0 0 1px #818181, 0 3px 0 1px rgba(150, 150, 150, 0.5);
+}
+
+.quickedit-toolbar-label {
+  overflow: hidden;
+  padding: 0.333em 0.4em;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  font-style: italic;
+}
+.quickedit-toolbar-label .field:after {
+  content: " → "; /* LTR */
+}
+
+[dir="rtl"] .quickedit-toolbar-label .field:after {
+  content: " ← ";
+}
+
+/* The toolbar; these are not necessarily visible. */
+.quickedit-toolbar {
+  font-family: "Droid sans", "Lucida Grande", sans-serif;
+}
+.quickedit-toolbar-entity {
+  padding: 0.1667em 0.2em;
+}
+
+/**
+ * Info toolgroup.
+ */
+.quickedit-toolbar-fullwidth {
+  width: 100%;
+}
+.quickedit-toolgroup.wysiwyg-floated {
+  float: right; /* LTR */
+}
+[dir="rtl"] .quickedit-toolgroup.wysiwyg-floated {
+  float: left;
+}
+.quickedit-toolgroup.wysiwyg-main {
+  clear: both;
+  width: 100%;
+  padding-left: 0; /* LTR */
+}
+[dir="rtl"] .quickedit-toolgroup.wysiwyg-main {
+  padding-right: 0;
+  padding-left: 0;
+}
+
+/**
+ * Buttons.
+ */
+.quickedit-button {
+  display: inline-block;
+  margin: 0;
+  padding: 0.345em;
+  cursor: pointer;
+  -webkit-transition: opacity 0.1s ease;
+  transition: opacity 0.1s ease;
+  opacity: 1;
+  color: #5a5a5a;
+  border: 1px solid #d2d2d2;
+  background-color: #e4e4e4;
+}
+.quickedit-button[aria-hidden="true"] {
+  visibility: hidden;
+  opacity: 0;
+}
+.quickedit-button + .quickedit-button {
+  margin-left: 0.2em; /* LTR */
+}
+[dir="rtl"] .quickedit-button + .quickedit-button {
+  margin-right: 0.25em;
+  margin-left: auto;
+}
+/* Button with icons. */
+.quickedit-button:hover,
+.quickedit-button:active {
+  color: #2e2e2e;
+  border: 1px solid #a0a0a0;
+  background-color: #c8c8c8;
+}
+.quickedit-toolbar-container .quickedit-button.action-cancel {
+  border: 1px solid transparent;
+  background-color: transparent;
+}
+.quickedit-button.action-save {
+  color: white;
+  border: 1px solid transparent;
+  background-color: #50a0e9;
+  background-image: -webkit-linear-gradient(top, #50a0e9, #4481dc);
+  background-image: linear-gradient(to bottom, #50a0e9, #4481dc);
+}
+.quickedit-button.action-save:hover,
+.quickedit-button.action-save:active {
+  border: 1px solid #a0a0a0;
+}
+.quickedit-button.action-saving,
+.quickedit-button.action-saving:hover,
+.quickedit-button.action-saving:active {
+  color: #5a5a5a;
+  border-color: #d2d2d2;
+  background-color: #e4e4e4;
+  background-image: none;
+}
diff --git a/core/themes/stable9/css/settings_tray/settings_tray.module.css b/core/themes/stable9/css/settings_tray/settings_tray.module.css
new file mode 100644
index 0000000000..75ba0474aa
--- /dev/null
+++ b/core/themes/stable9/css/settings_tray/settings_tray.module.css
@@ -0,0 +1,23 @@
+/**
+ * @file
+ * Styling for Settings Tray module.
+ */
+/*
+ * Position the edit toolbar tab.
+ * @todo Move changes into contextual module when Settings Tray is not
+ *   experimental: https://www.drupal.org/node/2784591.
+ */
+.toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab {
+  float: left;
+}
+[dir="rtl"] .toolbar .toolbar-bar .contextual-toolbar-tab.toolbar-tab {
+  float: right;
+}
+
+.dialog-off-canvas-main-canvas.js-settings-tray-edit-mode a,
+.dialog-off-canvas-main-canvas.js-settings-tray-edit-mode input {
+  pointer-events: none;
+}
+.dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .contextual-links a {
+  pointer-events: inherit;
+}
diff --git a/core/themes/stable9/css/settings_tray/settings_tray.motion.css b/core/themes/stable9/css/settings_tray/settings_tray.motion.css
new file mode 100644
index 0000000000..820f708123
--- /dev/null
+++ b/core/themes/stable9/css/settings_tray/settings_tray.motion.css
@@ -0,0 +1,19 @@
+/**
+ * @file
+ * Motion effects for Settings Tray module.
+ *
+ * Motion effects are in a separate file so that they can be easily turned off
+ * to improve performance if desired.
+ */
+
+/* Transition the edit icon in the toolbar. */
+#toolbar-bar.button.toolbar-icon.toolbar-icon.toolbar-icon-edit:before {
+  transition: all 0.7s ease;
+}
+
+/* Transition the editables on the page, their contextual links and their hover states. */
+.dialog-off-canvas-main-canvas .contextual,
+.dialog-off-canvas-main-canvas .js-settings-tray-edit-mode .settings-tray-editable,
+.dialog-off-canvas-main-canvas.js-off-canvas-dialog-open .js-settings-tray-edit-mode .settings-tray-editable {
+  transition: all 0.7s ease;
+}
diff --git a/core/themes/stable9/css/settings_tray/settings_tray.theme.css b/core/themes/stable9/css/settings_tray/settings_tray.theme.css
new file mode 100644
index 0000000000..5848a443b7
--- /dev/null
+++ b/core/themes/stable9/css/settings_tray/settings_tray.theme.css
@@ -0,0 +1,70 @@
+/**
+ * @file
+ * Visual styling for Settings Tray module.
+ */
+
+/* @todo remove the @imports when we find a better way to load these styles last.
+ * https://www.drupal.org/node/1945262.
+ */
+
+/* Style the edit mode toolbar and tabs. */
+#toolbar-bar.js-settings-tray-edit-mode {
+  background-image: linear-gradient(to bottom, #0a7bc1, #0a6eb4);
+}
+.js-settings-tray-edit-mode .toolbar-item:not(.toolbar-icon-edit) {
+  color: #999;
+}
+.js-settings-tray-edit-mode .toolbar-item:not(.toolbar-icon-edit) .is-active {
+  color: #333;
+}
+
+/* Style both the edit and editing states of the contextual links toggle tab. */
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item,
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item.is-active,
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item:focus {
+  color: #eee;
+  outline: none;
+  background-color: #0066a1;
+  background-image: linear-gradient(to bottom, #0066a1, #005b98);
+  text-shadow: none;
+  font-weight: bold;
+}
+/* Make the hover of the inactive state the same as the active state. */
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item:hover,
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item.is-active {
+  color: #fff;
+  background-image: linear-gradient(to bottom, #0a7bc1, #0a6eb4);
+}
+/* Make the hover of the active state the same as the inactive state. */
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item.is-active:hover {
+  color: #fff;
+  background-color: #0066a1;
+  background-image: linear-gradient(to bottom, #0066a1, #005b98);
+}
+/* Make the inactive icon grey. */
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item:before {
+  background-image: url(../../images/core/icons/bebebe/pencil.svg);
+}
+/* Make the active icon white. */
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item.is-active:before {
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
+}
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item:hover:before {
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
+}
+.toolbar-tab > .toolbar-icon.toolbar-icon-edit.toolbar-item:hover > .toolbar-icon-edit:before {
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
+}
+.toolbar-tab > .button.toolbar-icon.toolbar-icon.toolbar-icon-edit:before {
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
+}
+
+/* Style the editables while in edit mode. */
+.dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .settings-tray-editable {
+  outline: 1px dashed rgba(0, 0, 0, 0.5);
+  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.7);
+}
+.dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .settings-tray-editable:hover,
+.dialog-off-canvas-main-canvas.js-settings-tray-edit-mode .settings-tray-editable.settings-tray-active-editable {
+  background-color: rgba(0, 0, 0, 0.2);
+}
diff --git a/core/themes/stable9/css/settings_tray/settings_tray.toolbar.css b/core/themes/stable9/css/settings_tray/settings_tray.toolbar.css
new file mode 100644
index 0000000000..474186804f
--- /dev/null
+++ b/core/themes/stable9/css/settings_tray/settings_tray.toolbar.css
@@ -0,0 +1,66 @@
+/**
+ * @file
+ * Visual styling for the toolbar when Settings Tray module is enabled.
+ */
+
+/* @todo Move this into toolbar when module is not experimental:
+ *   https://www.drupal.org/node/2784593.
+ */
+
+/* Style the edit mode toolbar and tabs. */
+#toolbar-bar.js-settings-tray-edit-mode {
+  background-color: #fff;
+}
+#toolbar-bar.js-settings-tray-edit-mode .toolbar-item {
+  color: #999;
+}
+#toolbar-bar.js-settings-tray-edit-mode .toolbar-item .is-active {
+  color: #333;
+}
+
+/* Style both the edit and editing states of the contextual links toggle tab. */
+.toolbar-icon-edit.toolbar-item {
+  color: #eee;
+  background-color: #0066a1;
+  background-image: linear-gradient(to bottom, #0066a1, #005b98);
+  text-shadow: 0 1px hsla(0, 0%, 0%, 0.5);
+  font-weight: 700;
+  -webkit-font-smoothing: antialiased;
+}
+.toolbar-icon-edit.toolbar-item.is-active {
+  color: #fff;
+  background-color: #0a7bc1;
+  background-image: linear-gradient(to bottom, #0a7bc1, #0a6eb4);
+  text-shadow: 0 1px hsla(0, 0%, 0%, 0.5);
+  font-weight: 700;
+  -webkit-font-smoothing: antialiased;
+}
+.toolbar-tab:hover > .toolbar-icon-edit,
+.toolbar-icon-edit:focus .toolbar-item {
+  color: #fff;
+  border-color: #1e5c90;
+  outline: none;
+  background-color: #0a7bc1;
+  background-image: linear-gradient(to bottom, #0a7bc1, #0a6eb4);
+}
+.toolbar-icon.toolbar-icon-edit.toolbar-item:before,
+button.toolbar-icon.toolbar-icon-edit.toolbar-item:before {
+  background-image: url(../../images/core/icons/bebebe/pencil.svg);
+}
+.toolbar-icon.toolbar-icon-edit.toolbar-item:before:hover,
+button.toolbar-icon.toolbar-icon-edit.toolbar-item:before:focus {
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
+}
+.toolbar-icon.toolbar-icon-edit.toolbar-item:hover > .toolbar-icon-edit:before {
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
+}
+#toolbar-bar.button.toolbar-icon.toolbar-icon.toolbar-icon-edit:before {
+  background-image: url(../../images/core/icons/ffffff/pencil.svg);
+}
+
+#toolbar-bar.js-settings-tray-edit-mode button.toolbar-icon.toolbar-icon-edit.toolbar-item.is-active {
+  color: #fff;
+}
+#toolbar-bar.js-settings-tray-edit-mode button.toolbar-icon.toolbar-icon-edit.toolbar-item.is-active:hover {
+  background-image: linear-gradient(to bottom, #0a6fb4, #0a65aa);
+}
diff --git a/core/themes/stable9/css/shortcut/shortcut.icons.theme.css b/core/themes/stable9/css/shortcut/shortcut.icons.theme.css
new file mode 100644
index 0000000000..213dcc8257
--- /dev/null
+++ b/core/themes/stable9/css/shortcut/shortcut.icons.theme.css
@@ -0,0 +1,40 @@
+/**
+ * @file
+ * Styling for the shortcut module icons.
+ */
+
+/**
+ * Toolbar tab icon.
+ */
+.toolbar-bar .toolbar-icon-shortcut:before {
+  background-image: url(../../images/core/icons/bebebe/star.svg);
+}
+.toolbar-bar .toolbar-icon-shortcut:active:before,
+.toolbar-bar .toolbar-icon-shortcut.is-active:before {
+  background-image: url(../../images/core/icons/ffffff/star.svg);
+}
+
+/**
+ * Add/remove links.
+ */
+.shortcut-action__icon {
+  display: inline-block;
+  width: 20px;
+  height: 20px;
+  vertical-align: -2px;
+  background: transparent url(../../images/shortcut/favstar.svg) no-repeat left top;
+}
+[dir="rtl"] .shortcut-action__icon {
+  background-image: url(../../images/shortcut/favstar-rtl.svg);
+}
+.shortcut-action--add:hover .shortcut-action__icon,
+.shortcut-action--add:focus .shortcut-action__icon {
+  background-position: -20px top;
+}
+.shortcut-action--remove .shortcut-action__icon {
+  background-position: -40px top;
+}
+.shortcut-action--remove:focus .shortcut-action__icon,
+.shortcut-action--remove:hover .shortcut-action__icon {
+  background-position: -60px top;
+}
diff --git a/core/themes/stable9/css/shortcut/shortcut.theme.css b/core/themes/stable9/css/shortcut/shortcut.theme.css
new file mode 100644
index 0000000000..97edead062
--- /dev/null
+++ b/core/themes/stable9/css/shortcut/shortcut.theme.css
@@ -0,0 +1,62 @@
+/**
+ * @file
+ * Styling for the shortcut module.
+ */
+
+/**
+ * Toolbar.
+ */
+.toolbar .toolbar-tray-vertical .edit-shortcuts {
+  padding: 1em;
+  text-align: right; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-tray-vertical .edit-shortcuts {
+  text-align: left;
+}
+.toolbar .toolbar-tray-horizontal .edit-shortcuts {
+  float: right; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-tray-horizontal .edit-shortcuts {
+  float: left;
+}
+
+/**
+ * Add/remove links.
+ */
+.shortcut-action {
+  display: inline-block;
+  margin-left: 0.3em; /* LTR */
+}
+[dir="rtl"] .shortcut-action {
+  margin-right: 0.3em;
+  margin-left: 0;
+}
+.shortcut-action__message {
+  display: inline-block;
+  margin-left: 0.3em; /* LTR */
+  padding: 0 5px;
+  -webkit-transition: all 200ms ease-out;
+  transition: all 200ms ease-out;
+  -ms-transform: translateY(-12px);
+  -webkit-transform: translateY(-12px);
+  transform: translateY(-12px);
+  opacity: 0;
+  color: #fff;
+  border-radius: 5px;
+  background: #000;
+  background: rgba(0, 0, 0, 0.5);
+  -ms-backface-visibility: hidden;
+  -webkit-backface-visibility: hidden;
+  backface-visibility: hidden;
+}
+[dir="rtl"] .shortcut-action__message {
+  margin-right: 0.3em;
+  margin-left: 0;
+}
+.shortcut-action:hover .shortcut-action__message,
+.shortcut-action:focus .shortcut-action__message {
+  -ms-transform: translateY(-2px);
+  -webkit-transform: translateY(-2px);
+  transform: translateY(-2px);
+  opacity: 1;
+}
diff --git a/core/themes/stable9/css/system/components/ajax-progress.module.css b/core/themes/stable9/css/system/components/ajax-progress.module.css
new file mode 100644
index 0000000000..de9efd41fb
--- /dev/null
+++ b/core/themes/stable9/css/system/components/ajax-progress.module.css
@@ -0,0 +1,49 @@
+/**
+ * @file
+ * Throbber.
+ */
+
+.ajax-progress {
+  display: inline-block;
+  padding: 1px 5px 2px 5px;
+}
+[dir="rtl"] .ajax-progress {
+  float: right;
+}
+.ajax-progress-throbber .throbber {
+  display: inline;
+  padding: 1px 5px 2px;
+  background: transparent url(../../../images/core/throbber-active.gif) no-repeat 0 center;
+}
+.ajax-progress-throbber .message {
+  display: inline;
+  padding: 1px 5px 2px;
+}
+tr .ajax-progress-throbber .throbber {
+  margin: 0 2px;
+}
+.ajax-progress-bar {
+  width: 16em;
+}
+
+/* Full screen throbber */
+.ajax-progress-fullscreen {
+  position: fixed;
+  z-index: 1000;
+  top: 48.5%;
+  /* Can't do center:50% middle: 50%, so approximate it for a typical window size. */
+  left: 49%; /* LTR */
+  width: 24px;
+  height: 24px;
+  padding: 4px;
+  opacity: 0.9;
+  border-radius: 7px;
+  background-color: #232323;
+  background-image: url(../../../images/core/loading-small.gif);
+  background-repeat: no-repeat;
+  background-position: center center;
+}
+[dir="rtl"] .ajax-progress-fullscreen {
+  right: 49%;
+  left: auto;
+}
diff --git a/core/themes/stable9/css/system/components/align.module.css b/core/themes/stable9/css/system/components/align.module.css
new file mode 100644
index 0000000000..1ea4a8d1ce
--- /dev/null
+++ b/core/themes/stable9/css/system/components/align.module.css
@@ -0,0 +1,32 @@
+/**
+ * @file
+ * Alignment classes for text and block level elements.
+ */
+
+.text-align-left {
+  text-align: left;
+}
+.text-align-right {
+  text-align: right;
+}
+.text-align-center {
+  text-align: center;
+}
+.text-align-justify {
+  text-align: justify;
+}
+
+/**
+ * Alignment classes for block level elements (images, videos, blockquotes, etc.)
+ */
+.align-left {
+  float: left;
+}
+.align-right {
+  float: right;
+}
+.align-center {
+  display: block;
+  margin-right: auto;
+  margin-left: auto;
+}
diff --git a/core/themes/stable9/css/system/components/autocomplete-loading.module.css b/core/themes/stable9/css/system/components/autocomplete-loading.module.css
new file mode 100644
index 0000000000..93d6d4fc24
--- /dev/null
+++ b/core/themes/stable9/css/system/components/autocomplete-loading.module.css
@@ -0,0 +1,22 @@
+/**
+ * @file
+ * Visual styles for animated throbber.
+ *
+ * @see autocomplete.js
+ */
+
+.js input.form-autocomplete {
+  background-image: url(../../../images/core/throbber-inactive.png);
+  background-repeat: no-repeat;
+  background-position: 100% center; /* LTR */
+}
+.js[dir="rtl"] input.form-autocomplete {
+  background-position: 0% center;
+}
+.js input.form-autocomplete.ui-autocomplete-loading {
+  background-image: url(../../../images/core/throbber-active.gif);
+  background-position: 100% center; /* LTR */
+}
+.js[dir="rtl"] input.form-autocomplete.ui-autocomplete-loading {
+  background-position: 0% center;
+}
diff --git a/core/themes/stable9/css/system/components/clearfix.module.css b/core/themes/stable9/css/system/components/clearfix.module.css
new file mode 100644
index 0000000000..cb978d4c4b
--- /dev/null
+++ b/core/themes/stable9/css/system/components/clearfix.module.css
@@ -0,0 +1,15 @@
+/**
+ * @file
+ * Float clearing.
+ *
+ * Based on the micro clearfix hack by Nicolas Gallagher, with the :before
+ * pseudo selector removed to allow normal top margin collapse.
+ *
+ * @see http://nicolasgallagher.com/micro-clearfix-hack
+ */
+
+.clearfix:after {
+  display: table;
+  clear: both;
+  content: "";
+}
diff --git a/core/themes/stable9/css/system/components/container-inline.module.css b/core/themes/stable9/css/system/components/container-inline.module.css
new file mode 100644
index 0000000000..ba99a36563
--- /dev/null
+++ b/core/themes/stable9/css/system/components/container-inline.module.css
@@ -0,0 +1,13 @@
+/**
+ * @file
+ * Inline items.
+ */
+
+.container-inline div,
+.container-inline label {
+  display: inline-block;
+}
+/* Details contents always need to be rendered as block. */
+.container-inline .details-wrapper {
+  display: block;
+}
diff --git a/core/themes/stable9/css/system/components/details.module.css b/core/themes/stable9/css/system/components/details.module.css
new file mode 100644
index 0000000000..23ee3b4121
--- /dev/null
+++ b/core/themes/stable9/css/system/components/details.module.css
@@ -0,0 +1,10 @@
+/**
+ * @file
+ * Collapsible details.
+ *
+ * @see collapse.js
+ */
+
+.js details:not([open]) .details-wrapper {
+  display: none;
+}
diff --git a/core/themes/stable9/css/system/components/fieldgroup.module.css b/core/themes/stable9/css/system/components/fieldgroup.module.css
new file mode 100644
index 0000000000..887c8f9c08
--- /dev/null
+++ b/core/themes/stable9/css/system/components/fieldgroup.module.css
@@ -0,0 +1,9 @@
+/**
+ * @file
+ * Fieldgroup border reset.
+ */
+
+.fieldgroup {
+  padding: 0;
+  border-width: 0;
+}
diff --git a/core/themes/stable9/css/system/components/hidden.module.css b/core/themes/stable9/css/system/components/hidden.module.css
new file mode 100644
index 0000000000..dde9170122
--- /dev/null
+++ b/core/themes/stable9/css/system/components/hidden.module.css
@@ -0,0 +1,53 @@
+/**
+ * @file
+ * Utility classes to hide elements in different ways.
+ */
+
+/**
+ * Hide elements from all users.
+ *
+ * Used for elements which should not be immediately displayed to any user. An
+ * example would be collapsible details that will be expanded with a click
+ * from a user. The effect of this class can be toggled with the jQuery show()
+ * and hide() functions.
+ */
+.hidden {
+  display: none;
+}
+
+/**
+ * Hide elements visually, but keep them available for screen readers.
+ *
+ * Used for information required for screen reader users to understand and use
+ * the site where visual display is undesirable. Information provided in this
+ * manner should be kept concise, to avoid unnecessary burden on the user.
+ * "!important" is used to prevent unintentional overrides.
+ */
+.visually-hidden {
+  position: absolute !important;
+  overflow: hidden;
+  clip: rect(1px, 1px, 1px, 1px);
+  width: 1px;
+  height: 1px;
+  word-wrap: normal;
+}
+
+/**
+ * The .focusable class extends the .visually-hidden class to allow
+ * the element to be focusable when navigated to via the keyboard.
+ */
+.visually-hidden.focusable:active,
+.visually-hidden.focusable:focus {
+  position: static !important;
+  overflow: visible;
+  clip: auto;
+  width: auto;
+  height: auto;
+}
+
+/**
+ * Hide visually and from screen readers, but maintain layout.
+ */
+.invisible {
+  visibility: hidden;
+}
diff --git a/core/themes/stable9/css/system/components/item-list.module.css b/core/themes/stable9/css/system/components/item-list.module.css
new file mode 100644
index 0000000000..7bddff9e76
--- /dev/null
+++ b/core/themes/stable9/css/system/components/item-list.module.css
@@ -0,0 +1,19 @@
+/**
+ * @file
+ * Styles for item list.
+ */
+
+.item-list__comma-list,
+.item-list__comma-list li {
+  display: inline;
+}
+.item-list__comma-list {
+  margin: 0;
+  padding: 0;
+}
+.item-list__comma-list li:after {
+  content: ", ";
+}
+.item-list__comma-list li:last-child:after {
+  content: "";
+}
diff --git a/core/themes/stable9/css/system/components/js.module.css b/core/themes/stable9/css/system/components/js.module.css
new file mode 100644
index 0000000000..f827020326
--- /dev/null
+++ b/core/themes/stable9/css/system/components/js.module.css
@@ -0,0 +1,22 @@
+/**
+ * @file
+ * Utility classes to assist with Javascript functionality.
+ */
+
+/**
+ * For anything you want to hide on page load when JS is enabled, so
+ * that you can use the JS to control visibility and avoid flicker.
+ */
+.js .js-hide {
+  display: none;
+}
+
+/**
+ * For anything you want to show on page load only when JS is enabled.
+ */
+.js-show {
+  display: none;
+}
+.js .js-show {
+  display: block;
+}
diff --git a/core/themes/stable9/css/system/components/nowrap.module.css b/core/themes/stable9/css/system/components/nowrap.module.css
new file mode 100644
index 0000000000..466d9fe68a
--- /dev/null
+++ b/core/themes/stable9/css/system/components/nowrap.module.css
@@ -0,0 +1,8 @@
+/**
+ * @file
+ * Utility class to prevent text wrapping.
+ */
+
+.nowrap {
+  white-space: nowrap;
+}
diff --git a/core/themes/stable9/css/system/components/position-container.module.css b/core/themes/stable9/css/system/components/position-container.module.css
new file mode 100644
index 0000000000..ae209f3aa6
--- /dev/null
+++ b/core/themes/stable9/css/system/components/position-container.module.css
@@ -0,0 +1,8 @@
+/*
+ * @file
+ * Contain positioned elements.
+ */
+
+.position-container {
+  position: relative;
+}
diff --git a/core/themes/stable9/css/system/components/progress.module.css b/core/themes/stable9/css/system/components/progress.module.css
new file mode 100644
index 0000000000..960e28b6ba
--- /dev/null
+++ b/core/themes/stable9/css/system/components/progress.module.css
@@ -0,0 +1,51 @@
+/**
+ * @file
+ * Progress behavior.
+ *
+ * @see progress.js
+ */
+
+.progress {
+  position: relative;
+}
+.progress__track {
+  min-width: 100px;
+  max-width: 100%;
+  height: 16px;
+  margin-top: 5px;
+  border: 1px solid;
+  background-color: #fff;
+}
+.progress__bar {
+  width: 3%;
+  min-width: 3%;
+  max-width: 100%;
+  height: 16px;
+  background-color: #000;
+}
+.progress__description,
+.progress__percentage {
+  overflow: hidden;
+  margin-top: 0.2em;
+  color: #555;
+  font-size: 0.875em;
+}
+.progress__description {
+  float: left; /* LTR */
+}
+[dir="rtl"] .progress__description {
+  float: right;
+}
+.progress__percentage {
+  float: right; /* LTR */
+}
+[dir="rtl"] .progress__percentage {
+  float: left;
+}
+.progress--small .progress__track {
+  height: 7px;
+}
+.progress--small .progress__bar {
+  height: 7px;
+  background-size: 20px 20px;
+}
diff --git a/core/themes/stable9/css/system/components/reset-appearance.module.css b/core/themes/stable9/css/system/components/reset-appearance.module.css
new file mode 100644
index 0000000000..b04ba133fa
--- /dev/null
+++ b/core/themes/stable9/css/system/components/reset-appearance.module.css
@@ -0,0 +1,15 @@
+/*
+ * @file
+ * Utility class to remove browser styles, especially for button.
+ */
+
+.reset-appearance {
+  margin: 0;
+  padding: 0;
+  border: 0 none;
+  background: transparent;
+  line-height: inherit;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+}
diff --git a/core/themes/stable9/css/system/components/resize.module.css b/core/themes/stable9/css/system/components/resize.module.css
new file mode 100644
index 0000000000..db727c1027
--- /dev/null
+++ b/core/themes/stable9/css/system/components/resize.module.css
@@ -0,0 +1,21 @@
+/**
+ * @file
+ * Resizable textareas.
+ */
+
+.resize-none {
+  resize: none;
+}
+.resize-vertical {
+  min-height: 2em;
+  resize: vertical;
+}
+.resize-horizontal {
+  max-width: 100%;
+  resize: horizontal;
+}
+.resize-both {
+  max-width: 100%;
+  min-height: 2em;
+  resize: both;
+}
diff --git a/core/themes/stable9/css/system/components/sticky-header.module.css b/core/themes/stable9/css/system/components/sticky-header.module.css
new file mode 100644
index 0000000000..f6a1b1ec0c
--- /dev/null
+++ b/core/themes/stable9/css/system/components/sticky-header.module.css
@@ -0,0 +1,13 @@
+/**
+ * @file
+ * Table header behavior.
+ *
+ * @see tableheader.js
+ */
+
+table.sticky-header {
+  z-index: 500;
+  top: 0;
+  margin-top: 0;
+  background-color: #fff;
+}
diff --git a/core/themes/stable9/css/system/components/system-status-counter.css b/core/themes/stable9/css/system/components/system-status-counter.css
new file mode 100644
index 0000000000..ed2d425c91
--- /dev/null
+++ b/core/themes/stable9/css/system/components/system-status-counter.css
@@ -0,0 +1,30 @@
+/**
+ * @file
+ * Styles for the system status counter component.
+ */
+
+.system-status-counter__status-icon {
+  display: inline-block;
+  width: 25px;
+  height: 25px;
+  vertical-align: middle;
+}
+.system-status-counter__status-icon:before {
+  display: block;
+  width: 100%;
+  height: 100%;
+  content: "";
+  background-repeat: no-repeat;
+  background-position: center 2px;
+  background-size: 16px;
+}
+
+.system-status-counter__status-icon--error:before {
+  background-image: url(../../../images/core/icons/e32700/error.svg);
+}
+.system-status-counter__status-icon--warning:before {
+  background-image: url(../../../images/core/icons/e29700/warning.svg);
+}
+.system-status-counter__status-icon--checked:before {
+  background-image: url(../../../images/core/icons/73b355/check.svg);
+}
diff --git a/core/themes/stable9/css/system/components/system-status-report-counters.css b/core/themes/stable9/css/system/components/system-status-report-counters.css
new file mode 100644
index 0000000000..7040c257a0
--- /dev/null
+++ b/core/themes/stable9/css/system/components/system-status-report-counters.css
@@ -0,0 +1,27 @@
+/**
+ * @file
+ * Styles for the system status report counters.
+ */
+
+.system-status-report-counters__item {
+  width: 100%;
+  margin-bottom: 0.5em;
+  padding: 0.5em 0;
+  text-align: center;
+  white-space: nowrap;
+  background-color: rgba(0, 0, 0, 0.063);
+}
+
+@media screen and (min-width: 60em) {
+  .system-status-report-counters {
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: space-between;
+  }
+  .system-status-report-counters__item--half-width {
+    width: 49%;
+  }
+  .system-status-report-counters__item--third-width {
+    width: 33%;
+  }
+}
diff --git a/core/themes/stable9/css/system/components/system-status-report-general-info.css b/core/themes/stable9/css/system/components/system-status-report-general-info.css
new file mode 100644
index 0000000000..3056aded67
--- /dev/null
+++ b/core/themes/stable9/css/system/components/system-status-report-general-info.css
@@ -0,0 +1,14 @@
+/**
+ * @file
+ * Default styles for the System Status general info.
+ */
+
+.system-status-general-info__item {
+  margin-top: 1em;
+  padding: 0 1em 1em;
+  border: 1px solid #ccc;
+}
+
+.system-status-general-info__item-title {
+  border-bottom: 1px solid #ccc;
+}
diff --git a/core/themes/stable9/css/system/components/tabledrag.module.css b/core/themes/stable9/css/system/components/tabledrag.module.css
new file mode 100644
index 0000000000..8421617662
--- /dev/null
+++ b/core/themes/stable9/css/system/components/tabledrag.module.css
@@ -0,0 +1,88 @@
+/**
+ * @file
+ * Table drag behavior.
+ *
+ * @see tabledrag.js
+ */
+
+body.drag {
+  cursor: move;
+}
+tr.region-title {
+  font-weight: bold;
+}
+tr.region-message {
+  color: #999;
+}
+tr.region-populated {
+  display: none;
+}
+tr.add-new .tabledrag-changed {
+  display: none;
+}
+.draggable a.tabledrag-handle {
+  float: left; /* LTR */
+  overflow: hidden;
+  height: 1.7em;
+  margin-left: -1em; /* LTR */
+  cursor: move;
+  text-decoration: none;
+}
+[dir="rtl"] .draggable a.tabledrag-handle {
+  float: right;
+  margin-right: -1em;
+  margin-left: 0;
+}
+a.tabledrag-handle:hover {
+  text-decoration: none;
+}
+a.tabledrag-handle .handle {
+  width: 14px;
+  height: 14px;
+  margin: -0.4em 0.5em 0;
+  padding: 0.42em 0.5em;
+  background: url(../../../images/core/icons/787878/move.svg) no-repeat 6px 7px;
+}
+a.tabledrag-handle:hover .handle,
+a.tabledrag-handle:focus .handle {
+  background-image: url(../../../images/core/icons/000000/move.svg);
+}
+.touchevents .draggable td {
+  padding: 0 10px;
+}
+.touchevents .draggable .menu-item__link {
+  display: inline-block;
+  padding: 10px 0;
+}
+.touchevents a.tabledrag-handle {
+  width: 40px;
+  height: 44px;
+}
+.touchevents a.tabledrag-handle .handle {
+  height: 21px;
+  background-position: 40% 19px; /* LTR */
+}
+[dir="rtl"] .touch a.tabledrag-handle .handle {
+  background-position: right 40% top 19px;
+}
+.touchevents .draggable.drag a.tabledrag-handle .handle {
+  background-position: 50% -32px;
+}
+.tabledrag-toggle-weight-wrapper {
+  text-align: right; /* LTR */
+}
+[dir="rtl"] .tabledrag-toggle-weight-wrapper {
+  text-align: left;
+}
+.indentation {
+  float: left; /* LTR */
+  width: 20px;
+  height: 1.7em;
+  margin: -0.4em 0.2em -0.4em -0.4em; /* LTR */
+  padding: 0.42em 0 0.42em 0.6em; /* LTR */
+}
+[dir="rtl"] .indentation {
+  float: right;
+  margin: -0.4em -0.4em -0.4em 0.2em;
+  padding: 0.42em 0.6em 0.42em 0;
+}
diff --git a/core/themes/stable9/css/system/components/tablesort.module.css b/core/themes/stable9/css/system/components/tablesort.module.css
new file mode 100644
index 0000000000..51988eac96
--- /dev/null
+++ b/core/themes/stable9/css/system/components/tablesort.module.css
@@ -0,0 +1,19 @@
+/**
+ * @file
+ * Table sort indicator.
+ *
+ * @see tablesort-indicator.html.twig
+ */
+
+.tablesort {
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+  background-size: 100%;
+}
+.tablesort--asc {
+  background-image: url(../../../images/core/icons/787878/twistie-down.svg);
+}
+.tablesort--desc {
+  background-image: url(../../../images/core/icons/787878/twistie-up.svg);
+}
diff --git a/core/themes/stable9/css/system/components/tree-child.module.css b/core/themes/stable9/css/system/components/tree-child.module.css
new file mode 100644
index 0000000000..a09b389660
--- /dev/null
+++ b/core/themes/stable9/css/system/components/tree-child.module.css
@@ -0,0 +1,18 @@
+/**
+ * @file
+ * Visual styles for a nested tree child.
+ */
+
+div.tree-child {
+  background: url(../../../images/core/tree.png) no-repeat 11px center; /* LTR */
+}
+div.tree-child-last {
+  background: url(../../../images/core/tree-bottom.png) no-repeat 11px center; /* LTR */
+}
+[dir="rtl"] div.tree-child,
+[dir="rtl"] div.tree-child-last {
+  background-position: -65px center;
+}
+div.tree-child-horizontal {
+  background: url(../../../images/core/tree.png) no-repeat -11px center;
+}
diff --git a/core/themes/stable9/css/system/system.admin.css b/core/themes/stable9/css/system/system.admin.css
new file mode 100644
index 0000000000..4a3ddb1169
--- /dev/null
+++ b/core/themes/stable9/css/system/system.admin.css
@@ -0,0 +1,401 @@
+/**
+ * @file
+ * Styles for administration pages.
+ */
+
+/**
+ * Reusable layout styles.
+ */
+.layout-container {
+  margin: 0 1.5em;
+}
+.layout-container:after {
+  display: table;
+  clear: both;
+  content: "";
+}
+
+@media screen and (min-width: 38em) {
+  .layout-container {
+    margin: 0 2.5em;
+  }
+  .layout-column {
+    float: left;  /* LTR */
+    box-sizing: border-box;
+  }
+  [dir="rtl"] .layout-column {
+    float: right;
+  }
+  .layout-column + .layout-column {
+    padding-left: 10px; /* LTR */
+  }
+  [dir="rtl"] .layout-column + .layout-column {
+    padding-right: 10px;
+    padding-left: 0;
+  }
+  .layout-column--half {
+    width: 50%;
+  }
+  .layout-column--quarter {
+    width: 25%;
+  }
+  .layout-column--three-quarter {
+    width: 75%;
+  }
+}
+
+/**
+ * Panel.
+ * Used to visually group items together.
+ */
+.panel {
+  padding: 5px 5px 15px;
+}
+.panel__description {
+  margin: 0 0 3px;
+  padding: 2px 0 3px 0;
+}
+
+/**
+ * System compact link: to toggle the display of description text.
+ */
+.compact-link {
+  margin: 0 0 0.5em 0;
+}
+
+/**
+ * Quick inline admin links.
+ */
+small .admin-link:before {
+  content: " [";
+}
+small .admin-link:after {
+  content: "]";
+}
+
+/**
+ * Modules page.
+ */
+.system-modules thead > tr {
+  border: 0;
+}
+.system-modules div.incompatible {
+  font-weight: bold;
+}
+.system-modules td.checkbox {
+  width: 4%;
+  min-width: 25px;
+}
+.system-modules td.module {
+  width: 25%;
+}
+.system-modules td {
+  vertical-align: top;
+}
+.system-modules label,
+.system-modules-uninstall label {
+  color: #1d1d1d;
+  font-size: 1.15em;
+}
+.system-modules details {
+  overflow: hidden; /* truncates descriptions if too long */
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  color: #5c5c5b;
+  line-height: 20px;
+}
+.system-modules details[open] {
+  overflow: visible;
+  height: auto;
+  white-space: normal;
+}
+.system-modules details[open] summary .text {
+  text-transform: none;
+  -webkit-hyphens: auto;
+  -moz-hyphens: auto;
+  -ms-hyphens: auto;
+  hyphens: auto;
+}
+.system-modules td details a {
+  color: #5c5c5b;
+  border: 0;
+}
+.system-modules td details {
+  height: 20px;
+  margin: 0;
+  border: 0;
+}
+.system-modules td details summary {
+  padding: 0;
+  cursor: default;
+  text-transform: none;
+  font-weight: normal;
+}
+.system-modules td {
+  padding-left: 0; /* LTR */
+}
+[dir="rtl"] .system-modules td {
+  padding-right: 0;
+  padding-left: 12px;
+}
+
+@media screen and (max-width: 40em) {
+  .system-modules td.name {
+    width: 20%;
+  }
+  .system-modules td.description {
+    width: 40%;
+  }
+}
+.system-modules .requirements {
+  max-width: 490px;
+  padding: 5px 0;
+}
+.system-modules .links {
+  overflow: hidden; /* prevents collapse */
+}
+.system-modules .checkbox {
+  margin: 0 5px;
+}
+.system-modules .checkbox .form-item {
+  margin-bottom: 0;
+}
+.admin-requirements,
+.admin-required {
+  color: #666;
+  font-size: 0.9em;
+}
+.admin-enabled {
+  color: #080;
+}
+.admin-missing {
+  color: #f00;
+}
+.module-link {
+  display: block;
+  float: left; /* LTR */
+  margin-top: 2px;
+  padding: 2px 20px;
+  white-space: nowrap;
+}
+[dir="rtl"] .module-link {
+  float: right;
+}
+.module-link-help {
+  background: url(../../images/core/icons/787878/questionmark-disc.svg) 0 50% no-repeat; /* LTR */
+}
+[dir="rtl"] .module-link-help {
+  background-position: top 50% right 0;
+}
+.module-link-permissions {
+  background: url(../../images/core/icons/787878/key.svg) 0 50% no-repeat; /* LTR */
+}
+[dir="rtl"] .module-link-permissions {
+  background-position: top 50% right 0;
+}
+.module-link-configure {
+  background: url(../../images/core/icons/787878/cog.svg) 0 50% no-repeat; /* LTR */
+}
+[dir="rtl"] .module-link-configure {
+  background-position: top 50% right 0;
+}
+
+/* Status report. */
+.system-status-report__status-title {
+  position: relative;
+  box-sizing: border-box;
+  width: 100%;
+  padding: 10px 6px 10px 40px; /* LTR */
+  vertical-align: top;
+  background-color: transparent;
+  font-weight: normal;
+}
+[dir="rtl"] .system-status-report__status-title {
+  padding: 10px 40px 10px 6px;
+}
+.system-status-report__status-icon:before {
+  position: absolute;
+  top: 12px;
+  left: 12px; /* LTR */
+  display: block;
+  width: 16px;
+  height: 16px;
+  content: "";
+  background-repeat: no-repeat;
+}
+[dir="rtl"] .system-status-report__status-icon:before {
+  right: 12px;
+  left: auto;
+}
+.system-status-report__status-icon--error:before {
+  background-image: url(../../images/core/icons/e32700/error.svg);
+}
+.system-status-report__status-icon--warning:before {
+  background-image: url(../../images/core/icons/e29700/warning.svg);
+}
+.system-status-report__entry__value {
+  padding: 1em 0.5em;
+}
+
+/**
+ * Appearance page.
+ */
+.theme-info__header {
+  margin-bottom: 0;
+  font-weight: normal;
+}
+.theme-default .theme-info__header {
+  font-weight: bold;
+}
+.theme-info__description {
+  margin-top: 0;
+}
+.system-themes-list {
+  margin-bottom: 20px;
+}
+.system-themes-list-uninstalled {
+  padding-top: 20px;
+  border-top: 1px solid #cdcdcd;
+}
+.system-themes-list__header {
+  margin: 0;
+}
+
+.theme-selector {
+  padding-top: 20px;
+}
+.theme-selector .screenshot,
+.theme-selector .no-screenshot {
+  max-width: 100%;
+  height: auto;
+  padding: 2px;
+  text-align: center;
+  vertical-align: bottom;
+  border: 1px solid #e0e0d8;
+}
+.theme-default .screenshot {
+  border: 1px solid #aaa;
+}
+.system-themes-list-uninstalled .screenshot,
+.system-themes-list-uninstalled .no-screenshot {
+  max-width: 194px;
+  height: auto;
+}
+
+/**
+ * Theme display without vertical toolbar.
+ */
+@media screen and (min-width: 45em) {
+  body:not(.toolbar-vertical) .system-themes-list-installed .screenshot,
+  body:not(.toolbar-vertical) .system-themes-list-installed .no-screenshot {
+    float: left; /* LTR */
+    width: 294px;
+    margin: 0 20px 0 0; /* LTR */
+  }
+  [dir="rtl"] body:not(.toolbar-vertical) .system-themes-list-installed .screenshot,
+  [dir="rtl"] body:not(.toolbar-vertical) .system-themes-list-installed .no-screenshot {
+    float: right;
+    margin: 0 0 0 20px;
+  }
+  body:not(.toolbar-vertical) .system-themes-list-installed .system-themes-list__header {
+    margin-top: 0;
+  }
+  body:not(.toolbar-vertical) .system-themes-list-uninstalled .theme-selector {
+    float: left; /* LTR */
+    box-sizing: border-box;
+    width: 31.25%;
+    padding: 20px 20px 20px 0; /* LTR */
+  }
+  [dir="rtl"] body:not(.toolbar-vertical) .system-themes-list-uninstalled .theme-selector {
+    float: right;
+    padding: 20px 0 20px 20px;
+  }
+  body:not(.toolbar-vertical) .system-themes-list-uninstalled .theme-info {
+    min-height: 170px;
+  }
+}
+
+/**
+ * Theme display with vertical toolbar.
+ */
+@media screen and (min-width: 60em) {
+  .toolbar-vertical .system-themes-list-installed .screenshot,
+  .toolbar-vertical .system-themes-list-installed .no-screenshot {
+    float: left; /* LTR */
+    width: 294px;
+    margin: 0 20px 0 0; /* LTR */
+  }
+  [dir="rtl"] .toolbar-vertical .system-themes-list-installed .screenshot,
+  [dir="rtl"] .toolbar-vertical .system-themes-list-installed .no-screenshot {
+    float: right;
+    margin: 0 0 0 20px;
+  }
+  .toolbar-vertical .system-themes-list-installed .theme-info__header {
+    margin-top: 0;
+  }
+  .toolbar-vertical .system-themes-list-uninstalled .theme-selector {
+    float: left; /* LTR */
+    box-sizing: border-box;
+    width: 31.25%;
+    padding: 20px 20px 20px 0; /* LTR */
+  }
+  [dir="rtl"] .toolbar-vertical .system-themes-list-uninstalled .theme-selector {
+    float: right;
+    padding: 20px 0 20px 20px;
+  }
+  .toolbar-vertical .system-themes-list-uninstalled .theme-info {
+    min-height: 170px;
+  }
+}
+.system-themes-list-installed .theme-info {
+  max-width: 940px;
+}
+
+.theme-selector .incompatible {
+  margin-top: 10px;
+  font-weight: bold;
+}
+.theme-selector .operations {
+  margin: 10px 0 0 0;
+  padding: 0;
+}
+.theme-selector .operations li {
+  float: left; /* LTR */
+  margin: 0;
+  padding: 0 0.7em;
+  list-style-type: none;
+  border-right: 1px solid #cdcdcd;  /* LTR */
+}
+[dir="rtl"] .theme-selector .operations li {
+  float: right;
+  border-right: none;
+  border-left: 1px solid #cdcdcd;
+}
+.theme-selector .operations li:last-child {
+  padding: 0 0 0 0.7em; /* LTR */
+  border-right: none; /* LTR */
+}
+[dir="rtl"] .theme-selector .operations li:last-child {
+  padding: 0 0.7em 0 0;
+  border-left: none;
+}
+.theme-selector .operations li:first-child {
+  padding: 0 0.7em 0 0; /* LTR */
+}
+[dir="rtl"] .theme-selector .operations li:first-child {
+  padding: 0 0 0 0.7em;
+}
+.system-themes-admin-form {
+  clear: left; /* LTR */
+}
+[dir="rtl"] .system-themes-admin-form {
+  clear: right;
+}
+.cron-description__run-cron {
+  display: block;
+}
+
+.system-cron-settings__link {
+  overflow-wrap: break-word;
+  word-wrap: break-word;
+}
diff --git a/core/themes/stable9/css/system/system.diff.css b/core/themes/stable9/css/system/system.diff.css
new file mode 100644
index 0000000000..a6e86423c6
--- /dev/null
+++ b/core/themes/stable9/css/system/system.diff.css
@@ -0,0 +1,41 @@
+/**
+ * Traditional split diff theming
+ */
+table.diff {
+  width: 100%;
+  margin-bottom: 20px;
+  border-spacing: 4px;
+}
+table.diff .diff-context {
+  background-color: #fafafa;
+}
+table.diff .diff-deletedline {
+  width: 50%;
+  background-color: #ffa;
+}
+table.diff .diff-addedline {
+  width: 50%;
+  background-color: #afa;
+}
+table.diff .diffchange {
+  color: #f00;
+  font-weight: bold;
+}
+table.diff .diff-marker {
+  width: 1.4em;
+}
+table.diff th {
+  padding-right: inherit; /* LTR */
+}
+[dir="rtl"] table.diff th {
+  padding-right: 0;
+  padding-left: inherit;
+}
+table.diff td div {
+  overflow: auto;
+  padding: 0.1ex 0.5em;
+  word-wrap: break-word;
+}
+table.diff td {
+  padding: 0.1ex 0.4em;
+}
diff --git a/core/themes/stable9/css/system/system.maintenance.css b/core/themes/stable9/css/system/system.maintenance.css
new file mode 100644
index 0000000000..efecda7e84
--- /dev/null
+++ b/core/themes/stable9/css/system/system.maintenance.css
@@ -0,0 +1,56 @@
+/**
+ * Update styles
+ */
+.update-results {
+  margin-top: 3em;
+  padding: 0.25em;
+  border: 1px solid #ccc;
+  background: #eee;
+  font-size: smaller;
+}
+.update-results h2 {
+  margin-top: 0.25em;
+}
+.update-results h4 {
+  margin-bottom: 0.25em;
+}
+.update-results .none {
+  color: #888;
+  font-style: italic;
+}
+.update-results .failure strong {
+  color: #b63300;
+}
+
+/**
+ * Authorize.php styles
+ */
+#edit-submit-connection {
+  clear: both;
+}
+#edit-submit-process,
+.filetransfer {
+  display: none;
+  clear: both;
+}
+.js #edit-submit-connection {
+  display: none;
+}
+.js #edit-submit-process {
+  display: block;
+}
+
+#edit-connection-settings-change-connection-type {
+  margin: 2.6em 0.5em 0 1em; /* LTR */
+}
+[dir="rtl"] #edit-connection-settings-change-connection-type {
+  margin-right: 1em;
+  margin-left: 0.5em;
+}
+
+/**
+ * Theme maintenance styles
+ */
+.authorize-results__failure {
+  font-weight: bold;
+}
diff --git a/core/themes/stable9/css/taxonomy/taxonomy.theme.css b/core/themes/stable9/css/taxonomy/taxonomy.theme.css
new file mode 100644
index 0000000000..543666a1e9
--- /dev/null
+++ b/core/themes/stable9/css/taxonomy/taxonomy.theme.css
@@ -0,0 +1,10 @@
+
+.taxonomy-term-preview {
+  background-color: #eee;
+}
+.taxonomy-term-divider-top {
+  border-bottom: none;
+}
+.taxonomy-term-divider-bottom {
+  border-top: 1px dotted #ccc;
+}
diff --git a/core/themes/stable9/css/toolbar/toolbar.icons.theme.css b/core/themes/stable9/css/toolbar/toolbar.icons.theme.css
new file mode 100644
index 0000000000..659529c3f4
--- /dev/null
+++ b/core/themes/stable9/css/toolbar/toolbar.icons.theme.css
@@ -0,0 +1,298 @@
+/**
+ * @file
+ * Styling for toolbar module icons.
+ */
+
+.toolbar .toolbar-icon {
+  position: relative;
+  padding-left: 2.75em; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-icon {
+  padding-right: 2.75em;
+  padding-left: 1.3333em;
+}
+.toolbar .toolbar-icon:before {
+  position: absolute;
+  top: 0;
+  left: 0.6667em; /* LTR */
+  display: block;
+  width: 20px;
+  height: 100%;
+  content: "";
+  background-color: transparent;
+  background-repeat: no-repeat;
+  background-attachment: scroll;
+  background-position: center center;
+  background-size: 100% auto;
+}
+[dir="rtl"] .toolbar .toolbar-icon:before {
+  right: 0.6667em;
+  left: auto;
+}
+.toolbar button.toolbar-icon {
+  border: 0;
+  background-color: transparent;
+  font-size: 1em;
+}
+.toolbar .toolbar-menu ul .toolbar-icon {
+  padding-left: 1.3333em; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-menu ul .toolbar-icon {
+  padding-right: 1.3333em;
+  padding-left: 0;
+}
+.toolbar .toolbar-menu ul a.toolbar-icon:before {
+  display: none;
+}
+.toolbar .toolbar-tray-vertical .toolbar-menu ul a {
+  padding-left: 2.75em; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-tray-vertical .toolbar-menu ul a {
+  padding-right: 2.75em;
+  padding-left: 0;
+}
+.toolbar .toolbar-tray-vertical .toolbar-menu ul ul a {
+  padding-left: 3.75em; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-tray-vertical .toolbar-menu ul ul a {
+  padding-right: 3.75em;
+  padding-left: 0;
+}
+
+.toolbar .toolbar-tray-vertical .toolbar-menu a {
+  padding-right: 4em; /* LTR */
+  padding-left: 2.75em; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-tray-vertical .toolbar-menu a {
+  padding-right: 2.75em;
+  padding-left: 4em;
+}
+
+/**
+ * Top level icons.
+ */
+.toolbar-bar .toolbar-icon-menu:before {
+  background-image: url(../../images/core/icons/bebebe/hamburger.svg);
+}
+.toolbar-bar .toolbar-icon-menu:active:before,
+.toolbar-bar .toolbar-icon-menu.is-active:before {
+  background-image: url(../../images/core/icons/ffffff/hamburger.svg);
+}
+.toolbar-bar .toolbar-icon-help:before {
+  background-image: url(../../images/core/icons/bebebe/questionmark-disc.svg);
+}
+.toolbar-bar .toolbar-icon-help:active:before,
+.toolbar-bar .toolbar-icon-help.is-active:before {
+  background-image: url(../../images/core/icons/ffffff/questionmark-disc.svg);
+}
+
+/**
+ * Main menu icons.
+ */
+.toolbar-icon-system-admin-content:before {
+  background-image: url(../../images/core/icons/787878/file.svg);
+}
+.toolbar-icon-system-admin-content:active:before,
+.toolbar-icon-system-admin-content.is-active:before {
+  background-image: url(../../images/core/icons/000000/file.svg);
+}
+.toolbar-icon-system-admin-structure:before {
+  background-image: url(../../images/core/icons/787878/orgchart.svg);
+}
+.toolbar-icon-system-admin-structure:active:before,
+.toolbar-icon-system-admin-structure.is-active:before {
+  background-image: url(../../images/core/icons/000000/orgchart.svg);
+}
+.toolbar-icon-system-themes-page:before {
+  background-image: url(../../images/core/icons/787878/paintbrush.svg);
+}
+.toolbar-icon-system-themes-page:active:before,
+.toolbar-icon-system-themes-page.is-active:before {
+  background-image: url(../../images/core/icons/000000/paintbrush.svg);
+}
+.toolbar-icon-entity-user-collection:before {
+  background-image: url(../../images/core/icons/787878/people.svg);
+}
+.toolbar-icon-entity-user-collection:active:before,
+.toolbar-icon-entity-user-collection.is-active:before {
+  background-image: url(../../images/core/icons/000000/people.svg);
+}
+.toolbar-icon-system-modules-list:before {
+  background-image: url(../../images/core/icons/787878/puzzlepiece.svg);
+}
+.toolbar-icon-system-modules-list:active:before,
+.toolbar-icon-system-modules-list.is-active:before {
+  background-image: url(../../images/core/icons/000000/puzzlepiece.svg);
+}
+.toolbar-icon-system-admin-config:before {
+  background-image: url(../../images/core/icons/787878/wrench.svg);
+}
+.toolbar-icon-system-admin-config:active:before,
+.toolbar-icon-system-admin-config.is-active:before {
+  background-image: url(../../images/core/icons/000000/wrench.svg);
+}
+.toolbar-icon-system-admin-reports:before {
+  background-image: url(../../images/core/icons/787878/barchart.svg);
+}
+.toolbar-icon-system-admin-reports:active:before,
+.toolbar-icon-system-admin-reports.is-active:before {
+  background-image: url(../../images/core/icons/000000/barchart.svg);
+}
+.toolbar-icon-help-main:before {
+  background-image: url(../../images/core/icons/787878/questionmark-disc.svg);
+}
+.toolbar-icon-help-main:active:before,
+.toolbar-icon-help-main.is-active:before {
+  background-image: url(../../images/core/icons/000000/questionmark-disc.svg);
+}
+
+@media only screen and (min-width: 16.5em) {
+  .toolbar .toolbar-bar .toolbar-tab > .toolbar-icon {
+    width: 4em;
+    margin-right: 0;
+    margin-left: 0;
+    padding-right: 0;
+    padding-left: 0;
+    text-indent: -9999px;
+  }
+  .toolbar .toolbar-bar .toolbar-tab > .toolbar-icon:before {
+    left: 0; /* LTR */
+    width: 100%;
+    background-size: 42% auto;
+  }
+  .no-svg .toolbar .toolbar-bar .toolbar-tab > .toolbar-icon:before {
+    background-size: auto auto;
+  }
+  [dir="rtl"] .toolbar .toolbar-bar .toolbar-tab > .toolbar-icon:before {
+    right: 0;
+    left: auto;
+  }
+}
+
+@media only screen and (min-width: 36em) {
+  .toolbar .toolbar-bar .toolbar-tab > .toolbar-icon {
+    width: auto;
+    padding-right: 1.3333em; /* LTR */
+    padding-left: 2.75em; /* LTR */
+    text-indent: 0;
+    background-position: left center; /* LTR */
+  }
+  [dir="rtl"] .toolbar .toolbar-bar .toolbar-tab > .toolbar-icon {
+    padding-right: 2.75em;
+    padding-left: 1.3333em;
+    background-position: right center;
+  }
+  .toolbar .toolbar-bar .toolbar-tab > .toolbar-icon:before {
+    left: 0.6667em; /* LTR */
+    width: 20px;
+    background-size: 100% auto;
+  }
+  .no-svg .toolbar .toolbar-bar .toolbar-tab > .toolbar-icon:before {
+    background-size: auto auto;
+  }
+  [dir="rtl"] .toolbar .toolbar-bar .toolbar-tab > .toolbar-icon:before {
+    right: 0.6667em;
+    left: 0;
+  }
+}
+
+/**
+ *  Accessibility/focus
+ */
+.toolbar-tab a:focus {
+  text-decoration: underline;
+  outline: none;
+}
+.toolbar-lining button:focus {
+  outline: none;
+}
+.toolbar-tray-horizontal a:focus,
+.toolbar-box a:focus {
+  outline: none;
+  background-color: #f5f5f5;
+}
+.toolbar-box a:hover:focus {
+  text-decoration: underline;
+}
+.toolbar .toolbar-icon.toolbar-handle:focus {
+  outline: none;
+  background-color: #f5f5f5;
+}
+
+/**
+ * Handle.
+ */
+.toolbar .toolbar-icon.toolbar-handle {
+  width: 4em;
+  text-indent: -9999px;
+}
+.toolbar .toolbar-icon.toolbar-handle:before {
+  left: 1.6667em; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-icon.toolbar-handle:before {
+  right: 1.6667em;
+  left: auto;
+}
+.toolbar .toolbar-icon.toolbar-handle:before {
+  background-image: url(../../images/core/icons/5181c6/chevron-disc-down.svg);
+}
+.toolbar .toolbar-icon.toolbar-handle.open:before {
+  background-image: url(../../images/core/icons/787878/chevron-disc-up.svg);
+}
+.toolbar .toolbar-menu .toolbar-menu .toolbar-icon.toolbar-handle:before {
+  background-image: url(../../images/core/icons/5181c6/twistie-down.svg);
+  background-size: 75%;
+}
+.toolbar .toolbar-menu .toolbar-menu .toolbar-icon.toolbar-handle.open:before {
+  background-image: url(../../images/core/icons/787878/twistie-up.svg);
+  background-size: 75%;
+}
+.toolbar .toolbar-icon-escape-admin:before {
+  background-image: url(../../images/core/icons/bebebe/chevron-disc-left.svg);
+}
+[dir="rtl"] .toolbar .toolbar-icon-escape-admin:before {
+  background-image: url(../../images/core/icons/bebebe/chevron-disc-right.svg);
+}
+/**
+ * Orientation toggle.
+ */
+.toolbar .toolbar-toggle-orientation button {
+  width: 39px;
+  height: 39px;
+  padding: 0;
+  text-indent: -999em;
+}
+.toolbar .toolbar-toggle-orientation button:before {
+  right: 0;
+  left: 0;
+  margin: 0 auto;
+}
+[dir="rtl"] .toolbar .toolbar-toggle-orientation .toolbar-icon {
+  padding: 0;
+}
+/**
+ * In order to support a hover effect on the SVG images, while also supporting
+ * RTL text direction and no SVG support, this little icon requires some very
+ * specific targeting, setting and unsetting.
+ */
+.toolbar .toolbar-toggle-orientation [value="vertical"]:before {
+  background-image: url(../../images/core/icons/bebebe/push-left.svg); /* LTR */
+}
+.toolbar .toolbar-toggle-orientation [value="vertical"]:hover:before,
+.toolbar .toolbar-toggle-orientation [value="vertical"]:focus:before {
+  background-image: url(../../images/core/icons/787878/push-left.svg); /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-toggle-orientation [value="vertical"]:before {
+  background-image: url(../../images/core/icons/bebebe/push-right.svg);
+}
+[dir="rtl"] .toolbar .toolbar-toggle-orientation [value="vertical"]:hover:before,
+[dir="rtl"] .toolbar .toolbar-toggle-orientation [value="vertical"]:focus:before {
+  background-image: url(../../images/core/icons/787878/push-right.svg);
+}
+.toolbar .toolbar-toggle-orientation [value="horizontal"]:before {
+  background-image: url(../../images/core/icons/bebebe/push-up.svg);
+}
+.toolbar .toolbar-toggle-orientation [value="horizontal"]:hover:before,
+.toolbar .toolbar-toggle-orientation [value="horizontal"]:focus:before {
+  background-image: url(../../images/core/icons/787878/push-up.svg);
+}
diff --git a/core/themes/stable9/css/toolbar/toolbar.menu.css b/core/themes/stable9/css/toolbar/toolbar.menu.css
new file mode 100644
index 0000000000..e35d0adc2d
--- /dev/null
+++ b/core/themes/stable9/css/toolbar/toolbar.menu.css
@@ -0,0 +1,118 @@
+/**
+ * @file toolbar.menu.css
+ */
+.toolbar .toolbar-menu,
+[dir="rtl"] .toolbar .toolbar-menu {
+  margin: 0;
+  padding: 0;
+  list-style: none;
+}
+.toolbar .toolbar-box {
+  position: relative;
+  display: block;
+  width: auto;
+  line-height: 1em; /* this prevents the value "normal" from being returned as the line-height */
+}
+
+/**
+ * Hidden vertical toolbar sub-menus by default.
+ */
+.toolbar .toolbar-tray-vertical .toolbar-menu ul {
+  display: none;
+}
+
+/**
+ * Hidden horizontal toolbar handle icon.
+ */
+.toolbar .toolbar-tray-horizontal .toolbar-menu .toolbar-handle {
+  display: none;
+}
+/**
+ * Hidden toolbar sub-menus by default.
+ */
+.toolbar-tray-open .toolbar-menu .menu-item--expanded ul {
+  display: none;
+}
+.toolbar .toolbar-tray-vertical li.open > ul {
+  display: block; /* Show the sub-menus */
+}
+.toolbar .toolbar-tray-vertical .toolbar-handle + a {
+  margin-right: 3em; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-tray-vertical .toolbar-handle + a {
+  margin-right: 0;
+  margin-left: 3em;
+}
+.toolbar .toolbar-tray .menu-item--active-trail > .toolbar-box a,
+.toolbar .toolbar-tray a.is-active {
+  color: #000;
+  font-weight: bold;
+}
+
+/* ----- Toolbar menu tray for viewports less than 320px ------ */
+@media screen and (max-width: 319px) {
+  .toolbar .toolbar-tray-vertical.is-active {
+    width: 100%;
+  }
+}
+
+/**
+ * Items.
+ */
+.toolbar .level-2 > ul {
+  border-top-color: #e5e5e5;
+  border-bottom-color: #ccc;
+  background-color: #fafafa;
+}
+.toolbar .level-3 > ul {
+  border-top-color: #ddd;
+  border-bottom-color: #c5c5c5;
+  background-color: #f5f5f5;
+}
+.toolbar .level-4 > ul {
+  border-top-color: #d5d5d5;
+  border-bottom-color: #bbb;
+  background-color: #eee;
+}
+.toolbar .level-5 > ul {
+  border-top-color: #ccc;
+  border-bottom-color: #b5b5b5;
+  background-color: #e5e5e5;
+}
+.toolbar .level-6 > ul {
+  border-top-color: #c5c5c5;
+  border-bottom-color: #aaa;
+  background-color: #eee;
+}
+.toolbar .level-7 > ul {
+  border-top-color: #ccc;
+  border-bottom-color: #b5b5b5;
+  background-color: #fafafa;
+}
+.toolbar .level-8 > ul {
+  border-top-color: #ddd;
+  border-bottom-color: #ccc;
+  background-color: #ddd;
+}
+
+/**
+ * Handle.
+ */
+.toolbar .toolbar-handle:hover {
+  cursor: pointer;
+}
+.toolbar .toolbar-icon.toolbar-handle {
+  position: absolute;
+  z-index: 1;
+  top: 0;
+  right: 0; /* LTR */
+  bottom: 0;
+  display: block;
+  height: 100%;
+  padding: 0;
+}
+[dir="rtl"] .toolbar .toolbar-icon.toolbar-handle {
+  right: auto;
+  left: 0;
+  padding: 0;
+}
diff --git a/core/themes/stable9/css/toolbar/toolbar.module.css b/core/themes/stable9/css/toolbar/toolbar.module.css
new file mode 100644
index 0000000000..aad54b0a0e
--- /dev/null
+++ b/core/themes/stable9/css/toolbar/toolbar.module.css
@@ -0,0 +1,298 @@
+/**
+ * @file toolbar.module.css
+ *
+ *
+ * Aggressive resets so we can achieve a consistent look in hostile CSS
+ * environments.
+ */
+#toolbar-administration,
+#toolbar-administration * {
+  box-sizing: border-box;
+}
+#toolbar-administration {
+  margin: 0;
+  padding: 0;
+  vertical-align: baseline;
+  font-size: small;
+  line-height: 1;
+}
+
+@media print {
+  #toolbar-administration {
+    display: none;
+  }
+}
+.toolbar-loading #toolbar-administration {
+  overflow: hidden;
+}
+/**
+ * Very specific overrides for Drupal system CSS.
+ */
+.toolbar li,
+.toolbar .item-list,
+.toolbar .item-list li,
+.toolbar .menu-item,
+.toolbar .menu-item--expanded {
+  list-style-type: none;
+  list-style-image: none;
+}
+.toolbar .menu-item {
+  padding-top: 0;
+}
+.toolbar .toolbar-bar .toolbar-tab,
+.toolbar .menu-item {
+  display: block;
+}
+.toolbar .toolbar-bar .toolbar-tab.hidden {
+  display: none;
+}
+.toolbar a {
+  display: block;
+  line-height: 1;
+}
+
+/**
+ * Administration menu.
+ */
+.toolbar .toolbar-bar,
+.toolbar .toolbar-tray {
+  position: relative;
+  z-index: 1250;
+}
+.toolbar-horizontal .toolbar-tray {
+  position: fixed;
+  left: 0;
+  width: 100%;
+}
+/* Position the admin toolbar absolutely when the configured standard breakpoint
+ * is active. The toolbar container, that contains the bar and the trays, is
+ * position absolutely so that it scrolls with the page. Otherwise, on smaller
+ * screens, the components of the admin toolbar are positioned statically. */
+.toolbar-oriented .toolbar-bar {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+}
+.toolbar-oriented .toolbar-tray {
+  position: absolute;
+  right: 0;
+  left: 0;
+}
+/* .toolbar-loading is required by toolbar JavaScript to pre-render markup
+ * style to avoid extra reflow & flicker. */
+@media (min-width: 61em) {
+  .toolbar-loading.toolbar-horizontal .toolbar .toolbar-bar .toolbar-tab:last-child .toolbar-tray {
+    position: relative;
+    z-index: -999;
+    display: block;
+    visibility: hidden;
+    width: 1px;
+  }
+  .toolbar-loading.toolbar-horizontal .toolbar .toolbar-bar .toolbar-tab:last-child .toolbar-tray .toolbar-lining {
+    width: 999em;
+  }
+  .toolbar-loading.toolbar-horizontal .toolbar .toolbar-bar .home-toolbar-tab + .toolbar-tab .toolbar-tray {
+    display: block;
+  }
+}
+
+/* Layer the bar just above the trays and above contextual link triggers. */
+.toolbar-oriented .toolbar-bar {
+  z-index: 502;
+}
+/* Position the admin toolbar fixed when the configured standard breakpoint is
+ * active. */
+body.toolbar-fixed .toolbar-oriented .toolbar-bar {
+  position: fixed;
+}
+/* When the configured narrow breakpoint is active, the toolbar is sized to wrap
+ * around the trays in order to provide a context for scrolling tray content
+ * that is taller than the viewport. */
+body.toolbar-tray-open.toolbar-fixed.toolbar-vertical .toolbar-oriented {
+  bottom: 0;
+  width: 240px;
+  width: 15rem;
+}
+
+/* Present the admin toolbar tabs horizontally as a default on user agents that
+ * do not understand media queries or on user agents where JavaScript is
+ * disabled. */
+.toolbar-loading.toolbar-horizontal .toolbar .toolbar-tray .toolbar-menu > li,
+.toolbar .toolbar-bar .toolbar-tab,
+.toolbar .toolbar-tray-horizontal li {
+  float: left; /* LTR */
+}
+[dir="rtl"] .toolbar-loading.toolbar-horizontal .toolbar .toolbar-tray .toolbar-menu > li,
+[dir="rtl"] .toolbar .toolbar-bar .toolbar-tab,
+[dir="rtl"] .toolbar .toolbar-tray-horizontal li {
+  float: right;
+}
+/* Present the admin toolbar tabs vertically by default on user agents that
+ * that understand media queries. This will be the small screen default. */
+@media only screen {
+  .toolbar .toolbar-bar .toolbar-tab,
+  .toolbar .toolbar-tray-horizontal li {
+    float: none; /* LTR */
+  }
+  [dir="rtl"] .toolbar .toolbar-bar .toolbar-tab,
+  [dir="rtl"] .toolbar .toolbar-tray-horizontal li {
+    float: none;
+  }
+}
+/* This min-width media query is meant to provide basic horizontal layout to
+ * the main menu tabs when JavaScript is disabled on user agents that understand
+ * media queries. */
+@media (min-width: 16.5em) {
+  .toolbar .toolbar-bar .toolbar-tab,
+  .toolbar .toolbar-tray-horizontal li {
+    float: left; /* LTR */
+  }
+  [dir="rtl"] .toolbar .toolbar-bar .toolbar-tab,
+  [dir="rtl"] .toolbar .toolbar-tray-horizontal li {
+    float: right;
+  }
+}
+/* Present the admin toolbar tabs horizontally when the configured narrow
+ * breakpoint is active. */
+.toolbar-oriented .toolbar-bar .toolbar-tab,
+.toolbar-oriented .toolbar-tray-horizontal li {
+  float: left; /* LTR */
+}
+[dir="rtl"] .toolbar-oriented .toolbar-bar .toolbar-tab,
+[dir="rtl"] .toolbar-oriented .toolbar-tray-horizontal li {
+  float: right;
+}
+
+/**
+ * Toolbar tray.
+ */
+.toolbar .toolbar-tray {
+  z-index: 501;
+  display: none;
+}
+.toolbar-oriented .toolbar-tray-vertical {
+  position: absolute;
+  left: -100%; /* LTR */
+  width: 240px;
+  width: 15rem;
+}
+[dir="rtl"] .toolbar-oriented .toolbar-tray-vertical {
+  right: -100%;
+  left: auto;
+}
+.toolbar .toolbar-tray-vertical > .toolbar-lining {
+  min-height: 100%;
+}
+.toolbar .toolbar-tray-vertical > .toolbar-lining:before {
+  width: 100%;
+}
+.toolbar-oriented .toolbar-tray-vertical > .toolbar-lining:before {
+  position: fixed;
+  z-index: -1;
+  top: 0;
+  bottom: 0;
+  left: 0; /* LTR */
+  display: block;
+  width: 240px;
+  width: 14rem;
+  content: "";
+}
+[dir="rtl"] .toolbar .toolbar-tray-vertical > .toolbar-lining:before {
+  right: 0;
+  left: auto;
+}
+/* Layer the links just above the toolbar-tray. */
+.toolbar .toolbar-bar .toolbar-tab > .toolbar-icon {
+  position: relative;
+  z-index: 502;
+}
+/* Hide secondary menus when the tray is horizontal. */
+.toolbar-oriented .toolbar-tray-horizontal .menu-item ul {
+  display: none;
+}
+/* When the configured standard breakpoint is active and the tray is in a
+ * vertical position, the tray does not scroll with the page. The contents of
+ * the tray scroll within the confines of the viewport.
+ */
+.toolbar .toolbar-tray-vertical.is-active,
+body.toolbar-fixed .toolbar .toolbar-tray-vertical {
+  position: fixed;
+  overflow-x: hidden;
+  overflow-y: auto;
+  height: 100%;
+}
+.toolbar .toolbar-tray.is-active {
+  display: block;
+}
+/* Bring the tray into the viewport. By default it is just off-screen. */
+.toolbar-oriented .toolbar-tray-vertical.is-active {
+  left: 0; /* LTR */
+}
+[dir="rtl"] .toolbar-oriented .toolbar-tray-vertical.is-active {
+  right: 0;
+  left: auto;
+}
+/* When the configured standard breakpoint is active, the tray appears to push
+ * the page content away from the edge of the viewport. */
+body.toolbar-tray-open.toolbar-vertical.toolbar-fixed {
+  margin-left: 240px; /* LTR */
+  margin-left: 15rem; /* LTR */
+}
+
+@media print {
+  body.toolbar-tray-open.toolbar-vertical.toolbar-fixed {
+    margin-left: 0;
+  }
+}
+[dir="rtl"] body.toolbar-tray-open.toolbar-vertical.toolbar-fixed {
+  margin-right: 240px;
+  margin-right: 15rem;
+  margin-left: auto;
+}
+
+@media print {
+  [dir="rtl"] body.toolbar-tray-open.toolbar-vertical.toolbar-fixed {
+    margin-right: 0;
+  }
+}
+/**
+ * ToolBar tray orientation toggle.
+ */
+/* Hide the orientation toggle when the configured narrow breakpoint is not
+ * active. */
+.toolbar .toolbar-tray .toolbar-toggle-orientation {
+  display: none;
+}
+/* Show the orientation toggle when the configured narrow breakpoint is
+ * active. */
+.toolbar-oriented .toolbar-tray .toolbar-toggle-orientation {
+  display: block;
+}
+.toolbar-oriented .toolbar-tray-horizontal .toolbar-toggle-orientation {
+  position: absolute;
+  top: auto;
+  right: 0; /* LTR */
+  bottom: 0;
+}
+[dir="rtl"] .toolbar-oriented .toolbar-tray-horizontal .toolbar-toggle-orientation {
+  right: auto;
+  left: 0;
+}
+.toolbar-oriented .toolbar-tray-vertical .toolbar-toggle-orientation {
+  float: right; /* LTR */
+  width: 100%;
+}
+[dir="rtl"] .toolbar-oriented .toolbar-tray-vertical .toolbar-toggle-orientation {
+  float: left;
+}
+
+/**
+ * Toolbar home button toggle.
+ */
+.toolbar .toolbar-bar .home-toolbar-tab {
+  display: none;
+}
+.path-admin .toolbar-bar .home-toolbar-tab {
+  display: block;
+}
diff --git a/core/themes/stable9/css/toolbar/toolbar.theme.css b/core/themes/stable9/css/toolbar/toolbar.theme.css
new file mode 100644
index 0000000000..0416c056ad
--- /dev/null
+++ b/core/themes/stable9/css/toolbar/toolbar.theme.css
@@ -0,0 +1,168 @@
+/**
+ * @file toolbar.theme.css
+ */
+.toolbar {
+  font-family: "Source Sans Pro", "Lucida Grande", Verdana, sans-serif;
+  /* Set base font size to 13px based on root ems. */
+  font-size: 0.8125rem;
+  -moz-tap-highlight-color: rgba(0, 0, 0, 0);
+  -o-tap-highlight-color: rgba(0, 0, 0, 0);
+  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+  tap-highlight-color: rgba(0, 0, 0, 0);
+  -moz-touch-callout: none;
+  -o-touch-callout: none;
+  -webkit-touch-callout: none;
+  touch-callout: none;
+}
+.toolbar .toolbar-item {
+  padding: 1em 1.3333em;
+  cursor: pointer;
+  text-decoration: none;
+  line-height: 1em;
+}
+.toolbar .toolbar-item:hover,
+.toolbar .toolbar-item:focus {
+  text-decoration: underline;
+}
+
+/**
+ * Toolbar bar.
+ */
+.toolbar .toolbar-bar {
+  color: #ddd;
+  background-color: #0f0f0f;
+  box-shadow: -1px 0 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-bar {
+  box-shadow: 1px 0 3px 1px rgba(0, 0, 0, 0.3333);
+}
+.toolbar .toolbar-bar .toolbar-item {
+  color: #fff;
+}
+.toolbar .toolbar-bar .toolbar-tab > .toolbar-item {
+  font-weight: bold;
+}
+.toolbar .toolbar-bar .toolbar-tab > .toolbar-item:hover,
+.toolbar .toolbar-bar .toolbar-tab > .toolbar-item:focus {
+  background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.125) 20%, transparent 200%);
+  background-image: linear-gradient(rgba(255, 255, 255, 0.125) 20%, transparent 200%);
+}
+.toolbar .toolbar-bar .toolbar-tab > .toolbar-item.is-active {
+  background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%);
+  background-image: linear-gradient(rgba(255, 255, 255, 0.25) 20%, transparent 200%);
+}
+
+/**
+ * Toolbar tray.
+ */
+.toolbar .toolbar-tray {
+  background-color: #fff;
+}
+.toolbar-horizontal .toolbar-tray > .toolbar-lining {
+  padding-right: 5em; /* LTR */
+}
+[dir="rtl"] .toolbar-horizontal .toolbar-tray > .toolbar-lining {
+  padding-right: 0;
+  padding-left: 5em;
+}
+.toolbar .toolbar-tray-vertical {
+  border-right: 1px solid #aaa; /* LTR */
+  background-color: #f5f5f5;
+  box-shadow: -1px 0 5px 2px rgba(0, 0, 0, 0.3333); /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-tray-vertical {
+  border-right: 0 none;
+  border-left: 1px solid #aaa;
+  box-shadow: 1px 0 5px 2px rgba(0, 0, 0, 0.3333);
+}
+.toolbar-horizontal .toolbar-tray {
+  border-bottom: 1px solid #aaa;
+  box-shadow: -2px 1px 3px 1px rgba(0, 0, 0, 0.3333); /* LTR */
+}
+[dir="rtl"] .toolbar-horizontal .toolbar-tray {
+  box-shadow: 2px 1px 3px 1px rgba(0, 0, 0, 0.3333);
+}
+.toolbar .toolbar-tray-horizontal .toolbar-tray {
+  background-color: #f5f5f5;
+}
+.toolbar-tray a {
+  padding: 1em 1.3333em;
+  cursor: pointer;
+  text-decoration: none;
+  color: #565656;
+}
+.toolbar-tray a:hover,
+.toolbar-tray a:active,
+.toolbar-tray a:focus,
+.toolbar-tray a.is-active {
+  text-decoration: underline;
+  color: #000;
+}
+.toolbar .toolbar-menu {
+  background-color: #fff;
+}
+.toolbar-horizontal .toolbar-tray .menu-item + .menu-item {
+  border-left: 1px solid #ddd; /* LTR */
+}
+[dir="rtl"] .toolbar-horizontal .toolbar-tray .menu-item + .menu-item {
+  border-right: 1px solid #ddd;
+  border-left: 0 none;
+}
+.toolbar-horizontal .toolbar-tray .menu-item:last-child {
+  border-right: 1px solid #ddd; /* LTR */
+}
+[dir="rtl"] .toolbar-horizontal .toolbar-tray .menu-item:last-child {
+  border-left: 1px solid #ddd;
+}
+.toolbar .toolbar-tray-vertical .menu-item + .menu-item {
+  border-top: 1px solid #ddd;
+}
+.toolbar .toolbar-tray-vertical .menu-item:last-child {
+  border-bottom: 1px solid #ddd;
+}
+.toolbar .toolbar-tray-vertical .menu-item .menu-item {
+  border: 0 none;
+}
+.toolbar .toolbar-tray-vertical .toolbar-menu ul ul {
+  border-top: 1px solid #ddd;
+  border-bottom: 1px solid #ddd;
+}
+.toolbar .toolbar-tray-vertical .menu-item:last-child > ul {
+  border-bottom: 0;
+}
+.toolbar .toolbar-tray-vertical .toolbar-menu .toolbar-menu .toolbar-menu .toolbar-menu {
+  margin-left: 0.25em; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-tray-vertical .toolbar-menu .toolbar-menu .toolbar-menu .toolbar-menu {
+  margin-right: 0.25em;
+  margin-left: 0;
+}
+.toolbar .toolbar-menu .toolbar-menu a {
+  color: #434343;
+}
+
+/**
+ * Orientation toggle.
+ */
+.toolbar .toolbar-toggle-orientation {
+  height: 100%;
+  padding: 0;
+  background-color: #f5f5f5;
+}
+.toolbar-horizontal .toolbar-tray .toolbar-toggle-orientation {
+  border-left: 1px solid #c9c9c9; /* LTR */
+}
+[dir="rtl"] .toolbar-horizontal .toolbar-tray .toolbar-toggle-orientation {
+  border-right: 1px solid #c9c9c9;
+  border-left: 0 none;
+}
+.toolbar .toolbar-toggle-orientation > .toolbar-lining {
+  float: right; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-toggle-orientation > .toolbar-lining {
+  float: left;
+}
+.toolbar .toolbar-toggle-orientation button {
+  display: inline-block;
+  cursor: pointer;
+}
diff --git a/core/themes/stable9/css/tour/tour.module.css b/core/themes/stable9/css/tour/tour.module.css
new file mode 100644
index 0000000000..16c849ab04
--- /dev/null
+++ b/core/themes/stable9/css/tour/tour.module.css
@@ -0,0 +1,143 @@
+/**
+ * @file
+ * Styling for tour module.
+ */
+
+/* Tab appearance. */
+.toolbar .toolbar-bar .tour-toolbar-tab.toolbar-tab {
+  float: right; /* LTR */
+}
+[dir="rtl"] .toolbar .toolbar-bar .tour-toolbar-tab.toolbar-tab {
+  float: left;
+}
+
+/* Override placement of the tour progress indicator. */
+.tour-progress {
+  position: absolute;
+  right: 20px; /* LTR */
+  bottom: 20px;
+}
+[dir="rtl"] .tour-progress {
+  right: auto;
+  left: 20px;
+}
+
+/* Default styles for the container */
+.joyride-tip-guide {
+  position: absolute;
+  z-index: 101;
+  top: 0;
+  left: 0;
+  display: none;
+  width: 300px;
+  background: #fff;
+}
+
+@media only screen and (max-width: 767px) {
+  .joyride-tip-guide {
+    left: 2.5%;
+    width: 85%;
+  }
+}
+
+.joyride-content-wrapper {
+  position: relative;
+  padding: 20px 50px 20px 20px;  /* LTR */
+}
+[dir="rtl"] .joyride-content-wrapper {
+  padding: 20px 20px 20px 50px;
+}
+
+/* Add a little css triangle pip, older browser just miss out on the fanciness of it. */
+.joyride-tip-guide .joyride-nub {
+  position: absolute;
+  left: 22px;
+  display: block;
+  width: 0;
+  height: 0;
+}
+
+.joyride-tip-guide .joyride-nub.top {
+  top: -28px;
+  bottom: auto;
+}
+
+.joyride-tip-guide .joyride-nub.bottom {
+  bottom: -28px;
+}
+
+.joyride-tip-guide .joyride-nub.right {
+  top: 22px;
+  right: -28px;
+  bottom: auto;
+  left: auto;
+}
+
+.joyride-tip-guide .joyride-nub.left {
+  top: 22px;
+  right: auto;
+  bottom: auto;
+  left: -28px;
+}
+
+.joyride-tip-guide .joyride-nub.top-right {
+  top: -28px;
+  right: 28px;
+  bottom: auto;
+  left: auto;
+}
+
+.joyride-tip-guide .tour-tip-label {
+  margin-top: 0;
+}
+
+.joyride-tip-guide p {
+  margin: 0 0 1.4em;
+}
+
+.joyride-timer-indicator-wrap {
+  position: absolute;
+  right: 17px;
+  bottom: 16px;
+  width: 50px;
+  height: 3px;
+}
+.joyride-timer-indicator {
+  display: block;
+  width: 0;
+  height: inherit;
+}
+
+.joyride-close-tip {
+  position: absolute;
+  top: 20px;
+  right: 20px; /* LTR */
+  line-height: 1em;
+}
+[dir="rtl"] .joyride-close-tip {
+  right: auto;
+  left: 20px;
+}
+
+.joyride-modal-bg {
+  position: fixed;
+  z-index: 100;
+  top: 0;
+  left: 0;
+  display: none;
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+}
+
+.joyride-expose-wrapper {
+  position: absolute;
+  z-index: 102;
+}
+
+.joyride-expose-cover {
+  position: absolute;
+  z-index: 10000;
+  top: 0;
+  left: 0;
+}
diff --git a/core/themes/stable9/css/update/update.admin.theme.css b/core/themes/stable9/css/update/update.admin.theme.css
new file mode 100644
index 0000000000..785da9a09d
--- /dev/null
+++ b/core/themes/stable9/css/update/update.admin.theme.css
@@ -0,0 +1,63 @@
+/**
+ * @file
+ * Styles used by the Update Manager module.
+ */
+
+.project-update__title {
+  font-size: 110%;
+  font-weight: bold;
+}
+.project-update__status {
+  float: right; /* LTR */
+  font-size: 110%;
+}
+[dir="rtl"] .project-update__status {
+  float: left;
+}
+.project-update__status--not-supported {
+  float: left; /* LTR */
+}
+[dir="rtl"] .project-update__status--not-supported {
+  float: right;
+}
+.project-update__status--security-error {
+  color: #970f00;
+  font-weight: bold;
+}
+
+.project-update__status-icon {
+  padding-left: 0.5em; /* LTR */
+}
+[dir="rtl"] .project-update__status-icon {
+  padding-right: 0.5em;
+  padding-left: 0;
+}
+.project-update__details {
+  padding: 1em 1em 0.25em 1em;
+}
+
+.project-update__version {
+  padding: 1em 0;
+}
+.project-update__version-date {
+  white-space: nowrap;
+}
+.project-update__version-details {
+  padding-right: 0.5em; /* LTR */
+}
+[dir="rtl"] .project-update__version-details {
+  padding-left: 0.5em;
+  direction: ltr; /* Version numbers should always be LTR. */
+}
+.project-update__version-links {
+  padding-right: 1em; /* LTR */
+  list-style-type: none;
+  text-align: right; /* LTR */
+}
+[dir="rtl"] .project-update__version-links {
+  padding-left: 1em;
+  text-align: left;
+}
+.project-update__version--recommended-strong .project-update__version-title {
+  font-weight: bold;
+}
diff --git a/core/themes/stable9/css/user/user.admin.css b/core/themes/stable9/css/user/user.admin.css
new file mode 100644
index 0000000000..ad5f95a59a
--- /dev/null
+++ b/core/themes/stable9/css/user/user.admin.css
@@ -0,0 +1,22 @@
+/**
+ * @file
+ * Admin styling for the User module.
+ */
+
+/* Permissions page */
+.permissions .module {
+  font-weight: bold;
+}
+.permissions .permission {
+  padding-left: 1.5em; /* LTR */
+}
+[dir="rtl"] .permissions .permission {
+  padding-right: 1.5em;
+  padding-left: 0;
+}
+
+/* Account settings */
+.user-admin-settings .details-description {
+  padding-bottom: 0.5em;
+  font-size: 0.85em;
+}
diff --git a/core/themes/stable9/css/user/user.icons.admin.css b/core/themes/stable9/css/user/user.icons.admin.css
new file mode 100644
index 0000000000..f8546862bf
--- /dev/null
+++ b/core/themes/stable9/css/user/user.icons.admin.css
@@ -0,0 +1,15 @@
+/**
+ * @file
+ * Styling for the user module icons.
+ */
+
+/**
+ * Toolbar tab icon.
+ */
+.toolbar-bar .toolbar-icon-user:before {
+  background-image: url(../../images/core/icons/bebebe/person.svg);
+}
+.toolbar-bar .toolbar-icon-user:active:before,
+.toolbar-bar .toolbar-icon-user.is-active:before {
+  background-image: url(../../images/core/icons/ffffff/person.svg);
+}
diff --git a/core/themes/stable9/css/user/user.module.css b/core/themes/stable9/css/user/user.module.css
new file mode 100644
index 0000000000..2a3e511d7b
--- /dev/null
+++ b/core/themes/stable9/css/user/user.module.css
@@ -0,0 +1,21 @@
+/**
+ * @file
+ * Module styling for user module.
+ */
+.password-strength__title,
+.password-strength__text {
+  display: inline;
+}
+.password-strength__meter {
+  height: 0.75em;
+  margin-top: 0.5em;
+  background-color: lightgray;
+}
+.password-strength__indicator {
+  width: 0;
+  height: 100%;
+  background-color: gray;
+}
+.password-confirm-match {
+  visibility: hidden;
+}
diff --git a/core/themes/stable9/css/views/views.module.css b/core/themes/stable9/css/views/views.module.css
new file mode 100644
index 0000000000..1ffb3bdb3f
--- /dev/null
+++ b/core/themes/stable9/css/views/views.module.css
@@ -0,0 +1,23 @@
+/* table style column align */
+.views-align-left {
+  text-align: left;
+}
+.views-align-right {
+  text-align: right;
+}
+.views-align-center {
+  text-align: center;
+}
+/* Grid style column align. */
+.views-view-grid .views-col {
+  float: left;
+}
+.views-view-grid .views-row {
+  float: left;
+  clear: both;
+  width: 100%;
+}
+/* Provide some space between display links. */
+.views-display-link + .views-display-link {
+  margin-left: 0.5em;
+}
diff --git a/core/themes/stable9/css/views_ui/views_ui.admin.css b/core/themes/stable9/css/views_ui/views_ui.admin.css
new file mode 100644
index 0000000000..2507d30657
--- /dev/null
+++ b/core/themes/stable9/css/views_ui/views_ui.admin.css
@@ -0,0 +1,208 @@
+/**
+ * @file
+ * The .admin.css file is intended to only contain positioning and size
+ * declarations. For example: display, position, float, clear, and overflow.
+ */
+
+.views-admin ul,
+.views-admin menu,
+.views-admin dir {
+  padding: 0;
+}
+.views-admin pre {
+  margin-top: 0;
+  margin-bottom: 0;
+  white-space: pre-wrap;
+}
+.views-left-25 {
+  float: left; /* LTR */
+  width: 25%;
+}
+[dir="rtl"] .views-left-25 {
+  float: right;
+}
+.views-left-30 {
+  float: left; /* LTR */
+  width: 30%;
+}
+[dir="rtl"] .views-left-30 {
+  float: right;
+}
+.views-left-40 {
+  float: left; /* LTR */
+  width: 40%;
+}
+[dir="rtl"] .views-left-40 {
+  float: right;
+}
+.views-left-50 {
+  float: left; /* LTR */
+  width: 50%;
+}
+[dir="rtl"] .views-left-50 {
+  float: right;
+}
+.views-left-75 {
+  float: left; /* LTR */
+  width: 75%;
+}
+[dir="rtl"] .views-left-75 {
+  float: right;
+}
+.views-right-50 {
+  float: right; /* LTR */
+  width: 50%;
+}
+[dir="rtl"] .views-right-50 {
+  float: left;
+}
+.views-right-60 {
+  float: right; /* LTR */
+  width: 60%;
+}
+[dir="rtl"] .views-right-60 {
+  float: left;
+}
+.views-right-70 {
+  float: right; /* LTR */
+  width: 70%;
+}
+[dir="rtl"] .views-right-70 {
+  float: left;
+}
+.views-group-box .form-item {
+  margin-right: 3px;
+  margin-left: 3px;
+}
+
+/*
+ * The attachment details section, its tabs for each section and the buttons
+ * to add a new section
+ */
+.views-displays {
+  clear: both;
+}
+
+/* The tabs that switch between sections */
+.views-displays .tabs {
+  overflow: visible;
+  margin: 0;
+  padding: 0;
+  border-bottom: 0 none;
+}
+.views-displays .tabs > li {
+  float: left; /* LTR */
+  padding: 0;
+  border-right: 0 none; /* LTR */
+}
+[dir="rtl"] .views-displays .tabs > li {
+  float: right;
+  border-right: 1px solid #bfbfbf;
+  border-left: 0 none;
+}
+.views-displays .tabs .open > a {
+  position: relative;
+  z-index: 51;
+}
+.views-displays .tabs .views-display-deleted-link {
+  text-decoration: line-through;
+}
+.views-display-deleted > details > summary,
+.views-display-deleted .details-wrapper > .views-ui-display-tab-bucket > *,
+.views-display-deleted .views-display-columns {
+  opacity: 0.25;
+}
+.views-display-disabled > details > summary,
+.views-display-disabled .details-wrapper > .views-ui-display-tab-bucket > *,
+.views-display-disabled .views-display-columns {
+  opacity: 0.5;
+}
+.views-display-tab .details-wrapper > .views-ui-display-tab-bucket .actions {
+  opacity: 1;
+}
+.views-displays .tabs .add {
+  position: relative;
+}
+.views-displays .tabs .action-list {
+  position: absolute;
+  z-index: 50;
+  top: 23px;
+  left: 0; /* LTR */
+  margin: 0;
+}
+[dir="rtl"] .views-displays .tabs .action-list {
+  right: 0;
+  left: auto;
+}
+.views-displays .tabs .action-list li {
+  display: block;
+}
+.views-display-columns .details-wrapper {
+  padding: 0;
+}
+.views-display-column {
+  box-sizing: border-box;
+}
+.views-display-columns > * {
+  margin-bottom: 2em;
+}
+
+@media screen and (min-width: 45em) { /* 720px */
+  .views-display-columns > * {
+    float: left; /* LTR */
+    width: 32%;
+    margin-bottom: 0;
+    margin-left: 2%; /* LTR */
+  }
+  [dir="rtl"] .views-display-columns > * {
+    float: right;
+    margin-right: 2%;
+    margin-left: 0;
+  }
+  .views-display-columns > *:first-child {
+    margin-left: 0; /* LTR */
+  }
+  [dir="rtl"] .views-display-columns > *:first-child {
+    margin-right: 0;
+  }
+}
+
+.views-ui-dialog .scroll {
+  overflow: auto;
+  padding: 1em;
+}
+.views-filterable-options-controls {
+  display: none;
+}
+.views-ui-dialog .views-filterable-options-controls {
+  display: inline;
+}
+
+/* Don't let the messages overwhelm the modal */
+.views-ui-dialog .views-messages {
+  overflow: auto;
+  max-height: 200px;
+}
+.views-display-setting .label,
+.views-display-setting .views-ajax-link {
+  float: left; /* LTR */
+}
+[dir="rtl"] .views-display-setting .label,
+[dir="rtl"] .views-display-setting .views-ajax-link {
+  float: right;
+}
+.form-item-options-value-all {
+  display: none;
+}
+.js-only {
+  display: none;
+}
+html.js .js-only {
+  display: inherit;
+}
+html.js span.js-only {
+  display: inline;
+}
+.js .views-edit-view .dropbutton-wrapper {
+  width: auto;
+}
diff --git a/core/themes/stable9/css/views_ui/views_ui.admin.theme.css b/core/themes/stable9/css/views_ui/views_ui.admin.theme.css
new file mode 100644
index 0000000000..770bc7894c
--- /dev/null
+++ b/core/themes/stable9/css/views_ui/views_ui.admin.theme.css
@@ -0,0 +1,850 @@
+/**
+ * @file
+ * The .admin.theme.css file is intended to contain presentation declarations
+ * including images, borders, colors, and fonts.
+ */
+
+.views-admin .links {
+  margin: 0;
+  list-style: none outside none;
+}
+.views-admin a:hover {
+  text-decoration: none;
+}
+.box-padding {
+  padding-right: 12px;
+  padding-left: 12px;
+}
+.box-margin {
+  margin: 12px 12px 0 12px;
+}
+.views-admin .icon {
+  width: 16px;
+  height: 16px;
+}
+.views-admin .icon,
+.views-admin .icon-text {
+  background-image: url(../../images/views_ui/sprites.png);
+  background-repeat: no-repeat;
+  background-attachment: scroll;
+  background-position: left top; /* LTR */
+}
+[dir="rtl"] .views-admin .icon,
+[dir="rtl"] .views-admin .icon-text {
+  background-position: right top;
+}
+.views-admin a.icon {
+  border: 1px solid #ddd;
+  border-radius: 4px;
+  background: linear-gradient(-90deg, #fff 0, #e8e8e8 100%) no-repeat, repeat-y;
+  box-shadow: 0 0 0 rgba(0, 0, 0, 0.3333) inset;
+}
+.views-admin a.icon:hover {
+  border-color: #d0d0d0;
+  box-shadow: 0 0 1px rgba(0, 0, 0, 0.3333) inset;
+}
+.views-admin a.icon:active {
+  border-color: #c0c0c0;
+}
+.views-admin span.icon {
+  position: relative;
+  float: left; /* LTR */
+}
+[dir="rtl"] .views-admin span.icon {
+  float: right;
+}
+.views-admin .icon.compact {
+  display: block;
+  overflow: hidden;
+  text-indent: -9999px;
+  direction: ltr;
+}
+
+/* Targets any element with an icon -> text combo */
+.views-admin .icon-text {
+  padding-left: 19px; /* LTR */
+}
+[dir="rtl"] .views-admin .icon-text {
+  padding-right: 19px;
+  padding-left: 0;
+}
+.views-admin .icon.linked {
+  background-position: center -153px;
+}
+.views-admin .icon.unlinked {
+  background-position: center -195px;
+}
+.views-admin .icon.add {
+  background-position: center 3px;
+}
+.views-admin a.icon.add {
+  background-position: center 3px, left top; /* LTR */
+}
+[dir="rtl"] .views-admin a.icon.add {
+  background-position: center 3px, right top;
+}
+.views-admin .icon.delete {
+  background-position: center -52px;
+}
+.views-admin a.icon.delete {
+  background-position: center -52px, left top; /* LTR */
+}
+[dir="rtl"] .views-admin a.icon.delete {
+  background-position: center -52px, right top;
+}
+.views-admin .icon.rearrange {
+  background-position: center -111px;
+}
+.views-admin a.icon.rearrange {
+  background-position: center -111px, left top; /* LTR */
+}
+[dir="rtl"] .views-admin a.icon.rearrange {
+  background-position: center -111px, right top;
+}
+.views-displays .tabs a:hover > .icon.add {
+  background-position: center -25px;
+}
+.views-displays .tabs .open a:hover > .icon.add {
+  background-position: center 3px;
+}
+details.box-padding {
+  border: none;
+}
+.views-admin details details {
+  margin-bottom: 0;
+}
+.form-item {
+  margin-top: 9px;
+  padding-top: 0;
+  padding-bottom: 0;
+}
+.form-type-checkbox {
+  margin-top: 6px;
+}
+.form-checkbox,
+.form-radio {
+  vertical-align: baseline;
+}
+
+.container-inline {
+  padding-top: 15px;
+  padding-bottom: 15px;
+}
+.container-inline > * + *,
+.container-inline .details-wrapper > * + * {
+  padding-left: 4px; /* LTR */
+}
+[dir="rtl"] .container-inline > * + *,
+[dir="rtl"] .container-inline .details-wrapper > * + * {
+  padding-right: 4px;
+  padding-left: 0;
+}
+.views-admin details details.container-inline {
+  margin-top: 1em;
+  margin-bottom: 1em;
+  padding-top: 0;
+}
+.views-admin details details.container-inline > .details-wrapper {
+  padding-bottom: 0;
+}
+/* Indent form elements so they're directly underneath the label of the checkbox that reveals them */
+.views-admin .form-type-checkbox + .form-wrapper {
+  margin-left: 16px; /* LTR */
+}
+[dir="rtl"] .views-admin .form-type-checkbox + .form-wrapper {
+  margin-right: 16px;
+  margin-left: 0;
+}
+
+/* Hide 'remove' checkboxes. */
+.views-remove-checkbox {
+  display: none;
+}
+
+/* sizes the labels of checkboxes and radio button to the height of the text */
+.views-admin .form-type-checkbox label,
+.views-admin .form-type-radio label {
+  line-height: 2;
+}
+.views-admin-dependent .form-item {
+  margin-top: 6px;
+  margin-bottom: 6px;
+}
+.views-ui-view-name h3 {
+  margin: 0.25em 0;
+  font-weight: bold;
+}
+.view-changed {
+  margin-bottom: 21px;
+}
+.views-admin .unit-title {
+  margin-top: 18px;
+  margin-bottom: 0;
+  font-size: 15px;
+  line-height: 1.6154;
+}
+.views-ui-view-displays ul {
+  margin-left: 0; /* LTR */
+  padding-left: 0; /* LTR */
+  list-style: none;
+}
+[dir="rtl"] .views-ui-view-displays ul {
+  margin-right: 0;
+  margin-left: inherit;
+  padding-right: 0;
+  padding-left: inherit;
+}
+
+/* These header classes are ambiguous and should be scoped to th elements */
+.views-ui-name {
+  width: 20%;
+}
+.views-ui-description {
+  width: 30%;
+}
+.views-ui-machine-name {
+  width: 15%;
+}
+.views-ui-displays {
+  width: 25%;
+}
+.views-ui-operations {
+  width: 10%;
+}
+
+/**
+ * I wish this didn't have to be so specific
+ */
+.form-item-description-enable + .form-item-description {
+  margin-top: 0;
+}
+.form-item-description-enable label {
+  font-weight: bold;
+}
+.form-item-page-create,
+.form-item-block-create {
+  margin-top: 13px;
+}
+.form-item-page-create label,
+.form-item-block-create label,
+.form-item-rest-export-create label {
+  font-weight: bold;
+}
+
+/* This makes the form elements after the "Display Format" label flow underneath the label */
+.form-item-page-style-style-plugin > label,
+.form-item-block-style-style-plugin > label {
+  display: block;
+}
+.views-attachment .options-set label {
+  font-weight: normal;
+}
+
+/* Styling for the form that allows views filters to be rearranged. */
+.group-populated {
+  display: none;
+}
+td.group-title {
+  font-weight: bold;
+}
+.views-ui-dialog td.group-title {
+  margin: 0;
+  padding: 0;
+}
+.views-ui-dialog td.group-title span {
+  display: block;
+  overflow: hidden;
+  height: 1px;
+}
+.group-message .form-submit,
+.views-remove-group-link,
+.views-add-group {
+  float: right; /* LTR */
+  clear: both;
+}
+[dir="rtl"] .group-message .form-submit,
+[dir="rtl"] .views-remove-group-link,
+[dir="rtl"] .views-add-group {
+  float: left;
+}
+.views-operator-label {
+  padding-left: 0.5em; /* LTR */
+  text-transform: uppercase;
+  font-weight: bold;
+  font-style: italic;
+}
+[dir="rtl"] .views-operator-label {
+  padding-right: 0.5em;
+  padding-left: 0;
+}
+.grouped-description,
+.exposed-description {
+  float: left; /* LTR */
+  padding-top: 3px;
+  padding-right: 10px; /* LTR */
+}
+[dir="rtl"] .grouped-description,
+[dir="rtl"] .exposed-description {
+  float: right;
+  padding-right: 0;
+  padding-left: 10px;
+}
+.views-displays {
+  padding-bottom: 36px;
+  border: 1px solid #ccc;
+}
+.views-display-top {
+  position: relative;
+  padding: 8px 8px 3px;
+  border-bottom: 1px solid #ccc;
+  background-color: #e1e2dc;
+}
+.views-display-top .tabs {
+  margin-right: 18em; /* LTR */
+}
+[dir="rtl"] .views-display-top .tabs {
+  margin-right: 0;
+  margin-left: 18em;
+}
+.views-display-top .tabs > li {
+  margin-right: 6px; /* LTR */
+  padding-left: 0; /* LTR */
+}
+[dir="rtl"] .views-display-top .tabs > li {
+  margin-right: 0.3em;
+  margin-left: 6px;
+  padding-right: 0;
+}
+.views-display-top .tabs > li:last-child {
+  margin-right: 0; /* LTR */
+}
+[dir="rtl"] .views-display-top .tabs > li:last-child {
+  margin-right: 0.3em;
+  margin-left: 0;
+}
+.form-edit .form-actions {
+  margin-top: 0;
+  padding: 8px 12px;
+  border-right: 1px solid #ccc;
+  border-bottom: 1px solid #ccc;
+  border-left: 1px solid #ccc;
+  background-color: #e1e2dc;
+}
+.views-displays .tabs.secondary {
+  margin-right: 200px; /* LTR */
+  border: 0;
+}
+[dir="rtl"] .views-displays .tabs.secondary {
+  margin-right: 0;
+  margin-left: 200px;
+}
+.views-displays .tabs.secondary li,
+.views-displays .tabs.secondary li.is-active {
+  width: auto;
+  padding: 0;
+  border: 0;
+  background: transparent;
+}
+.views-displays .tabs li.add ul.action-list li {
+  margin: 0;
+}
+.views-displays .tabs.secondary li {
+  margin: 0 5px 5px 6px; /* LTR */
+}
+[dir="rtl"] .views-displays .tabs.secondary li {
+  margin-right: 6px;
+  margin-left: 5px;
+}
+.views-displays .tabs.secondary .tabs__tab + .tabs__tab {
+  border-top: 0;
+}
+.views-displays .tabs li.tabs__tab:hover {
+  padding-left: 0; /* LTR */
+  border: 0;
+}
+[dir="rtl"] .views-displays .tabs li.tabs__tab:hover {
+  padding-right: 0;
+}
+.views-displays .tabs.secondary a {
+  display: inline-block;
+  padding: 3px 7px;
+  border: 1px solid #cbcbcb;
+  border-radius: 7px;
+  font-size: small;
+  line-height: 1.3333;
+}
+
+/* Display a red border if the display doesn't validate. */
+.views-displays .tabs li.is-active a.is-active.error,
+.views-displays .tabs .error {
+  padding: 1px 6px;
+  border: 2px solid #ed541d;
+}
+.views-displays .tabs a:focus {
+  text-decoration: underline;
+  outline: none;
+}
+.views-displays .tabs.secondary li a {
+  background-color: #fff;
+}
+.views-displays .tabs li a:hover,
+.views-displays .tabs li.is-active a,
+.views-displays .tabs li.is-active a.is-active {
+  color: #fff;
+  background-color: #555;
+}
+.views-displays .tabs .open > a {
+  position: relative;
+  border-bottom: 1px solid transparent;
+  background-color: #f1f1f1;
+}
+.views-displays .tabs .open > a:hover {
+  color: #0074bd;
+  background-color: #f1f1f1;
+}
+.views-displays .tabs .action-list li {
+  padding: 2px 9px;
+  border-width: 0 1px;
+  border-style: solid;
+  border-color: #cbcbcb;
+  background-color: #f1f1f1;
+}
+.views-displays .tabs .action-list li:first-child {
+  border-width: 1px 1px 0;
+}
+.views-displays .action-list li:last-child {
+  border-width: 0 1px 1px;
+}
+.views-displays .tabs .action-list li:last-child {
+  border-width: 0 1px 1px;
+}
+.views-displays .tabs .action-list input.form-submit {
+  margin: 0;
+  padding: 0;
+  border: medium none;
+  background: none repeat scroll 0 0 transparent;
+}
+.views-displays .tabs .action-list input.form-submit:hover {
+  box-shadow: none;
+}
+.views-displays .tabs .action-list li:hover {
+  background-color: #ddd;
+}
+.edit-display-settings {
+  margin: 12px 12px 0 12px;
+}
+.edit-display-settings-top.views-ui-display-tab-bucket {
+  position: relative;
+  margin: 0 0 15px 0;
+  padding-top: 4px;
+  padding-bottom: 4px;
+  border: 1px solid #f3f3f3;
+  line-height: 20px;
+}
+.views-display-column {
+  border: 1px solid #f3f3f3;
+}
+.views-display-column + .views-display-column {
+  margin-top: 0;
+}
+.view-preview-form .form-item-view-args,
+.view-preview-form .form-actions {
+  margin-top: 5px;
+}
+.view-preview-form .arguments-preview {
+  font-size: 1em;
+}
+.view-preview-form .arguments-preview,
+.view-preview-form .form-item-view-args {
+  margin-left: 10px; /* LTR */
+}
+[dir="rtl"] .view-preview-form .arguments-preview,
+[dir="rtl"] .view-preview-form .form-item-view-args {
+  margin-right: 10px;
+  margin-left: 0;
+}
+.view-preview-form .form-item-view-args label {
+  float: left; /* LTR */
+  height: 6ex;
+  margin-right: 0.75em; /* LTR */
+  font-weight: normal;
+}
+[dir="rtl"] .view-preview-form .form-item-view-args label {
+  float: right;
+  margin-right: 0.2em;
+  margin-left: 0.75em;
+}
+.form-item-live-preview,
+.form-item-view-args,
+.preview-submit-wrapper {
+  display: inline-block;
+}
+.form-item-live-preview,
+.view-preview-form .form-actions {
+  vertical-align: top;
+}
+
+@media screen and (min-width: 45em) { /* 720px */
+  .view-preview-form .form-type-textfield .description {
+    white-space: nowrap;
+  }
+}
+
+/* These are the individual "buckets," or boxes, inside the display settings area */
+.views-ui-display-tab-bucket {
+  position: relative;
+  margin: 0;
+  padding-top: 4px;
+  border-bottom: 1px solid #f3f3f3;
+  line-height: 20px;
+}
+.views-ui-display-tab-bucket:last-of-type {
+  border-bottom: none;
+}
+.views-ui-display-tab-bucket + .views-ui-display-tab-bucket {
+  border-top: medium none;
+}
+.views-ui-display-tab-bucket__title,
+.views-ui-display-tab-bucket > .views-display-setting {
+  padding: 2px 6px 4px;
+}
+.views-ui-display-tab-bucket__title {
+  margin: 0;
+  font-size: small;
+}
+.views-ui-display-tab-bucket.access {
+  padding-top: 0;
+}
+.views-ui-display-tab-bucket.page-settings {
+  border-bottom: medium none;
+}
+.views-display-setting .views-ajax-link {
+  margin-right: 0.2083em;
+  margin-left: 0.2083em;
+}
+
+.views-ui-display-tab-setting > span {
+  margin-left: 0.5em; /* LTR */
+}
+[dir="rtl"] .views-ui-display-tab-setting > span {
+  margin-right: 0.5em;
+  margin-left: 0;
+}
+
+/** Applies an overridden(italics) font style to overridden buckets.
+ * The better way to implement this would be to add the overridden class
+ * to the bucket header when the bucket is overridden and style it as a
+ * generic icon classed element. For the moment, we'll style the bucket
+ * header specifically with the overridden font style.
+ */
+.views-ui-display-tab-setting.overridden,
+.views-ui-display-tab-bucket.overridden .views-ui-display-tab-bucket__title {
+  font-style: italic;
+}
+
+/* This is each row within one of the "boxes." */
+.views-ui-display-tab-bucket .views-display-setting {
+  padding-bottom: 2px;
+  color: #666;
+  font-size: 12px;
+}
+.views-ui-display-tab-bucket .views-display-setting:nth-of-type(even) {
+  background-color: #f3f5ee;
+}
+.views-ui-display-tab-actions.views-ui-display-tab-bucket .views-display-setting {
+  background-color: transparent;
+}
+.views-ui-display-tab-bucket .views-group-text {
+  margin-top: 6px;
+  margin-bottom: 6px;
+}
+.views-display-setting .label {
+  margin-right: 3px; /* LTR */
+}
+[dir="rtl"] .views-display-setting .label {
+  margin-right: 0;
+  margin-left: 3px;
+}
+.views-edit-view {
+  margin-bottom: 15px;
+}
+
+/* The contents of the popup dialog on the views edit form. */
+.views-filterable-options .form-type-checkbox {
+  padding: 5px 8px;
+  border-top: none;
+}
+.views-filterable-options {
+  border-top: 1px solid #ccc;
+}
+.filterable-option .form-item {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.views-filterable-options .filterable-option .title {
+  cursor: pointer;
+  font-weight: bold;
+}
+.views-filterable-options .form-type-checkbox .description {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+.views-filterable-options-controls .form-item {
+  width: 30%;
+  margin: 0 0 0 2%; /* LTR */
+}
+[dir="rtl"] .views-filterable-options-controls .form-item {
+  margin: 0 2% 0 0;
+}
+.views-filterable-options-controls input,
+.views-filterable-options-controls select {
+  width: 100%;
+}
+.views-ui-dialog .ui-dialog-content {
+  padding: 0;
+}
+.views-ui-dialog .views-filterable-options {
+  margin-bottom: 10px;
+}
+.views-ui-dialog .views-add-form-selected.container-inline {
+  padding: 0;
+}
+.views-ui-dialog .views-add-form-selected.container-inline > div {
+  display: block;
+}
+.views-ui-dialog .form-item-selected {
+  margin: 0;
+  padding: 6px 16px;
+}
+.views-ui-dialog .views-override {
+  padding: 8px 13px;
+  background-color: #f3f4ee;
+}
+.views-ui-dialog.views-ui-dialog-scroll .ui-dialog-titlebar {
+  border: none;
+}
+.views-ui-dialog .views-offset-top {
+  border-bottom: 1px solid #ccc;
+}
+.views-ui-dialog .views-offset-bottom {
+  border-top: 1px solid #ccc;
+}
+.views-ui-dialog .views-override > * {
+  margin: 0;
+}
+.views-ui-dialog .views-progress-indicator {
+  position: absolute;
+  top: 32px;
+  right: 10px; /* LTR */
+  color: #fff;
+  font-size: 11px;
+}
+[dir="rtl"] .views-ui-dialog .views-progress-indicator {
+  right: auto;
+  left: 10px;
+}
+.views-ui-dialog .views-progress-indicator:before {
+  content: "\003C\00A0";
+}
+.views-ui-dialog .views-progress-indicator:after {
+  content: "\00A0\003E";
+}
+.views-ui-dialog details .item-list {
+  padding-left: 2em; /* LTR */
+}
+[dir="rtl"] .views-ui-dialog details .item-list {
+  padding-right: 2em;
+  padding-left: 0;
+}
+.views-ui-rearrange-filter-form table {
+  border-collapse: collapse;
+}
+.views-ui-rearrange-filter-form tr td[rowspan] {
+  border-width: 0 1px 1px 1px;
+  border-style: solid;
+  border-color: #cdcdcd;
+}
+.views-ui-rearrange-filter-form tr[id^="views-row"] {
+  border-right: 1px solid #cdcdcd; /* LTR */
+}
+[dir="rtl"] .views-ui-rearrange-filter-form tr[id^="views-row"] {
+  border-right: 0;
+  border-left: 1px solid #cdcdcd;
+}
+.views-ui-rearrange-filter-form .even td {
+  background-color: #f3f4ed;
+}
+.views-ui-rearrange-filter-form .views-group-title {
+  border-top: 1px solid #cdcdcd;
+}
+.views-ui-rearrange-filter-form .group-empty {
+  border-bottom: 1px solid #cdcdcd;
+}
+.form-item-options-expose-required,
+.form-item-options-expose-label,
+.form-item-options-expose-description {
+  margin-top: 6px;
+  margin-bottom: 6px;
+  margin-left: 18px; /* LTR */
+}
+[dir="rtl"] .form-item-options-expose-required,
+[dir="rtl"] .form-item-options-expose-label,
+[dir="rtl"] .form-item-options-expose-description {
+  margin-right: 18px;
+  margin-left: 0;
+}
+.views-preview-wrapper {
+  border: 1px solid #ccc;
+}
+.view-preview-form {
+  position: relative;
+}
+.view-preview-form__title {
+  margin-top: 0;
+  padding: 8px 12px;
+  border-bottom: 1px solid #ccc;
+  background-color: #e1e2dc;
+}
+.view-preview-form .form-item-live-preview {
+  position: absolute;
+  top: 3px;
+  right: 12px;
+  margin-top: 2px;
+  margin-left: 2px; /* LTR */
+}
+[dir="rtl"] .view-preview-form .form-item-live-preview {
+  right: auto;
+  left: 12px;
+  margin-right: 2px;
+  margin-left: 0;
+}
+.views-live-preview {
+  padding: 12px;
+}
+.views-live-preview .views-query-info {
+  overflow: auto;
+}
+.views-live-preview .section-title {
+  display: inline-block;
+  margin-top: 0;
+  margin-bottom: 0;
+  color: #818181;
+  font-size: 13px;
+  font-weight: normal;
+  line-height: 1.6154;
+}
+.views-live-preview .view > * {
+  margin-top: 18px;
+}
+.views-live-preview .preview-section {
+  margin: 0 -5px;
+  padding: 3px 5px;
+  border: 1px dashed #dedede;
+}
+.views-live-preview li.views-row + li.views-row {
+  margin-top: 18px;
+}
+
+/* The div.views-row is intentional and excludes li.views-row, for example */
+.views-live-preview div.views-row + div.views-row {
+  margin-top: 36px;
+}
+.views-query-info table {
+  margin: 10px 0;
+  border-spacing: 0;
+  border-collapse: separate;
+  border-color: #ddd;
+}
+.views-query-info table tr {
+  background-color: #f9f9f9;
+}
+.views-query-info table th,
+.views-query-info table td {
+  padding: 4px 10px;
+  color: #666;
+}
+.messages {
+  margin-bottom: 18px;
+  line-height: 1.4555;
+}
+.dropbutton-multiple {
+  position: absolute;
+}
+.dropbutton-widget {
+  position: relative;
+}
+.js .views-edit-view .dropbutton-wrapper .dropbutton .dropbutton-action > * {
+  font-size: 10px;
+}
+.js .dropbutton-wrapper .dropbutton .dropbutton-action > .ajax-progress-throbber {
+  position: absolute;
+  z-index: 2;
+  top: -1px;
+  right: -5px; /* LTR */
+}
+[dir="rtl"].js .dropbutton-wrapper .dropbutton .dropbutton-action > .ajax-progress-throbber {
+  right: auto;
+  left: -5px;
+}
+.js .dropbutton-wrapper.dropbutton-multiple.open .dropbutton-action:first-child a {
+  border-radius: 1.1em 0 0 0; /* LTR */
+}
+[dir="rtl"].js .dropbutton-wrapper.dropbutton-multiple.open .dropbutton-action:first-child a {
+  border-radius: 0 1.1em 0 0;
+}
+.js .dropbutton-wrapper.dropbutton-multiple.open .dropbutton-action:last-child a {
+  border-radius: 0 0 0 1.1em; /* LTR */
+}
+[dir="rtl"].js .dropbutton-wrapper.dropbutton-multiple.open .dropbutton-action:last-child a {
+  border-radius: 0 0 1.1em 0;
+}
+.views-display-top .dropbutton-wrapper {
+  position: absolute;
+  top: 7px;
+  right: 12px; /* LTR */
+}
+[dir="rtl"] .views-display-top .dropbutton-wrapper {
+  right: auto;
+  left: 12px;
+}
+.views-display-top .dropbutton-wrapper .dropbutton-widget .dropbutton-action a {
+  width: auto;
+}
+
+.views-ui-display-tab-bucket .dropbutton-wrapper {
+  position: absolute;
+  top: 4px;
+  right: 5px; /* LTR */
+}
+[dir="rtl"] .views-ui-display-tab-bucket .dropbutton-wrapper {
+  right: auto;
+  left: 5px;
+}
+.views-ui-display-tab-bucket .dropbutton-wrapper .dropbutton-widget .dropbutton-action a {
+  width: auto;
+}
+.views-ui-display-tab-actions .dropbutton-wrapper li a,
+.views-ui-display-tab-actions .dropbutton-wrapper input {
+  margin-bottom: 0;
+  padding-left: 12px; /* LTR */
+  border: medium;
+  background: none;
+  font-family: inherit;
+  font-size: 12px;
+}
+[dir="rtl"] .views-ui-display-tab-actions .dropbutton-wrapper li a,
+[dir="rtl"] .views-ui-display-tab-actions .dropbutton-wrapper input {
+  padding-right: 12px;
+  padding-left: 0.5em;
+}
+.views-ui-display-tab-actions .dropbutton-wrapper input:hover {
+  border: none;
+  background: none;
+}
+.views-list-section {
+  margin-bottom: 2em;
+}
+.form-textarea-wrapper,
+.form-item-options-content {
+  width: 100%;
+}
diff --git a/core/themes/stable9/css/views_ui/views_ui.contextual.css b/core/themes/stable9/css/views_ui/views_ui.contextual.css
new file mode 100644
index 0000000000..35c0d166cd
--- /dev/null
+++ b/core/themes/stable9/css/views_ui/views_ui.contextual.css
@@ -0,0 +1,57 @@
+/**
+ * @file
+ * The .contextual.css file is intended to contain styles that override declarations
+ * in the Contextual module.
+ */
+
+.views-live-preview .contextual-region-active {
+  outline: medium none;
+}
+.views-live-preview .contextual {
+  top: auto;
+  right: auto; /* LTR */
+}
+[dir="rtl"] .views-live-preview .contextual {
+  left: auto;
+}
+.js .views-live-preview .contextual {
+  display: inline;
+}
+.views-live-preview .contextual-links-trigger {
+  display: block;
+}
+.contextual .contextual-links {
+  right: auto; /* LTR */
+  min-width: 10em;
+  padding: 6px 6px 9px 6px;
+  border-radius: 0 4px 4px 4px; /* LTR */
+}
+[dir="rtl"] .contextual .contextual-links {
+  left: auto;
+  border-radius: 4px 0 4px 4px;
+}
+.contextual-links li a,
+.contextual-links li span {
+  padding-top: 0.25em;
+  padding-right: 0.1667em; /* LTR */
+  padding-bottom: 0.25em;
+}
+[dir="rtl"] .contextual-links li a,
+[dir="rtl"] .contextual-links li span {
+  padding-right: 0;
+  padding-left: 0.1667em;
+}
+.contextual-links li span {
+  font-weight: bold;
+}
+.contextual-links li a {
+  margin: 0.25em 0;
+  padding-left: 1em; /* LTR */
+}
+[dir="rtl"] .contextual-links li a {
+  padding-right: 1em;
+  padding-left: 0.1667em;
+}
+.contextual-links li a:hover {
+  background-color: #badbec;
+}
diff --git a/core/themes/stable9/images/color/hook-rtl.png b/core/themes/stable9/images/color/hook-rtl.png
new file mode 100644
index 0000000000..a26b211e12
--- /dev/null
+++ b/core/themes/stable9/images/color/hook-rtl.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR      Q   @u   PLTE  DDDz2P   tRNS @f   IDATc`@P .?Nuue o :    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/color/hook.png b/core/themes/stable9/images/color/hook.png
new file mode 100644
index 0000000000..dc1897370f
--- /dev/null
+++ b/core/themes/stable9/images/color/hook.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR      Q   @u   PLTEDDD   tRNS @f   IDATc`@Q .?Nuue L?6Z    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/color/lock.png b/core/themes/stable9/images/color/lock.png
new file mode 100644
index 0000000000..9e1e00e5ef
--- /dev/null
+++ b/core/themes/stable9/images/color/lock.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR      2   6   'PLTEaaa   xvg-)=   tRNS @f   mIDATx yCƉ}tJF6AQً$3Ml#ȶ ?uB-GW6*Ab٫R*G^%.-OК;;sH    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/druplicon.png b/core/themes/stable9/images/core/druplicon.png
new file mode 100644
index 0000000000..3b49a4ce78
--- /dev/null
+++ b/core/themes/stable9/images/core/druplicon.png
@@ -0,0 +1,18 @@
+PNG
+
+   IHDR   X   d   -  IDATx]	PTW}FͦĤTe2L*$:LM1jԸwA6*;"H@\AEAQDE]dߡY/{74O-}{}0t$>ʁMѵo!'w";W{]ue3? ݲ1bM)#4SD@GkQM3$V?!<c/o"BAzPd<g3[}So"BF( ̲FXIh 6or{wh c7v'YמIƍ7rnK-nQR{۪:M59S׵o=GeI0('OB9DDs{G.(RɳdXݼvz`'C 8T5Bȵ0OFl/]fS/'&+'9ygvḪKEkP[KɓіHcHdaky-OluJ %zt-J"2*`2Lʂp))Q@iҌǶ*97 e-DpR %ujuH1tnXM0n=%B;~6lm>\7Bm(x =[~	ṍ,{S8Jg׉0vh#BNy=ywxN*.RǖF ѱbWudd AB1ڡOG.gOҔTӌR`<o
+Z8H$do*[L+ZDQr?Tshq	X	m,0[qNT2b:BKG4.Ȋ	K9rW˂1\W<.OBRާ$^A,% +Jj[ ()"³YĠz6ןzs5JƸA$3k= #+r*X#`w:z
+ۯtEa=iqF&4C\fSbѦDbx]JLՕ)O vJWR|qe˙"eŸ^ǡMm,km8 ^97M|ֻ|\nFE
+؊6,?4Lz{CCngD4-dŻ>,={B+JZk^-̈!]Sȏ'AiV\rPkSTOk+?["͗ #J~_)F6c'ډ7Df7/Hg_	u-])qgKb:4m/6p^XVip;?<.PYC&nf:;ž=F	o9J޴=+XO$ξxݖ9L*Ћzo Jlv>6r\d0zԇ݋mizn#bI^L}T3&m9K/7u%x+NxmxP8>Ex,#M˚J/t`}lBbz,d,]"}LKQ|Gz/&YJ2`}G*=.!ڶ<>NDJ5{69a,'K&Ʉ;z!"y<L#]c_=\}B"ߗ0<73`l^,s:AM9K "lYlr:m LDU1\+M8ZV	~SG;
++[C"}قJ|f%	b'\2:1ER-SАdv!%Nr"CHۑ`lkep +K`q>4AFpi	Aop/z14JڀV6ćW6,67Dp +CAJAqn,;y Omw5>	PnUăuִ-2pWۯ*Ȍ_vH$kZ4IYYq	SB"luVԇ>'qM#Wz\G%%8q\v%(K<h߃-߮QD%}|a*n«։ҽv@Ĳa&v<XSeZC[</A0`:!}'W>\"MZM;JwkN!#Y'sCbx2n3̋g<+{E]6AAP%
+0/mC
+͒6*i
+1эx=HNp#Z`K#3Ws8i
+xlR`4PUCRfz$((Z0&vL%7\.юCKQ"BI'L4Â"Tf9vXG\oI'LDy
+U jH	F}_O.hm8TiyevM:gx}?G>\
+Pȃ//,hFZ[:P>olE&w`20˝w#v0sߩTZŬ,9D`Ły\<f
+z+el`Zޙ8@^$cCMӢ{tH(B^y-YLR(6L}mdEV/2zT*Y~#`qG!*V%IcqϘz+ N̡[Cdu -9 3Ngr3=9;Nr!W:.DF&g5.{ A	FS̜1r#2CӲl_rv Y
+7=n!	4~lY¿P0(si+1G{KHr;NzMY]ye4M|}Ex\$ɱ	#/H2
+GXH #3b%W<؟Ѭ	GKD^Tbf!u0{E{n7툥)*)\cRgf'>S(	[=`XfJDfAfj-Enà`K}tXz>v,eGZw;("dub?ԑ|ѓ}!T>>9fz(ŭ*GX3{?t2c
+QfܣjqDiвzq"쯃 '60EZ`ur['
+zeM.	>Q AJy}ǚFfIe4-d2$3>o>*[ք!Q>X3RrJ=Ёhv9ӐBf'A	6ߝWyܮ0_^ޟ0LK2$\jHAeIT?ϲٮBZ(9$eojXbfm(a-L54M{H'0=+p5E3˽&H%%Ǯg{kO%oQuz7 BI!<ߎ>pO'#*'ɰxԱ@J4'B_uÿz鬖QPܤO%΍y,^W;Ǫa%Dځ83C,hMx{WɈ,/P>b&͊liD^_ann+ˋXu24mQȶ<!0IЕSBG#&G0p怤#9a3-44K$E+Z#nZ7tD~I]E    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/feed.svg b/core/themes/stable9/images/core/feed.svg
new file mode 100644
index 0000000000..595a9d9ab0
--- /dev/null
+++ b/core/themes/stable9/images/core/feed.svg
@@ -0,0 +1,8 @@
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
+  <rect fill="#ff9900" width="16" height="16" x="0" y="0" rx="3" ry="3"/>
+  <g fill="#ffffff">
+    <circle cx="4.25" cy="11.812" r="1.5"/>
+    <path d="M10,13.312H7.875c0-2.83-2.295-5.125-5.125-5.125l0,0V6.062C6.754,6.062,10,9.308,10,13.312z"/>
+    <path d="M11.5,13.312c0-4.833-3.917-8.75-8.75-8.75V2.375c6.041,0,10.937,4.896,10.937,10.937H11.5z"/>
+  </g>
+</svg>
diff --git a/core/themes/stable9/images/core/help.png b/core/themes/stable9/images/core/help.png
new file mode 100644
index 0000000000..dcc5cac795
--- /dev/null
+++ b/core/themes/stable9/images/core/help.png
@@ -0,0 +1,5 @@
+PNG
+
+   IHDR         a   IDATxڥ=
+@s#HN#"mnb2G-,B^B2}ܝVYiP4+(k b*1;d&ZERY-aԸ=
+-  -5}/-a!q	bcm53:9NPq@:@bd{AD3Ag$u;ٜQy#mrlt쫛OB䃪	t    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/icons/000000/barchart.svg b/core/themes/stable9/images/core/icons/000000/barchart.svg
new file mode 100644
index 0000000000..5b6e4cf7fc
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/barchart.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#000000" d="M4 13.529c0 .275-.225.5-.5.5h-3c-.275 0-.5-.225-.5-.5v-4.25c0-.274.225-.5.5-.5h3c.275 0 .5.226.5.5v4.25zM10.002 13.529c0 .275-.225.5-.5.5h-3.002c-.275 0-.5-.225-.5-.5v-13c0-.275.225-.5.5-.5h3.002c.275 0 .5.225.5.5v13zM16.002 13.529c0 .275-.225.5-.5.5h-3c-.275 0-.5-.225-.5-.5v-9.5c0-.275.225-.5.5-.5h3c.275 0 .5.225.5.5v9.5z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/chevron-left.svg b/core/themes/stable9/images/core/icons/000000/chevron-left.svg
new file mode 100644
index 0000000000..19ba580704
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/chevron-left.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#000000" d="M7.951 7.645c-.193.196-.193.516 0 .71l3.258 3.29c.193.193.191.519-.002.709l-1.371 1.371c-.193.192-.512.191-.707 0l-5.335-5.371c-.194-.194-.194-.514 0-.708l5.335-5.369c.195-.195.514-.195.707-.001l1.371 1.371c.193.194.195.513.002.709l-3.258 3.289z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/chevron-right.svg b/core/themes/stable9/images/core/icons/000000/chevron-right.svg
new file mode 100644
index 0000000000..20018b760a
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/chevron-right.svg
@@ -0,0 +1,2 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#000000" d="M8.053 8.355c.193-.195.193-.517 0-.711l-3.26-3.289c-.193-.195-.192-.514.002-.709l1.371-1.371c.194-.194.512-.193.706.001l5.335 5.369c.195.195.195.515 0 .708l-5.335 5.37c-.194.192-.512.193-.706.002l-1.371-1.371c-.194-.195-.195-.514-.002-.709l3.26-3.29z"/></svg>
+
diff --git a/core/themes/stable9/images/core/icons/000000/ex.svg b/core/themes/stable9/images/core/icons/000000/ex.svg
new file mode 100644
index 0000000000..7b653ffde5
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/ex.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#000000" d="M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/file.svg b/core/themes/stable9/images/core/icons/000000/file.svg
new file mode 100644
index 0000000000..21e8f7076a
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/file.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#000000" d="M12.502 7h-5c-.276 0-.502-.225-.502-.5v-5c0-.275-.225-.5-.5-.5h-3c-.275 0-.5.225-.5.5v12.029c0 .275.225.5.5.5h9.002c.275 0 .5-.225.5-.5v-6.029c0-.275-.225-.5-.5-.5zM8.502 6h4c.275 0 .34-.159.146-.354l-4.293-4.292c-.195-.195-.353-.129-.353.146v4c0 .275.225.5.5.5z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/move.svg b/core/themes/stable9/images/core/icons/000000/move.svg
new file mode 100644
index 0000000000..3bd9a41cd1
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/move.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#000000" d="M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/orgchart.svg b/core/themes/stable9/images/core/icons/000000/orgchart.svg
new file mode 100644
index 0000000000..7010a982d1
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/orgchart.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px"><path d="M15.002,11.277c0-0.721,0-1.471,0-2.014c0-1.456-0.824-2.25-2.25-2.25c-1.428,0-3.5,0-3.5,0c-0.139,0-0.25-0.112-0.25-0.25v-2.04c0.596-0.346,1-0.984,1-1.723c0-1.104-0.895-2-2-2C6.896,1,6,1.896,6,3c0,0.738,0.405,1.376,1,1.722v2.042c0,0.138-0.112,0.25-0.25,0.25c0,0-2.138,0-3.5,0S1,7.932,1,9.266c0,0.521,0,1.277,0,2.012c-0.595,0.353-1,0.984-1,1.729c0,1.104,0.896,2,2,2s2-0.896,2-2c0-0.732-0.405-1.377-1-1.729V9.266c0-0.139,0.112-0.25,0.25-0.25h3.536C6.904,9.034,7,9.126,7,9.25v2.027C6.405,11.624,6,12.26,6,13c0,1.104,0.896,2,2.002,2c1.105,0,2-0.896,2-2c0-0.738-0.404-1.376-1-1.723V9.25c0-0.124,0.098-0.216,0.215-0.234h3.535c0.137,0,0.25,0.111,0.25,0.25v2.012c-0.596,0.353-1,0.984-1,1.729c0,1.104,0.896,2,2,2s2-0.896,2-2C16.002,12.262,15.598,11.623,15.002,11.277z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/paintbrush.svg b/core/themes/stable9/images/core/icons/000000/paintbrush.svg
new file mode 100644
index 0000000000..947436d2bf
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/paintbrush.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#000000" d="M8.184 7.928l-1.905 1.983-3.538-2.436 4.714-4.713 2.623 3.183-1.894 1.983zm-1.746-7.523c-.236-.416-.803-.649-1.346.083-.259.349-4.727 4.764-4.91 4.983-.182.218-.294.721.044.976.34.258 5.611 3.933 5.611 3.933l-.225.229c.7.729.816.854 1.046.863.75.016 2.035-1.457 2.578-.854.541.604 3.537 3.979 3.537 3.979.51.531 1.305.559 1.815.041.521-.521.541-1.311.025-1.848 0 0-2.742-2.635-3.904-3.619-.578-.479.869-2.051.854-2.839-.008-.238-.125-.361-.823-1.095l-.22.243c0 .003-3.846-4.659-4.082-5.075z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/people.svg b/core/themes/stable9/images/core/icons/000000/people.svg
new file mode 100644
index 0000000000..c63938ccb7
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/people.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#000000" d="M6.722 11.291l.451-.17-.165-.32c-.536-1.039-.685-1.934-.761-2.672-.082-.808-.144-2.831 1.053-4.189.244-.278.493-.493.743-.675.012-.826-.135-1.766-.646-2.345-.618-.7-1.4-.787-1.4-.787l-.497-.055-.498.055s-.783.087-1.398.787c-.617.702-.717 1.948-.625 2.855.06.583.17 1.263.574 2.05.274.533.341.617.355 1.01.022.595.027 1.153-.671 1.538-.697.383-1.564.508-2.403 1.088-.596.41-.709 1.033-.78 1.459l-.051.41c-.029.273.173.498.448.498h5.012c.457-.24.89-.402 1.259-.537zM5.064 15.096c.07-.427.184-1.05.78-1.46.838-.581 1.708-.706 2.404-1.089.699-.385.693-.943.672-1.537-.014-.393-.08-.477-.354-1.01-.406-.787-.515-1.467-.576-2.049-.093-.909.008-2.155.625-2.856.615-.7 1.398-.787 1.398-.787l.492-.055h.002l.496.055s.781.087 1.396.787c.615.701.72 1.947.623 2.855-.062.583-.172 1.262-.571 2.049-.271.533-.341.617-.354 1.01-.021.595-.062 1.22.637 1.604.697.385 1.604.527 2.438 1.104.923.641.822 1.783.822 1.783-.022.275-.269.5-.542.5h-9.991c-.275 0-.477-.223-.448-.496l.051-.408z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/puzzlepiece.svg b/core/themes/stable9/images/core/icons/000000/puzzlepiece.svg
new file mode 100644
index 0000000000..04cf0750c1
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/puzzlepiece.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#000000" d="M11.002 11v2.529c0 .275-.225.471-.5.471h-3c-.827 0-1.112-.754-.604-1.316l.81-.725c.509-.562.513-1.461-.097-2.01-.383-.344-1.027-.728-2.111-.728s-1.727.386-2.109.731c-.609.549-.606 1.45-.097 2.015l.808.717c.509.562.223 1.316-.602 1.316h-3c-.276 0-.5-.193-.5-.471v-9.029c0-.276.224-.5.5-.5h3c.825 0 1.111-.768.602-1.332l-.808-.73c-.51-.563-.513-1.465.097-2.014.382-.344 1.025-.731 2.109-.731s1.728.387 2.111.731c.608.548.606 1.45.097 2.014l-.81.73c-.509.564-.223 1.332.603 1.332h3c.274 0 .5.224.5.5v2.5c0 .825.642 1.111 1.233.602l.771-.808c.599-.51 1.547-.513 2.127.097.364.383.772 1.025.772 2.109s-.408 1.727-.771 2.109c-.58.604-1.529.604-2.127.097l-.77-.808c-.593-.509-1.234-.223-1.234.602z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/questionmark-disc.svg b/core/themes/stable9/images/core/icons/000000/questionmark-disc.svg
new file mode 100644
index 0000000000..e65b2c4f6d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/questionmark-disc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#000000" d="M8.002 1c-3.868 0-7.002 3.134-7.002 7s3.134 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm3 5c0 .551-.16 1.085-.477 1.586l-.158.22c-.07.093-.189.241-.361.393-.168.148-.35.299-.545.447l-.203.189-.141.129-.096.17-.021.235v.63h-2.001v-.704c.026-.396.078-.73.204-.999.125-.269.271-.498.439-.688l.225-.21-.01-.015.176-.14.137-.128c.186-.139.357-.277.516-.417l.148-.18c.098-.152.168-.323.168-.518 0-.552-.447-1-1-1s-1.002.448-1.002 1h-2c0-1.657 1.343-3 3.002-3 1.656 0 3 1.343 3 3zm-1.75 6.619c0 .344-.281.625-.625.625h-1.25c-.345 0-.626-.281-.626-.625v-1.238c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.238z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/000000/wrench.svg b/core/themes/stable9/images/core/icons/000000/wrench.svg
new file mode 100644
index 0000000000..373134aa95
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/000000/wrench.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#000000" d="M14.416 11.586l-.01-.008v-.001l-5.656-5.656c.15-.449.252-.921.252-1.421 0-2.485-2.016-4.5-4.502-4.5-.505 0-.981.102-1.434.255l2.431 2.431-.588 2.196-2.196.588-2.445-2.445c-.162.464-.268.956-.268 1.475 0 2.486 2.014 4.5 4.5 4.5.5 0 .972-.102 1.421-.251l5.667 5.665c.781.781 2.047.781 2.828 0s.781-2.047 0-2.828z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/004875/twistie-down.svg b/core/themes/stable9/images/core/icons/004875/twistie-down.svg
new file mode 100644
index 0000000000..6cd6a786bb
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/004875/twistie-down.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#004875" d="M2.611 5.393c-.17-.216-.084-.393.191-.393h10.397c.275 0 .361.177.191.393l-5.08 6.464c-.17.216-.452.216-.622 0l-5.077-6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/004875/twistie-up.svg b/core/themes/stable9/images/core/icons/004875/twistie-up.svg
new file mode 100644
index 0000000000..bf3b80ed01
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/004875/twistie-up.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#004875" d="M13.391 10.607c.17.216.084.393-.191.393h-10.398c-.275 0-.361-.177-.191-.393l5.08-6.464c.17-.216.45-.216.62 0l5.08 6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/0074bd/chevron-left.svg b/core/themes/stable9/images/core/icons/0074bd/chevron-left.svg
new file mode 100644
index 0000000000..122e1c0999
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/0074bd/chevron-left.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#0074bd" d="M7.951 7.645c-.193.196-.193.516 0 .71l3.258 3.29c.193.193.191.519-.002.709l-1.371 1.371c-.193.192-.512.191-.707 0l-5.335-5.371c-.194-.194-.194-.514 0-.708l5.335-5.369c.195-.195.514-.195.707-.001l1.371 1.371c.193.194.195.513.002.709l-3.258 3.289z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/0074bd/chevron-right.svg b/core/themes/stable9/images/core/icons/0074bd/chevron-right.svg
new file mode 100644
index 0000000000..b16a8ce89d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/0074bd/chevron-right.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#0074bd" d="M8.053 8.355c.193-.195.193-.517 0-.711l-3.26-3.289c-.193-.195-.192-.514.002-.709l1.371-1.371c.194-.194.512-.193.706.001l5.335 5.369c.195.195.195.515 0 .708l-5.335 5.37c-.194.192-.512.193-.706.002l-1.371-1.371c-.194-.195-.195-.514-.002-.709l3.26-3.29z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/008ee6/twistie-down.svg b/core/themes/stable9/images/core/icons/008ee6/twistie-down.svg
new file mode 100644
index 0000000000..23f6d9ac1b
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/008ee6/twistie-down.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#008ee6" d="M2.611 5.393c-.17-.216-.084-.393.191-.393h10.397c.275 0 .361.177.191.393l-5.08 6.464c-.17.216-.452.216-.622 0l-5.077-6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/008ee6/twistie-up.svg b/core/themes/stable9/images/core/icons/008ee6/twistie-up.svg
new file mode 100644
index 0000000000..dc9dd8e9f7
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/008ee6/twistie-up.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#008ee6" d="M13.391 10.607c.17.216.084.393-.191.393h-10.398c-.275 0-.361-.177-.191-.393l5.08-6.464c.17-.216.45-.216.62 0l5.08 6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/333333/caret-down.svg b/core/themes/stable9/images/core/icons/333333/caret-down.svg
new file mode 100644
index 0000000000..4e48c8c983
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/333333/caret-down.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#333333" d="M3.8 5.4c-.165-.22-.075-.4.2-.4h8.002c.275 0 .365.18.199.4l-3.898 5.2c-.166.221-.436.221-.6 0l-3.903-5.2z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/333333/grid.svg b/core/themes/stable9/images/core/icons/333333/grid.svg
new file mode 100644
index 0000000000..98ada644c6
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/333333/grid.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#333333" d="M10.5 9h3a1.5 1.5 0 0 1 1.5 1.5v3a1.5 1.5 0 0 1-1.5 1.5h-3A1.5 1.5 0 0 1 9 13.5v-3A1.5 1.5 0 0 1 10.5 9zm-8 0h3A1.5 1.5 0 0 1 7 10.5v3A1.5 1.5 0 0 1 5.5 15h-3A1.5 1.5 0 0 1 1 13.5v-3A1.5 1.5 0 0 1 2.5 9zm8-8h3A1.5 1.5 0 0 1 15 2.5v3A1.5 1.5 0 0 1 13.5 7h-3A1.5 1.5 0 0 1 9 5.5v-3A1.5 1.5 0 0 1 10.5 1zm-8 0h3A1.5 1.5 0 0 1 7 2.5v3A1.5 1.5 0 0 1 5.5 7h-3A1.5 1.5 0 0 1 1 5.5v-3A1.5 1.5 0 0 1 2.5 1z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/333333/table.svg b/core/themes/stable9/images/core/icons/333333/table.svg
new file mode 100644
index 0000000000..502bf1c142
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/333333/table.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#333333" d="M7 15a1.5 1.5 0 0 1 0-3h7a1.5 1.5 0 0 1 0 3H7zm-4.5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM7 9.5a1.5 1.5 0 0 1 0-3h7a1.5 1.5 0 0 1 0 3H7zm-4.5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM7 4a1.5 1.5 0 0 1 0-3h7a1.5 1.5 0 0 1 0 3H7zM2.5 4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/424242/loupe.svg b/core/themes/stable9/images/core/icons/424242/loupe.svg
new file mode 100644
index 0000000000..a38322ad80
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/424242/loupe.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#424242" d="M14.648 12.788l-4.23-4.228c.525-.855.834-1.858.834-2.938 0-3.105-2.52-5.624-5.627-5.624-3.106.002-5.625 2.521-5.625 5.627 0 3.105 2.519 5.625 5.625 5.625 1.076 0 2.08-.309 2.936-.832l4.229 4.229c.194.195.515.195.707 0l1.151-1.146c.194-.2.194-.519 0-.713zm-13.35-7.163c0-2.39 1.938-4.327 4.327-4.327 2.391 0 4.328 1.937 4.328 4.327 0 2.391-1.936 4.327-4.328 4.327-2.39 0-4.327-1.936-4.327-4.327z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/505050/loupe.svg b/core/themes/stable9/images/core/icons/505050/loupe.svg
new file mode 100644
index 0000000000..c91cca5ca8
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/505050/loupe.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#505050" d="M14.648 12.788l-4.23-4.228c.525-.855.834-1.858.834-2.938 0-3.105-2.52-5.624-5.627-5.624-3.106.002-5.625 2.521-5.625 5.627 0 3.105 2.519 5.625 5.625 5.625 1.076 0 2.08-.309 2.936-.832l4.229 4.229c.194.195.515.195.707 0l1.151-1.146c.194-.2.194-.519 0-.713zm-13.35-7.163c0-2.39 1.938-4.327 4.327-4.327 2.391 0 4.328 1.937 4.328 4.327 0 2.391-1.936 4.327-4.328 4.327-2.39 0-4.327-1.936-4.327-4.327z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/5181c6/chevron-disc-down.svg b/core/themes/stable9/images/core/icons/5181c6/chevron-disc-down.svg
new file mode 100644
index 0000000000..6707c3038f
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/5181c6/chevron-disc-down.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#5181C6" d="M8.002 1c-3.869 0-7.002 3.134-7.002 7s3.133 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm4.459 6.336l-4.105 4.105c-.196.189-.515.189-.708 0l-4.107-4.105c-.194-.194-.194-.513 0-.707l.977-.978c.194-.194.513-.194.707 0l2.422 2.421c.192.195.513.195.708 0l2.422-2.42c.188-.194.512-.194.707 0l.977.977c.193.194.193.513 0 .707z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/5181c6/chevron-disc-up.svg b/core/themes/stable9/images/core/icons/5181c6/chevron-disc-up.svg
new file mode 100644
index 0000000000..d94365fe8d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/5181c6/chevron-disc-up.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#5181C6" d="M8.002 1c-3.867 0-7.002 3.134-7.002 7s3.135 7 7.002 7 7-3.134 7-7-3.133-7-7-7zm4.462 8.37l-.979.979c-.19.19-.516.19-.707 0l-2.422-2.419c-.196-.194-.515-.194-.708 0l-2.423 2.417c-.194.193-.513.193-.707 0l-.977-.976c-.194-.194-.194-.514 0-.707l4.106-4.106c.193-.194.515-.194.708 0l4.109 4.105c.19.192.19.513 0 .707z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/5181c6/pencil.svg b/core/themes/stable9/images/core/icons/5181c6/pencil.svg
new file mode 100644
index 0000000000..209d96d33d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/5181c6/pencil.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#5181C6" d="M14.545 3.042l-1.586-1.585c-.389-.389-1.025-.389-1.414 0l-1.293 1.293 3 3 1.293-1.293c.389-.389.389-1.026 0-1.415z"/><rect fill="#5181C6" x="5.129" y="3.8" transform="matrix(-.707 -.707 .707 -.707 6.189 20.064)" width="4.243" height="9.899"/><path fill="#5181C6" d="M.908 14.775c-.087.262.055.397.316.312l2.001-.667-1.65-1.646-.667 2.001z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/5181c6/twistie-down.svg b/core/themes/stable9/images/core/icons/5181c6/twistie-down.svg
new file mode 100644
index 0000000000..7d04606bc7
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/5181c6/twistie-down.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#5181C6" d="M2.611 5.393c-.17-.216-.084-.393.191-.393h10.397c.275 0 .361.177.191.393l-5.08 6.464c-.17.216-.452.216-.622 0l-5.077-6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/5181c6/twistie-up.svg b/core/themes/stable9/images/core/icons/5181c6/twistie-up.svg
new file mode 100644
index 0000000000..f25f88937d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/5181c6/twistie-up.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#5181C6" d="M13.391 10.607c.17.216.084.393-.191.393h-10.398c-.275 0-.361-.177-.191-.393l5.08-6.464c.17-.216.45-.216.62 0l5.08 6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/686868/plus.svg b/core/themes/stable9/images/core/icons/686868/plus.svg
new file mode 100644
index 0000000000..bf68db24d0
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/686868/plus.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px"><path fill="#686868" d="M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/73b355/check.svg b/core/themes/stable9/images/core/icons/73b355/check.svg
new file mode 100644
index 0000000000..566cbc4c8e
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/73b355/check.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#73b355"><path d="M6.464 13.676c-.194.194-.513.194-.707 0l-4.96-4.955c-.194-.193-.194-.513 0-.707l1.405-1.407c.194-.195.512-.195.707 0l2.849 2.848c.194.193.513.193.707 0l6.629-6.626c.195-.194.514-.194.707 0l1.404 1.404c.193.194.193.513 0 .707l-8.741 8.736z"/></svg>
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/icons/73b355/globe.svg b/core/themes/stable9/images/core/icons/73b355/globe.svg
new file mode 100644
index 0000000000..57992c3e67
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/73b355/globe.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#73b355"><path d="M8,0.0309333333 C12.4181818,0.0309333333 16,3.5328 16,7.85315556 C16,12.1731556 12.4181818,15.6750222 8,15.6750222 C3.58181818,15.6750222 0,12.1731556 0,7.85315556 C0,3.5328 3.58181818,0.0309333333 8,0.0309333333 Z M12.7236364,4.69653333 C12.5116364,4.95288889 12.1872727,4.50133333 11.9,4.3552 C11.6130909,4.20871111 11.5505455,4.69653333 11.2138182,5.25795556 C10.8767273,5.81937778 10.6770909,5.56302222 10.3774545,5.25795556 C10.0781818,4.95288889 10.2650909,4.68444444 10.5774545,4.56248889 C10.8890909,4.44053333 10.9141818,4.39182222 10.6894545,4.14755556 C10.4650909,3.90364444 10.3650909,4.00106667 10.5898182,3.80586667 C10.8141818,3.61066667 10.9516364,3.6352 11.4385455,3.34222222 C11.9250909,3.04924444 11.3636364,2.7808 11.0389091,2.99484444 C10.7145455,3.20853333 10.3025455,2.56142222 10.2152727,2.01671111 C10.128,1.47164444 10.3901818,1.64622222 10.6894545,1.45066667 C10.7610909,1.40444444 10.7192727,1.29386667 10.6170909,1.15377778 C9.80363636,0.849066667 8.92181818,0.680177778 8,0.680177778 C7.08945455,0.680177778 6.21745455,0.8448 5.41236364,1.14275556 C5.26763636,1.33795556 5.23709091,1.49475556 5.53527273,1.4752 C6.284,1.42648889 6.29672727,1.26791111 6.55890909,1.6096 C6.82072727,1.95128889 6.696,2.65884444 6.22181818,2.46364444 C5.74763636,2.26844444 4.96145455,1.93884444 4.76181818,2.3296 C4.56181818,2.72 4.84909091,2.81742222 5.236,2.5856 C5.62254545,2.35377778 5.93490909,2.46364444 6.00945455,2.84195556 C6.08436364,3.22026667 6.05963636,3.95235556 5.63527273,3.81831111 C5.21090909,3.68391111 5.07345455,3.8912 5.32327273,4.09884444 C5.57272727,4.30613333 5.29818182,4.42844444 4.91127273,4.26951111 C4.52436364,4.11093333 4.53709091,4.59911111 4.01272727,4.57457778 C3.48872727,4.5504 3.45127273,5.11146667 3.28909091,5.31911111 C3.12690909,5.5264 3.10181818,6.19768889 3.06436364,6.35626667 C3.02690909,6.51484444 2.86472727,6.6368 2.77745455,6.13653333 C2.68981818,5.63626667 2.80218182,5.41653333 2.34072727,5.38026667 C1.87890909,5.34328889 1.41709091,6.29191111 1.65418182,6.49493333 C1.89127273,6.69795556 2.21563636,6.30755556 2.19090909,6.60017778 C2.16581818,6.89315556 2.00363636,8.22328889 2.49018182,8.28408889 C2.97709091,8.34524444 3.30145455,8.29653333 3.70072727,8.55288889 C4.1,8.80888889 4.84909091,8.83342222 5.38545455,9.66328889 C5.92218182,10.4928 6.54618182,10.5905778 7.14545455,10.7249778 C7.74436364,10.8590222 7.68181818,11.1886222 7.36981818,11.6277333 C7.05781818,12.0672 7.23272727,12.5184 6.18436364,12.8600889 C5.136,13.2017778 5.06109091,14.0561778 5.09854545,14.2147556 C5.10618182,14.2471111 5.092,14.3239111 5.06545455,14.4248889 C5.96472727,14.8103111 6.95709091,15.0257778 8,15.0257778 C10.0716364,15.0257778 11.944,14.1802667 13.2792727,12.8256 C13.1043636,12.2965333 12.9294545,11.6920889 12.9236364,11.3713778 C12.9109091,10.7249778 13.0981818,10.6759111 12.8610909,10.2488889 C12.624,9.82186667 12.1370909,10.2368 11.1887273,10.1144889 C10.2403636,9.99253333 10.3901818,9.40693333 9.72872727,8.6016 C9.06727273,7.79626667 10.34,7.13706667 10.6894545,6.30755556 C11.0389091,5.47768889 12.5614545,5.79484444 12.8985455,5.856 C13.2352727,5.91715556 13.1105455,5.69742222 13.8221818,5.18471111 C14.5334545,4.67235556 13.4727273,4.66026667 13.1854545,4.46506667 C12.8985455,4.26951111 12.936,4.44053333 12.7236364,4.69653333 Z M3.53854545,12.4088889 C3.47636364,11.8108444 3.02690909,11.4812444 2.50290909,10.3708444 C1.97854545,9.26044444 2.328,9.13848889 2.41527273,9.05315556 C2.50290909,8.96746667 1.82872727,8.61368889 1.85381818,7.75964444 C1.87890909,6.90524444 1.14254545,7.1008 1.27963636,6.19768889 C1.39745455,5.42328889 1.55018182,4.88426667 1.47381818,4.58417778 C0.957818182,5.56515556 0.664363636,6.67591111 0.664363636,7.85315556 C0.664363636,10.4938667 2.13272727,12.8046222 4.31236364,14.0494222 L4.27490909,13.8851556 C4.27490909,13.8851556 3.60109091,13.0065778 3.53854545,12.4088889 Z M8.48072727,1.69493333 C8.28109091,2.31715556 8.26109091,2.13333333 8.03127273,2.26844444 C7.78254545,2.41457778 7.65709091,2.51235556 7.44472727,2.80533333 C7.23272727,3.09831111 6.74581818,3.03715556 7.01381818,2.72 C7.28145455,2.40248889 7.18290909,1.54844444 7.03309091,1.31662222 C7.03309091,1.31662222 6.83345455,1.13351111 7.28254545,1.06026667 C7.732,0.987022222 8.68036364,1.07271111 8.48072727,1.69493333 Z"></path></svg>
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/icons/73b355/location.svg b/core/themes/stable9/images/core/icons/73b355/location.svg
new file mode 100644
index 0000000000..a0f2ab0afc
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/73b355/location.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#73b355"><path d="M5.4749999,0 C2.43935876,0 0,2.45021982 0,5.50153207 C0,8.5518841 5.4749999,16.0038459 5.4749999,16.0038459 C5.4749999,16.0038459 10.9499998,8.5518841 10.9499998,5.50153207 C10.9499998,2.45021982 8.51064105,0 5.4749999,0 Z M5.89615374,8.00192294 C4.48158136,8.00192294 3.36923071,6.89054251 3.36923071,5.4749999 C3.36923071,4.06042752 4.48061114,2.94807687 5.89615374,2.94807687 C7.31072613,2.94807687 8.42307678,4.0594573 8.42307678,5.4749999 C8.42307678,6.89051825 7.31075039,8.00192294 5.89615374,8.00192294 Z"></path></svg>
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/icons/787878/barchart.svg b/core/themes/stable9/images/core/icons/787878/barchart.svg
new file mode 100644
index 0000000000..1929619481
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/barchart.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#787878" d="M4 13.529c0 .275-.225.5-.5.5h-3c-.275 0-.5-.225-.5-.5v-4.25c0-.274.225-.5.5-.5h3c.275 0 .5.226.5.5v4.25zM10.002 13.529c0 .275-.225.5-.5.5h-3.002c-.275 0-.5-.225-.5-.5v-13c0-.275.225-.5.5-.5h3.002c.275 0 .5.225.5.5v13zM16.002 13.529c0 .275-.225.5-.5.5h-3c-.275 0-.5-.225-.5-.5v-9.5c0-.275.225-.5.5-.5h3c.275 0 .5.225.5.5v9.5z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/chevron-disc-down.svg b/core/themes/stable9/images/core/icons/787878/chevron-disc-down.svg
new file mode 100644
index 0000000000..b3081503ee
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/chevron-disc-down.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M8.002 1c-3.869 0-7.002 3.134-7.002 7s3.133 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm4.459 6.336l-4.105 4.105c-.196.189-.515.189-.708 0l-4.107-4.105c-.194-.194-.194-.513 0-.707l.977-.978c.194-.194.513-.194.707 0l2.422 2.421c.192.195.513.195.708 0l2.422-2.42c.188-.194.512-.194.707 0l.977.977c.193.194.193.513 0 .707z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/chevron-disc-up.svg b/core/themes/stable9/images/core/icons/787878/chevron-disc-up.svg
new file mode 100644
index 0000000000..13d86d925e
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/chevron-disc-up.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M8.002 1c-3.867 0-7.002 3.134-7.002 7s3.135 7 7.002 7 7-3.134 7-7-3.133-7-7-7zm4.462 8.37l-.979.979c-.19.19-.516.19-.707 0l-2.422-2.419c-.196-.194-.515-.194-.708 0l-2.423 2.417c-.194.193-.513.193-.707 0l-.977-.976c-.194-.194-.194-.514 0-.707l4.106-4.106c.193-.194.515-.194.708 0l4.109 4.105c.19.192.19.513 0 .707z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/cog.svg b/core/themes/stable9/images/core/icons/787878/cog.svg
new file mode 100644
index 0000000000..cf8c232dfa
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/cog.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M15.176 9.041c.045-.327.076-.658.076-.998 0-.36-.035-.71-.086-1.056l-2.275-.293c-.115-.426-.283-.827-.498-1.201l1.396-1.808c-.416-.551-.906-1.039-1.459-1.452l-1.807 1.391c-.373-.215-.774-.383-1.2-.499l-.292-2.252c-.338-.048-.677-.081-1.029-.081s-.694.033-1.032.082l-.291 2.251c-.426.116-.826.284-1.2.499l-1.805-1.391c-.552.413-1.044.901-1.459 1.452l1.395 1.808c-.215.374-.383.774-.499 1.2l-2.276.294c-.05.346-.085.696-.085 1.056 0 .34.031.671.077.998l2.285.295c.115.426.284.826.499 1.2l-1.417 1.836c.411.55.896 1.038 1.443 1.452l1.842-1.42c.374.215.774.383 1.2.498l.298 2.311c.337.047.677.08 1.025.08s.688-.033 1.021-.08l.299-2.311c.426-.115.826-.283 1.201-.498l1.842 1.42c.547-.414 1.031-.902 1.443-1.452l-1.416-1.837c.215-.373.383-.773.498-1.199l2.286-.295zm-7.174 1.514c-1.406 0-2.543-1.137-2.543-2.541 0-1.402 1.137-2.541 2.543-2.541 1.402 0 2.541 1.138 2.541 2.541 0 1.404-1.139 2.541-2.541 2.541z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/ex.svg b/core/themes/stable9/images/core/icons/787878/ex.svg
new file mode 100644
index 0000000000..ca0d409dc5
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/ex.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/file.svg b/core/themes/stable9/images/core/icons/787878/file.svg
new file mode 100644
index 0000000000..affde4c834
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/file.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#787878" d="M12.502 7h-5c-.276 0-.502-.225-.502-.5v-5c0-.275-.225-.5-.5-.5h-3c-.275 0-.5.225-.5.5v12.029c0 .275.225.5.5.5h9.002c.275 0 .5-.225.5-.5v-6.029c0-.275-.225-.5-.5-.5zM8.502 6h4c.275 0 .34-.159.146-.354l-4.293-4.292c-.195-.195-.353-.129-.353.146v4c0 .275.225.5.5.5z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/key.svg b/core/themes/stable9/images/core/icons/787878/key.svg
new file mode 100644
index 0000000000..6558c8e28e
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/key.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px"><path fill="#787878" d="M13.727,7.714C12.418,6.406,10.479,6.145,8.9,6.896L3.001,1H0v2h1l0,0v1.618L1.378,5H3v1h1v1.622h1.622l0.864,0.862L5.5,9.5l0.992,0.99c-0.062,1.162,0.335,2.346,1.223,3.234c1.66,1.653,4.352,1.653,6.012,0C15.385,12.064,15.385,9.373,13.727,7.714z M12.898,12.896c-0.646,0.646-1.693,0.646-2.338,0c-0.646-0.646-0.646-1.692,0-2.338c0.645-0.646,1.688-0.646,2.338,0C13.543,11.204,13.543,12.252,12.898,12.896z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/move.svg b/core/themes/stable9/images/core/icons/787878/move.svg
new file mode 100644
index 0000000000..788b7e1a8d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/move.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/orgchart.svg b/core/themes/stable9/images/core/icons/787878/orgchart.svg
new file mode 100644
index 0000000000..84888948ae
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/orgchart.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px"><path fill="#787878" d="M15.002,11.277c0-0.721,0-1.471,0-2.014c0-1.456-0.824-2.25-2.25-2.25c-1.428,0-3.5,0-3.5,0c-0.139,0-0.25-0.112-0.25-0.25v-2.04c0.596-0.346,1-0.984,1-1.723c0-1.104-0.895-2-2-2C6.896,1,6,1.896,6,3c0,0.738,0.405,1.376,1,1.722v2.042c0,0.138-0.112,0.25-0.25,0.25c0,0-2.138,0-3.5,0S1,7.932,1,9.266c0,0.521,0,1.277,0,2.012c-0.595,0.353-1,0.984-1,1.729c0,1.104,0.896,2,2,2s2-0.896,2-2c0-0.732-0.405-1.377-1-1.729V9.266c0-0.139,0.112-0.25,0.25-0.25h3.536C6.904,9.034,7,9.126,7,9.25v2.027C6.405,11.624,6,12.26,6,13c0,1.104,0.896,2,2.002,2c1.105,0,2-0.896,2-2c0-0.738-0.404-1.376-1-1.723V9.25c0-0.124,0.098-0.216,0.215-0.234h3.535c0.137,0,0.25,0.111,0.25,0.25v2.012c-0.596,0.353-1,0.984-1,1.729c0,1.104,0.896,2,2,2s2-0.896,2-2C16.002,12.262,15.598,11.623,15.002,11.277z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/paintbrush.svg b/core/themes/stable9/images/core/icons/787878/paintbrush.svg
new file mode 100644
index 0000000000..fdbd29650a
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/paintbrush.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M8.184 7.928l-1.905 1.983-3.538-2.436 4.714-4.713 2.623 3.183-1.894 1.983zm-1.746-7.523c-.236-.416-.803-.649-1.346.083-.259.349-4.727 4.764-4.91 4.983-.182.218-.294.721.044.976.34.258 5.611 3.933 5.611 3.933l-.225.229c.7.729.816.854 1.046.863.75.016 2.035-1.457 2.578-.854.541.604 3.537 3.979 3.537 3.979.51.531 1.305.559 1.815.041.521-.521.541-1.311.025-1.848 0 0-2.742-2.635-3.904-3.619-.578-.479.869-2.051.854-2.839-.008-.238-.125-.361-.823-1.095l-.22.243c0 .003-3.846-4.659-4.082-5.075z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/pencil.svg b/core/themes/stable9/images/core/icons/787878/pencil.svg
new file mode 100644
index 0000000000..ca821f305d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/pencil.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#787878" d="M14.545 3.042l-1.586-1.585c-.389-.389-1.025-.389-1.414 0l-1.293 1.293 3 3 1.293-1.293c.389-.389.389-1.026 0-1.415z"/><rect fill="#787878" x="5.129" y="3.8" transform="matrix(-.707 -.707 .707 -.707 6.189 20.064)" width="4.243" height="9.899"/><path fill="#787878" d="M.908 14.775c-.087.262.055.397.316.312l2.001-.667-1.65-1.646-.667 2.001z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/people.svg b/core/themes/stable9/images/core/icons/787878/people.svg
new file mode 100644
index 0000000000..9b9c6640c4
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/people.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#787878" d="M6.722 11.291l.451-.17-.165-.32c-.536-1.039-.685-1.934-.761-2.672-.082-.808-.144-2.831 1.053-4.189.244-.278.493-.493.743-.675.012-.826-.135-1.766-.646-2.345-.618-.7-1.4-.787-1.4-.787l-.497-.055-.498.055s-.783.087-1.398.787c-.617.702-.717 1.948-.625 2.855.06.583.17 1.263.574 2.05.274.533.341.617.355 1.01.022.595.027 1.153-.671 1.538-.697.383-1.564.508-2.403 1.088-.596.41-.709 1.033-.78 1.459l-.051.41c-.029.273.173.498.448.498h5.012c.457-.24.89-.402 1.259-.537zM5.064 15.096c.07-.427.184-1.05.78-1.46.838-.581 1.708-.706 2.404-1.089.699-.385.693-.943.672-1.537-.014-.393-.08-.477-.354-1.01-.406-.787-.515-1.467-.576-2.049-.093-.909.008-2.155.625-2.856.615-.7 1.398-.787 1.398-.787l.492-.055h.002l.496.055s.781.087 1.396.787c.615.701.72 1.947.623 2.855-.062.583-.172 1.262-.571 2.049-.271.533-.341.617-.354 1.01-.021.595-.062 1.22.637 1.604.697.385 1.604.527 2.438 1.104.923.641.822 1.783.822 1.783-.022.275-.269.5-.542.5h-9.991c-.275 0-.477-.223-.448-.496l.051-.408z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/plus.svg b/core/themes/stable9/images/core/icons/787878/plus.svg
new file mode 100644
index 0000000000..53f7fa5364
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/plus.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px"><path fill="#787878" d="M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/push-left.svg b/core/themes/stable9/images/core/icons/787878/push-left.svg
new file mode 100644
index 0000000000..dc053baf43
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/push-left.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#787878" d="M2.5 2h-2.491v12.029h2.491c.276 0 .5-.225.5-.5v-11.029c0-.276-.224-.5-.5-.5zM14.502 6.029h-4c-.275 0-.5-.225-.5-.5v-1c0-.275-.16-.341-.354-.146l-3.294 3.292c-.194.194-.194.513 0 .708l3.294 3.293c.188.193.354.129.354-.146v-1c0-.271.227-.5.5-.5h4c.275 0 .5-.225.5-.5v-3c0-.276-.225-.501-.5-.501z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/push-right.svg b/core/themes/stable9/images/core/icons/787878/push-right.svg
new file mode 100644
index 0000000000..f42f1296e1
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/push-right.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#787878" d="M13.51 2c-.275 0-.5.224-.5.5v11.029c0 .275.225.5.5.5h2.492v-12.029h-2.492zM6.362 4.382c-.194-.194-.353-.128-.353.147v1c0 .275-.225.5-.5.5h-4c-.275 0-.5.225-.5.5v3c0 .271.225.5.5.5h4c.275 0 .5.225.5.5v1c0 .271.159.34.354.146l3.295-3.293c.193-.194.193-.513 0-.708l-3.296-3.292z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/push-up.svg b/core/themes/stable9/images/core/icons/787878/push-up.svg
new file mode 100644
index 0000000000..f92928452c
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/push-up.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#787878" d="M1.986.019v2.491c0 .276.225.5.5.5h11.032c.275 0 .5-.224.5-.5v-2.491h-12.032zM8.342 6.334c-.193-.194-.513-.194-.708 0l-3.294 3.293c-.194.195-.129.353.146.353h1c.275 0 .5.227.5.5v4.02c0 .275.225.5.5.5h3.002c.271 0 .5-.225.5-.5v-4.02c0-.274.225-.5.5-.5h1c.271 0 .34-.158.145-.354l-3.291-3.292z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/puzzlepiece.svg b/core/themes/stable9/images/core/icons/787878/puzzlepiece.svg
new file mode 100644
index 0000000000..c18c813e31
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/puzzlepiece.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M11.002 11v2.529c0 .275-.225.471-.5.471h-3c-.827 0-1.112-.754-.604-1.316l.81-.725c.509-.562.513-1.461-.097-2.01-.383-.344-1.027-.728-2.111-.728s-1.727.386-2.109.731c-.609.549-.606 1.45-.097 2.015l.808.717c.509.562.223 1.316-.602 1.316h-3c-.276 0-.5-.193-.5-.471v-9.029c0-.276.224-.5.5-.5h3c.825 0 1.111-.768.602-1.332l-.808-.73c-.51-.563-.513-1.465.097-2.014.382-.344 1.025-.731 2.109-.731s1.728.387 2.111.731c.608.548.606 1.45.097 2.014l-.81.73c-.509.564-.223 1.332.603 1.332h3c.274 0 .5.224.5.5v2.5c0 .825.642 1.111 1.233.602l.771-.808c.599-.51 1.547-.513 2.127.097.364.383.772 1.025.772 2.109s-.408 1.727-.771 2.109c-.58.604-1.529.604-2.127.097l-.77-.808c-.593-.509-1.234-.223-1.234.602z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/questionmark-disc.svg b/core/themes/stable9/images/core/icons/787878/questionmark-disc.svg
new file mode 100644
index 0000000000..2886d640d0
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/questionmark-disc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M8.002 1c-3.868 0-7.002 3.134-7.002 7s3.134 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm3 5c0 .551-.16 1.085-.477 1.586l-.158.22c-.07.093-.189.241-.361.393-.168.148-.35.299-.545.447l-.203.189-.141.129-.096.17-.021.235v.63h-2.001v-.704c.026-.396.078-.73.204-.999.125-.269.271-.498.439-.688l.225-.21-.01-.015.176-.14.137-.128c.186-.139.357-.277.516-.417l.148-.18c.098-.152.168-.323.168-.518 0-.552-.447-1-1-1s-1.002.448-1.002 1h-2c0-1.657 1.343-3 3.002-3 1.656 0 3 1.343 3 3zm-1.75 6.619c0 .344-.281.625-.625.625h-1.25c-.345 0-.626-.281-.626-.625v-1.238c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.238z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/twistie-down.svg b/core/themes/stable9/images/core/icons/787878/twistie-down.svg
new file mode 100644
index 0000000000..b3692bde80
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/twistie-down.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M2.611 5.393c-.17-.216-.084-.393.191-.393h10.397c.275 0 .361.177.191.393l-5.08 6.464c-.17.216-.452.216-.622 0l-5.077-6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/twistie-up.svg b/core/themes/stable9/images/core/icons/787878/twistie-up.svg
new file mode 100644
index 0000000000..1fc34ce196
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/twistie-up.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M13.391 10.607c.17.216.084.393-.191.393h-10.398c-.275 0-.361-.177-.191-.393l5.08-6.464c.17-.216.45-.216.62 0l5.08 6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/787878/wrench.svg b/core/themes/stable9/images/core/icons/787878/wrench.svg
new file mode 100644
index 0000000000..0f38bdf616
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/787878/wrench.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#787878" d="M14.416 11.586l-.01-.008v-.001l-5.656-5.656c.15-.449.252-.921.252-1.421 0-2.485-2.016-4.5-4.502-4.5-.505 0-.981.102-1.434.255l2.431 2.431-.588 2.196-2.196.588-2.445-2.445c-.162.464-.268.956-.268 1.475 0 2.486 2.014 4.5 4.5 4.5.5 0 .972-.102 1.421-.251l5.667 5.665c.781.781 2.047.781 2.828 0s.781-2.047 0-2.828z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/chevron-disc-left.svg b/core/themes/stable9/images/core/icons/bebebe/chevron-disc-left.svg
new file mode 100644
index 0000000000..70cf58c40f
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/chevron-disc-left.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M8.002 1c-3.868 0-7.002 3.133-7.002 7 0 3.865 3.134 7 7.002 7 3.865 0 7-3.135 7-7 0-3.867-3.135-7-7-7zm2.348 10.482l-.977.977c-.195.193-.514.193-.707 0l-4.108-4.105c-.194-.195-.194-.514 0-.708l4.108-4.105c.193-.194.512-.194.707 0l.979.977c.191.194.191.513 0 .707l-2.422 2.421c-.195.194-.195.515 0 .708l2.419 2.421c.196.19.196.512.001.707z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/chevron-disc-right.svg b/core/themes/stable9/images/core/icons/bebebe/chevron-disc-right.svg
new file mode 100644
index 0000000000..d026581793
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/chevron-disc-right.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M8.002 1c-3.868 0-7.002 3.135-7.002 7 0 3.867 3.134 7 7.002 7 3.865 0 7-3.133 7-7 0-3.865-3.135-7-7-7zm3.441 7.357l-4.106 4.104c-.194.191-.514.191-.708 0l-.978-.979c-.194-.193-.194-.518 0-.707l2.423-2.421c.195-.195.195-.514 0-.708l-2.422-2.421c-.194-.194-.194-.513 0-.707l.977-.977c.194-.194.514-.194.708 0l4.106 4.108c.191.194.191.515 0 .708z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/cog.svg b/core/themes/stable9/images/core/icons/bebebe/cog.svg
new file mode 100644
index 0000000000..31f8d49abd
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/cog.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M15.176 9.041c.045-.327.076-.658.076-.998 0-.36-.035-.71-.086-1.056l-2.275-.293c-.115-.426-.283-.827-.498-1.201l1.396-1.808c-.416-.551-.906-1.039-1.459-1.452l-1.807 1.391c-.373-.215-.774-.383-1.2-.499l-.292-2.252c-.338-.048-.677-.081-1.029-.081s-.694.033-1.032.082l-.291 2.251c-.426.116-.826.284-1.2.499l-1.805-1.391c-.552.413-1.044.901-1.459 1.452l1.395 1.808c-.215.374-.383.774-.499 1.2l-2.276.294c-.05.346-.085.696-.085 1.056 0 .34.031.671.077.998l2.285.295c.115.426.284.826.499 1.2l-1.417 1.836c.411.55.896 1.038 1.443 1.452l1.842-1.42c.374.215.774.383 1.2.498l.298 2.311c.337.047.677.08 1.025.08s.688-.033 1.021-.08l.299-2.311c.426-.115.826-.283 1.201-.498l1.842 1.42c.547-.414 1.031-.902 1.443-1.452l-1.416-1.837c.215-.373.383-.773.498-1.199l2.286-.295zm-7.174 1.514c-1.406 0-2.543-1.137-2.543-2.541 0-1.402 1.137-2.541 2.543-2.541 1.402 0 2.541 1.138 2.541 2.541 0 1.404-1.139 2.541-2.541 2.541z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/ex.svg b/core/themes/stable9/images/core/icons/bebebe/ex.svg
new file mode 100644
index 0000000000..bc4f40baf2
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/ex.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/hamburger.svg b/core/themes/stable9/images/core/icons/bebebe/hamburger.svg
new file mode 100644
index 0000000000..7d984d219d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/hamburger.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#bebebe" d="M14.752 6h-13.502c-.69 0-1.25.56-1.25 1.25v.5c0 .689.56 1.25 1.25 1.25h13.502c.689 0 1.25-.561 1.25-1.25v-.5c0-.69-.561-1.25-1.25-1.25zM14.752 0h-13.502c-.69 0-1.25.56-1.25 1.25v.5c0 .69.56 1.25 1.25 1.25h13.502c.689 0 1.25-.56 1.25-1.25v-.5c0-.69-.561-1.25-1.25-1.25zM14.752 12h-13.502c-.69 0-1.25.561-1.25 1.25v.5c0 .689.56 1.25 1.25 1.25h13.502c.689 0 1.25-.561 1.25-1.25v-.5c0-.689-.561-1.25-1.25-1.25z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/house.svg b/core/themes/stable9/images/core/icons/bebebe/house.svg
new file mode 100644
index 0000000000..c4a88345db
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/house.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><polygon fill="#bebebe" points="8.002,0 0,8 1,9 2,9 2,15 6.5,15 6.5,10 9.502,10 9.502,15 14.002,15 14.002,9 15.002,9 16.002,8"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/key.svg b/core/themes/stable9/images/core/icons/bebebe/key.svg
new file mode 100644
index 0000000000..8cf85d87cd
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/key.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px"><path fill="#bebebe" d="M13.727,7.714C12.418,6.406,10.479,6.145,8.9,6.896L3.001,1H0v2h1l0,0v1.618L1.378,5H3v1h1v1.622h1.622l0.864,0.862L5.5,9.5l0.992,0.99c-0.062,1.162,0.335,2.346,1.223,3.234c1.66,1.653,4.352,1.653,6.012,0C15.385,12.064,15.385,9.373,13.727,7.714z M12.898,12.896c-0.646,0.646-1.693,0.646-2.338,0c-0.646-0.646-0.646-1.692,0-2.338c0.645-0.646,1.688-0.646,2.338,0C13.543,11.204,13.543,12.252,12.898,12.896z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/move.svg b/core/themes/stable9/images/core/icons/bebebe/move.svg
new file mode 100644
index 0000000000..98a0f91cc4
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/move.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M14.904 7.753l-2.373-2.372c-.291-.292-.529-.193-.529.22v1.399h-3v-3h1.398c.414 0 .512-.239.221-.53l-2.371-2.372c-.137-.136-.36-.136-.497 0l-2.372 2.372c-.292.292-.193.53.22.53h1.399v3h-3v-1.369c0-.413-.239-.511-.53-.22l-2.372 2.372c-.136.136-.136.359 0 .494l2.372 2.372c.291.292.53.192.53-.219v-1.43h3v3h-1.4c-.413 0-.511.238-.22.529l2.374 2.373c.137.137.36.137.495 0l2.373-2.373c.29-.291.19-.529-.222-.529h-1.398v-3h3v1.4c0 .412.238.511.529.219l2.373-2.371c.137-.137.137-.359 0-.495z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/pencil.svg b/core/themes/stable9/images/core/icons/bebebe/pencil.svg
new file mode 100644
index 0000000000..cdfe4c2b82
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/pencil.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#bebebe" d="M14.545 3.042l-1.586-1.585c-.389-.389-1.025-.389-1.414 0l-1.293 1.293 3 3 1.293-1.293c.389-.389.389-1.026 0-1.415z"/><rect fill="#bebebe" x="5.129" y="3.8" transform="matrix(-.707 -.707 .707 -.707 6.189 20.064)" width="4.243" height="9.899"/><path fill="#bebebe" d="M.908 14.775c-.087.262.055.397.316.312l2.001-.667-1.65-1.646-.667 2.001z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/person.svg b/core/themes/stable9/images/core/icons/bebebe/person.svg
new file mode 100644
index 0000000000..f44e1fd58d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/person.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M1 15c-.275 0-.498-.225-.496-.5 0 0 .007-.746 1.071-1.512 1.138-.818 2.347-.969 3.308-1.498s.954-1.299.925-2.115c-.019-.543-.112-.657-.489-1.392-.556-1.084-.709-2.021-.791-2.823-.127-1.252.011-3.035.86-4.001.847-.964 2.114-1.104 2.114-1.104l.5-.055.498.055s1.266.14 2.113 1.104c.85.966.988 2.75.859 4.001-.08.802-.234 1.739-.791 2.823-.377.734-.476.849-.488 1.392-.029.816-.035 1.586.926 2.115s2.17.68 3.307 1.498c1.064.766 1.072 1.512 1.072 1.512.002.275-.221.5-.496.5h-14.002z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/plus.svg b/core/themes/stable9/images/core/icons/bebebe/plus.svg
new file mode 100644
index 0000000000..500664891a
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/plus.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px"><path fill="#bebebe" d="M0.656,9.023c0,0.274,0.224,0.5,0.499,0.5l4.853,0.001c0.274-0.001,0.501,0.226,0.5,0.5l0.001,4.853 c-0.001,0.273,0.227,0.5,0.501,0.5l1.995-0.009c0.273-0.003,0.497-0.229,0.5-0.503l0.002-4.806c0-0.272,0.228-0.5,0.499-0.502 l4.831-0.021c0.271-0.005,0.497-0.23,0.501-0.502l0.008-1.998c0-0.276-0.225-0.5-0.499-0.5l-4.852,0c-0.275,0-0.502-0.228-0.501-0.5 L9.493,1.184c0-0.275-0.225-0.499-0.5-0.499L6.997,0.693C6.722,0.694,6.496,0.92,6.495,1.195L6.476,6.026 c-0.001,0.274-0.227,0.5-0.501,0.5L1.167,6.525C0.892,6.526,0.665,6.752,0.665,7.026L0.656,9.023z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/push-left.svg b/core/themes/stable9/images/core/icons/bebebe/push-left.svg
new file mode 100644
index 0000000000..6fe779cc7d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/push-left.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#bebebe" d="M2.5 2h-2.491v12.029h2.491c.276 0 .5-.225.5-.5v-11.029c0-.276-.224-.5-.5-.5zM14.502 6.029h-4c-.275 0-.5-.225-.5-.5v-1c0-.275-.16-.341-.354-.146l-3.294 3.292c-.194.194-.194.513 0 .708l3.294 3.293c.188.193.354.129.354-.146v-1c0-.271.227-.5.5-.5h4c.275 0 .5-.225.5-.5v-3c0-.276-.225-.501-.5-.501z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/push-right.svg b/core/themes/stable9/images/core/icons/bebebe/push-right.svg
new file mode 100644
index 0000000000..c79edc21d9
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/push-right.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#bebebe" d="M13.51 2c-.275 0-.5.224-.5.5v11.029c0 .275.225.5.5.5h2.492v-12.029h-2.492zM6.362 4.382c-.194-.194-.353-.128-.353.147v1c0 .275-.225.5-.5.5h-4c-.275 0-.5.225-.5.5v3c0 .271.225.5.5.5h4c.275 0 .5.225.5.5v1c0 .271.159.34.354.146l3.295-3.293c.193-.194.193-.513 0-.708l-3.296-3.292z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/push-up.svg b/core/themes/stable9/images/core/icons/bebebe/push-up.svg
new file mode 100644
index 0000000000..3de7aaccf6
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/push-up.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#bebebe" d="M1.986.019v2.491c0 .276.225.5.5.5h11.032c.275 0 .5-.224.5-.5v-2.491h-12.032zM8.342 6.334c-.193-.194-.513-.194-.708 0l-3.294 3.293c-.194.195-.129.353.146.353h1c.275 0 .5.227.5.5v4.02c0 .275.225.5.5.5h3.002c.271 0 .5-.225.5-.5v-4.02c0-.274.225-.5.5-.5h1c.271 0 .34-.158.145-.354l-3.291-3.292z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/questionmark-disc.svg b/core/themes/stable9/images/core/icons/bebebe/questionmark-disc.svg
new file mode 100644
index 0000000000..1363940d5e
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/questionmark-disc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M8.002 1c-3.868 0-7.002 3.134-7.002 7s3.134 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm3 5c0 .551-.16 1.085-.477 1.586l-.158.22c-.07.093-.189.241-.361.393-.168.148-.35.299-.545.447l-.203.189-.141.129-.096.17-.021.235v.63h-2.001v-.704c.026-.396.078-.73.204-.999.125-.269.271-.498.439-.688l.225-.21-.01-.015.176-.14.137-.128c.186-.139.357-.277.516-.417l.148-.18c.098-.152.168-.323.168-.518 0-.552-.447-1-1-1s-1.002.448-1.002 1h-2c0-1.657 1.343-3 3.002-3 1.656 0 3 1.343 3 3zm-1.75 6.619c0 .344-.281.625-.625.625h-1.25c-.345 0-.626-.281-.626-.625v-1.238c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.238z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/star-empty.svg b/core/themes/stable9/images/core/icons/bebebe/star-empty.svg
new file mode 100644
index 0000000000..8d95a010ec
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/star-empty.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M15.455 5.468c-.107-.282-.377-.468-.68-.468h-4.26l-1.841-4.542c-.108-.277-.375-.458-.672-.458s-.565.181-.674.458l-1.843 4.542h-4.259c-.301 0-.571.186-.678.468-.108.282-.029.6.196.8l3.438 3.107-1.122 4.73c-.07.291.046.595.292.766.124.086.269.129.413.129.142 0 .283-.041.406-.124l3.831-2.583 3.828 2.583c.123.083.264.124.406.124.145 0 .289-.043.412-.129.246-.171.356-.475.293-.766l-1.121-4.73 3.438-3.107c.224-.2.304-.519.197-.8zm-5.021 3.475l.982 4.146-3.414-2.304-3.416 2.304.982-4.146-2.98-2.693h3.739l1.675-4.128 1.672 4.128h3.74l-2.98 2.693z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/bebebe/star.svg b/core/themes/stable9/images/core/icons/bebebe/star.svg
new file mode 100644
index 0000000000..66d3313c2a
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/bebebe/star.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#bebebe" d="M12.236 15c-.146 0-.283-.041-.406-.124l-3.828-2.583-3.83 2.583c-.123.083-.265.124-.406.124-.145 0-.289-.043-.413-.129-.246-.171-.362-.475-.292-.766l1.122-4.73-3.439-3.107c-.225-.2-.303-.519-.196-.8.106-.282.376-.468.678-.468h4.259l1.843-4.542c.109-.277.377-.458.674-.458.297 0 .564.181.674.458l1.84 4.542h4.262c.306 0 .57.186.683.468.104.281.024.601-.196.8l-3.439 3.107 1.121 4.73c.065.291-.047.595-.293.766-.129.086-.273.129-.418.129z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/e29700/warning.svg b/core/themes/stable9/images/core/icons/e29700/warning.svg
new file mode 100644
index 0000000000..1498a41f4d
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/e29700/warning.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#e29700"><path d="M14.66 12.316l-5.316-10.633c-.738-1.476-1.946-1.476-2.685 0l-5.317 10.633c-.738 1.477.008 2.684 1.658 2.684h10.002c1.65 0 2.396-1.207 1.658-2.684zm-7.66-8.316h2.002v5h-2.002v-5zm2.252 8.615c0 .344-.281.625-.625.625h-1.25c-.345 0-.626-.281-.626-.625v-1.239c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.239z"/></svg>
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/icons/e32700/error.svg b/core/themes/stable9/images/core/icons/e32700/error.svg
new file mode 100644
index 0000000000..151a1e67c9
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/e32700/error.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#e32700"><path d="M8.002 1c-3.868 0-7.002 3.134-7.002 7s3.134 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm4.025 9.284c.062.063.1.149.1.239 0 .091-.037.177-.1.24l-1.262 1.262c-.064.062-.15.1-.24.1s-.176-.036-.24-.1l-2.283-2.283-2.286 2.283c-.064.062-.15.1-.24.1s-.176-.036-.24-.1l-1.261-1.262c-.063-.062-.1-.148-.1-.24 0-.088.036-.176.1-.238l2.283-2.285-2.283-2.284c-.063-.064-.1-.15-.1-.24s.036-.176.1-.24l1.262-1.262c.063-.063.149-.1.24-.1.089 0 .176.036.24.1l2.285 2.284 2.283-2.284c.064-.063.15-.1.24-.1s.176.036.24.1l1.262 1.262c.062.063.1.149.1.24 0 .089-.037.176-.1.24l-2.283 2.284 2.283 2.284z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ee0000/ex.svg b/core/themes/stable9/images/core/icons/ee0000/ex.svg
new file mode 100644
index 0000000000..6b45a1d572
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ee0000/ex.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#ee0000" d="M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ee0000/required.svg b/core/themes/stable9/images/core/icons/ee0000/required.svg
new file mode 100644
index 0000000000..f7882d6df9
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ee0000/required.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#EE0000"  d="M0,7.562l1.114-3.438c2.565,0.906,4.43,1.688,5.59,2.35C6.398,3.553,6.237,1.544,6.22,0.447h3.511 c-0.05,1.597-0.234,3.6-0.558,6.003c1.664-0.838,3.566-1.613,5.714-2.325L16,7.562c-2.05,0.678-4.06,1.131-6.028,1.356 c0.984,0.856,2.372,2.381,4.166,4.575l-2.906,2.059c-0.935-1.274-2.041-3.009-3.316-5.206c-1.194,2.275-2.244,4.013-3.147,5.206 l-2.856-2.059c1.872-2.307,3.211-3.832,4.017-4.575C3.849,8.516,1.872,8.062,0,7.562"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/ex.svg b/core/themes/stable9/images/core/icons/ffffff/ex.svg
new file mode 100644
index 0000000000..24c13610d9
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/ex.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#ffffff" d="M3.51 13.925c.194.194.512.195.706.001l3.432-3.431c.194-.194.514-.194.708 0l3.432 3.431c.192.194.514.193.707-.001l1.405-1.417c.191-.195.189-.514-.002-.709l-3.397-3.4c-.192-.193-.192-.514-.002-.708l3.401-3.43c.189-.195.189-.515 0-.709l-1.407-1.418c-.195-.195-.513-.195-.707-.001l-3.43 3.431c-.195.194-.516.194-.708 0l-3.432-3.431c-.195-.195-.512-.194-.706.001l-1.407 1.417c-.194.195-.194.515 0 .71l3.403 3.429c.193.195.193.514-.001.708l-3.4 3.399c-.194.195-.195.516-.001.709l1.406 1.419z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/hamburger.svg b/core/themes/stable9/images/core/icons/ffffff/hamburger.svg
new file mode 100644
index 0000000000..708b09b6a4
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/hamburger.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#ffffff" d="M14.752 6h-13.502c-.69 0-1.25.56-1.25 1.25v.5c0 .689.56 1.25 1.25 1.25h13.502c.689 0 1.25-.561 1.25-1.25v-.5c0-.69-.561-1.25-1.25-1.25zM14.752 0h-13.502c-.69 0-1.25.56-1.25 1.25v.5c0 .69.56 1.25 1.25 1.25h13.502c.689 0 1.25-.56 1.25-1.25v-.5c0-.69-.561-1.25-1.25-1.25zM14.752 12h-13.502c-.69 0-1.25.561-1.25 1.25v.5c0 .689.56 1.25 1.25 1.25h13.502c.689 0 1.25-.561 1.25-1.25v-.5c0-.689-.561-1.25-1.25-1.25z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/house.svg b/core/themes/stable9/images/core/icons/ffffff/house.svg
new file mode 100644
index 0000000000..a55603f544
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/house.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><polygon fill="#ffffff" points="8.002,0 0,8 1,9 2,9 2,15 6.5,15 6.5,10 9.502,10 9.502,15 14.002,15 14.002,9 15.002,9 16.002,8"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/pencil.svg b/core/themes/stable9/images/core/icons/ffffff/pencil.svg
new file mode 100644
index 0000000000..229e480913
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/pencil.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g><path fill="#ffffff" d="M14.545 3.042l-1.586-1.585c-.389-.389-1.025-.389-1.414 0l-1.293 1.293 3 3 1.293-1.293c.389-.389.389-1.026 0-1.415z"/><rect fill="#ffffff" x="5.129" y="3.8" transform="matrix(-.707 -.707 .707 -.707 6.189 20.064)" width="4.243" height="9.899"/><path fill="#ffffff" d="M.908 14.775c-.087.262.055.397.316.312l2.001-.667-1.65-1.646-.667 2.001z"/></g></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/person.svg b/core/themes/stable9/images/core/icons/ffffff/person.svg
new file mode 100644
index 0000000000..1cb3548d87
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/person.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#ffffff" d="M1 15c-.275 0-.498-.225-.496-.5 0 0 .007-.746 1.071-1.512 1.138-.818 2.347-.969 3.308-1.498s.954-1.299.925-2.115c-.019-.543-.112-.657-.489-1.392-.556-1.084-.709-2.021-.791-2.823-.127-1.252.011-3.035.86-4.001.847-.964 2.114-1.104 2.114-1.104l.5-.055.498.055s1.266.14 2.113 1.104c.85.966.988 2.75.859 4.001-.08.802-.234 1.739-.791 2.823-.377.734-.476.849-.488 1.392-.029.816-.035 1.586.926 2.115s2.17.68 3.307 1.498c1.064.766 1.072 1.512 1.072 1.512.002.275-.221.5-.496.5h-14.002z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/questionmark-disc.svg b/core/themes/stable9/images/core/icons/ffffff/questionmark-disc.svg
new file mode 100644
index 0000000000..973af490fc
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/questionmark-disc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#ffffff" d="M8.002 1c-3.868 0-7.002 3.134-7.002 7s3.134 7 7.002 7c3.865 0 7-3.134 7-7s-3.135-7-7-7zm3 5c0 .551-.16 1.085-.477 1.586l-.158.22c-.07.093-.189.241-.361.393-.168.148-.35.299-.545.447l-.203.189-.141.129-.096.17-.021.235v.63h-2.001v-.704c.026-.396.078-.73.204-.999.125-.269.271-.498.439-.688l.225-.21-.01-.015.176-.14.137-.128c.186-.139.357-.277.516-.417l.148-.18c.098-.152.168-.323.168-.518 0-.552-.447-1-1-1s-1.002.448-1.002 1h-2c0-1.657 1.343-3 3.002-3 1.656 0 3 1.343 3 3zm-1.75 6.619c0 .344-.281.625-.625.625h-1.25c-.345 0-.626-.281-.626-.625v-1.238c0-.344.281-.625.626-.625h1.25c.344 0 .625.281.625.625v1.238z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/star-empty.svg b/core/themes/stable9/images/core/icons/ffffff/star-empty.svg
new file mode 100644
index 0000000000..28e6d36f9b
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/star-empty.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#ffffff" d="M15.455 5.468c-.107-.282-.377-.468-.68-.468h-4.26l-1.841-4.542c-.108-.277-.375-.458-.672-.458s-.565.181-.674.458l-1.843 4.542h-4.259c-.301 0-.571.186-.678.468-.108.282-.029.6.196.8l3.438 3.107-1.122 4.73c-.07.291.046.595.292.766.124.086.269.129.413.129.142 0 .283-.041.406-.124l3.831-2.583 3.828 2.583c.123.083.264.124.406.124.145 0 .289-.043.412-.129.246-.171.356-.475.293-.766l-1.121-4.73 3.438-3.107c.224-.2.304-.519.197-.8zm-5.021 3.475l.982 4.146-3.414-2.304-3.416 2.304.982-4.146-2.98-2.693h3.739l1.675-4.128 1.672 4.128h3.74l-2.98 2.693z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/star.svg b/core/themes/stable9/images/core/icons/ffffff/star.svg
new file mode 100644
index 0000000000..3610de2f8a
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/star.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#ffffff" d="M12.236 15c-.146 0-.283-.041-.406-.124l-3.828-2.583-3.83 2.583c-.123.083-.265.124-.406.124-.145 0-.289-.043-.413-.129-.246-.171-.362-.475-.292-.766l1.122-4.73-3.439-3.107c-.225-.2-.303-.519-.196-.8.106-.282.376-.468.678-.468h4.259l1.843-4.542c.109-.277.377-.458.674-.458.297 0 .564.181.674.458l1.84 4.542h4.262c.306 0 .57.186.683.468.104.281.024.601-.196.8l-3.439 3.107 1.121 4.73c.065.291-.047.595-.293.766-.129.086-.273.129-.418.129z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/twistie-down.svg b/core/themes/stable9/images/core/icons/ffffff/twistie-down.svg
new file mode 100644
index 0000000000..83c77fd7bb
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/twistie-down.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#FFFFFF" d="M2.611 5.393c-.17-.216-.084-.393.191-.393h10.397c.275 0 .361.177.191.393l-5.08 6.464c-.17.216-.452.216-.622 0l-5.077-6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/ffffff/twistie-up.svg b/core/themes/stable9/images/core/icons/ffffff/twistie-up.svg
new file mode 100644
index 0000000000..7b55028623
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/ffffff/twistie-up.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path fill="#FFFFFF" d="M13.391 10.607c.17.216.084.393-.191.393h-10.398c-.275 0-.361-.177-.191-.393l5.08-6.464c.17-.216.45-.216.62 0l5.08 6.464z"/></svg>
diff --git a/core/themes/stable9/images/core/icons/license.md b/core/themes/stable9/images/core/icons/license.md
new file mode 100644
index 0000000000..3422083108
--- /dev/null
+++ b/core/themes/stable9/images/core/icons/license.md
@@ -0,0 +1,9 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Ryan Frederick
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/core/themes/stable9/images/core/loading-small.gif b/core/themes/stable9/images/core/loading-small.gif
new file mode 100644
index 0000000000..5cbf6e7b75
--- /dev/null
+++ b/core/themes/stable9/images/core/loading-small.gif
@@ -0,0 +1,25 @@
+GIF89a    Ž{{{ssskkkcccZZZRRRJJJBBB:::111)))!!!   !NETSCAPE2.0   !
+  ,       &6MeK,kG8@qh/MGH:%#Gc4D2a8@@p2HfzH,%x"
+WrIix%pqX1*=##+="I#3g~"	">w	kX(_S(As}RTx (oBB4xZ	%q !
+  ,       'GQe04k<\nU6d	'U!`D % XeU(2H	`%)2(*PEš	b%K`1K:$2$P{({"#)1%%%	
+#k
+{"	?&*Evl [8w+!  !
+  ,       Ԡ'WUea<k,VDQJG7G`P6YQ4 ZCb4AQa^iU M!QCX#V
+
+n2  Q
+91 +1q~=wx:{e+"%"])<H*9H~1x%"t  !
+  ,       'gYe@kah<Z%VDeHDf!jd)X,"ϓ1
+Fj`:fQEdI:{*+:k$u"91>>	":)E*	)% # 
+"cI	(E+{`."W !
+  ,       ۠'w]eҲH뺉*S%Z"<bc"z$G`86F*>Q0DGѨU,5q@0EsJ:}aLG9}+#}%W1*:"R)L")D  n˺9R; ȶ#Ϊ!  !
+  ,      ߠ'$86pQx%N
+y<Rl"	BQHddzb`*!MLj옵F={2~5^|t"95""*~$	*	2 5	d#
+ "d	+
+oI5Uc pK  !
+  ,       'aeUk,bPަuG큫L.D"&D4a0ȒE2.ȍh0&b҅+v9ȕQI,JfEsHR2$bv#>#  {
+
+ 2
+H#"#$"0*	*+%{\"	%*NUȷLQ !	
+  ,       'ee4Ykb&ܴ8x,lh&8DRQQ4g5A)q_&dTBP@UF2A1*;$F$sm1"J$,+:+%	y%*	+
+	m#
+%"	"U^åA!  ;
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/loading.gif b/core/themes/stable9/images/core/loading.gif
new file mode 100644
index 0000000000..2dbcd624aa
--- /dev/null
+++ b/core/themes/stable9/images/core/loading.gif
@@ -0,0 +1,43 @@
+GIF89a0 0   ###'''(((---111555:::===CCCGGGKKKMMMQQQUUUZZZ^^^aaaggghhhmmmqqqwwwxxx{{{///333444>>>AAAEEEIIIOOORRRXXX```eeekkklllssszzz~~~&&&***,,,222666<<<JJJYYYrrrvvv|||...;;;HHHLLLPPPWWW\\\dddiii}}}%%%@@@DDDttt$$$+++777999]]]nnnuuuyyyFFFSSS___bbbppp)))                                                                                                                                                                                                                                                                  !NETSCAPE2.0   !-Made by Krasimira Nejcheva (www.loadinfo.net) ! 
+  ,    0 0  @pH,BApl: j vKf嚛X8kEz)Ï4wFD%}`%y	yP#/0)D3DG#0,C+}+B
+FD*k*D	ѽZƯ'CZؚ'NyҾ	Z0!M
+ѦNf< (Vra 5pEA(B@xxl;` ZD3̚HrQ÷p8HBH8"E"`P.PP0DMW@S Y/T @ p@@V^pPUDܸPp!maM-k!L㎜jp
+n 0HXfe+DO
+B B
+k!=1MUUs v=x y,T&L(!z6p` 7QoؿKw	q@,PX|&|X`t9Qy@ JIU 9E%@D | TO!  U %8MpP&и*<N@4@!Q4	B @Rs|c5!A6q ~A@_vЀu5	@h@A{F*K ! 
+  ,    0 0    56 JOOJCQ00TC;SQ<GGLT#4EAKTI8FJA57++$=CDARVVP94I,+MNϢSN	j@ŝ;'$=bhbJ4So W,AHb;46!a jtiE	' B@* 	Vp2@=(PrʍN=ܫT*G6R*%L &K@&)@ tQ	W߿) 
+4HHx;pcD'Mx1x>~@  1;d2 ;D@[ #/nҠ˪uW ٚhxHr·îݫWF?&9yk氅=x8<D%"I]6 '@$b@lPd@'9 ĉ<!!:T0ċC(Iyb0k@6x'=cID(n a:uJ ?(	c, FX4dIPv4HBlGA <YU@K(qi4TxV0YAhC6vmD=Չ ; D{G|z7Xث~J냆<kxl!5(Ew ;ѫ>Kj 7р.  ! 
+  ,    0 0   W WZZ<c##d<k,,+,k]'+,']W+We,eY`a[,d\cZci'jjJ;,_Wk0/#8ŎYcj'g8["СD4cwGh M|.ʡD: B&0NY:-0`xPP7t!|et3 ܳF̼GWt'Q3
+kmq4B"*PPƌL@8D.bbɒ"nW DWǅ 6ň2N5 1\
+n`hg$Oޢ56y̸ɂض
+1gxw\P[l"Fyg͟Cw#n徛_8^'`9m5Hٌ.Zc	yR~ p!e-&d-Ha,[< ? !Zt 9&	ab$
+r'(V;; A'2J."l '^&W4?$cl )X\L9ɕJfIbpa(]xC/8P$XL@)c^ Yx;,D8j	gAfJ@^z)^f8l$WJ(o  ;\c:_EEHЀE ! 
+  ,    0 0   HA W޼rÇcƌ8!j(
+?N$!#Ǔl҉?P,XAdKM*yOH-I;Ah!xEЛ	!O7'1&dA:$ 
+QB..q	O	UVrUrFIl'@k3RGŋ5`!N
+trf@y4]W47Lز%HF:Asf@w4jӸ>qP:z-	8Yܧ$+Cɩ4T(|ѓ`&,pۿOBQGw̡ZL!IWġ{`XA $TPTf1@M("wb}.!c$Rqr1x?DEI2ȤMōR" >b%_@2RD:n@r8! &6 
+9ys w(GXhLoa`7wr4LXQ@YqG
+)Gw*XL뮱A4jiȱ:;$ B-}hGr@`ȡJ;Cr]QGA,v0&ANzǭ pCWGms̑@A1u y(G_Jt2j3iuT,U;d u\AZAqlytD ! 
+  ,    0 0   HA h8ȰÆB!B3j$@ 5HD̀LtKQ9J /s`sOr2``JIS塂[|\8`F@6B!L@B̘0qdJ7ϖT	QRάlbUҥkv<Mx`F#YLw!B`XǂâY"͜7t !O}@1g 3":ڄ4.lQH6s7c< j<#	Y@rK#f<xe I&-{@_PQyt\!7 RD"+0X[T8>,  x+ Xh!-10`G=.B\B J% "F%b",~#(00Mb@th&
+#E*ڛ `i|$(L>EC!4$gp"^@iՑ~F é0p\F4PQF>)W>
+*]wƭ&[ڌG	ĢHF
+ji
+ў:FFQliĀ
+3;
+jH.{+
+.BU*:>4kA>ȩ,FlQ!7H#Hp7\@qCr'C<6@!ǐYʐG@B-҃A=P@ ! 
+  ,    0 0   H`AG =z䨡#JttNJwn ȱA9ƈcIǓ#)R$0:`RƘoDsaRdЀwzIIw<B9@ŋw^dul<<:Z	E<@+KJGF,xrqmJ`Bu!iNKz1CIr`#b3ёW=xZuI\윔A9sGRc#7$ΔtBtHt$ ͷtKd^8qrD"AWЃ820"&r2 Ʉ$B ~T!&+>'$(z ,v%5P#P Q.
+IG")>"^6NɖgؐfV0 <vE"	X@:	H	 $wh0F9*
+ c$S"t&wh# D&8x0X!U1UT
++t&xtZO: E'6|5Gj+6,kaBQxA0mtv@.5& drnEt4	VdB `&+IGp	'W'IB!O;EaxԀ&~pxBDWD9gS$XR$8<l"E0FH2QD\Azb'\=0o^II{ ! 
+  ,    0 0   HA `AxÇ4 A3D0j!>i@ǏG ɲ(崜	 ̏4H Orӣ5
+IhF,rD!ʁ9=p"?e Q7E9-CX{$8uX`ZրB5CjӪs r؋vB4VNv`Ea4Pڴ.$%܅G!40Ivc/~EѲAr{0֘]j H!/S5;|	5(s	FT?ܐ!Ƃn J`H|X`@fPHHX!ǒ%@" TS+2H}H c4jE8Ǝ0
+IFx(%(cif!b%2`_F !!YxQAHN	ȣxK]r	g!hPFal(+).h hAL`	2*F7.@B&C")/	Y:F{ls
+B@X0lIP	+0D&!D5a
+	T+n"|r@c~C
+
+4JB<e0j
+TnT 'BqzUh"GBbs{]02'hC=,0f5"$BfRö4 ! 
+  ,    0 0   HA ::ȰÆZ4h@Ë!Bdp:F2˂8>~L˛ v(sÅ#L)M
+h*  1XgH@NG_E#aY0Z^r5+)b&5ՆܺDp;ɷ1=
+Hp(aƍ>4k';YSFuCG^\MpU$nGk	jJT.i< (!K8<2@}Ztoy;>Cs&dD#C Â0p9R l0F4%R0`	Z8F  *xA@^x8.28~.fcJ<Ï@䅉DH=$I4y"W<СS(`he	zMe^y7za'Pm|^|F8eI$`g$ŢJ*f@ I'PQ(A@@&CpiBŨ	)pb"J	zĨxqi'g$e"&";Ey ,j `4\F-\@"A8 ĽM q@nj	'MpypoQ9t A4̰M8~A*!>4y1o񗸓DC927% C8M Bh@C`dH:"S@ ;
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/menu-collapsed-rtl.png b/core/themes/stable9/images/core/menu-collapsed-rtl.png
new file mode 100644
index 0000000000..dc8d0b8823
--- /dev/null
+++ b/core/themes/stable9/images/core/menu-collapsed-rtl.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR         Ő   PLTE   U~   tRNS @f   IDATc``R`r` B|O    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/menu-collapsed.png b/core/themes/stable9/images/core/menu-collapsed.png
new file mode 100644
index 0000000000..91f3fd40ed
--- /dev/null
+++ b/core/themes/stable9/images/core/menu-collapsed.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR         Ő   PLTE   U~   tRNS @f   IDATcV`@)ff | ̷    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/menu-expanded.png b/core/themes/stable9/images/core/menu-expanded.png
new file mode 100644
index 0000000000..46f39ecb35
--- /dev/null
+++ b/core/themes/stable9/images/core/menu-expanded.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR         Ő   PLTE   U~   tRNS @f   IDATxcP`       IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/throbber-active.gif b/core/themes/stable9/images/core/throbber-active.gif
new file mode 100644
index 0000000000..abf5c5d5b0
--- /dev/null
+++ b/core/themes/stable9/images/core/throbber-active.gif
@@ -0,0 +1,5 @@
+GIF89a   {{ƵZ5ʋkFs!NETSCAPE2.0   !  ,       a'4ɨ	bD@#@+!2$lԈ8$M"eP9٧P°tIK<yJ .=40v')+! !  ,       J'H|~EKpDC%aD p5o!RU
+sFQbH^2Npkb^! !  ,       B'Ϙ(zP:$! |(	@R`,ETk*R^+؉-5&
+^lN  !  ,       M'hb;x2*IOĕ:}$f@"hd@GWAU0QWCdpD1~׃(x3* !  ,       M'H|~E2.髳.=H `!f*"H^ KO|R+ !  ,       C'Ϙ(zзj|ѺUn(F%ze1"Zލ;ClTS! !  ,       H'hb;x͖GC)QM!Ԑ$hh-"`9i
+ !  ,       J'|~E2.髳.=Ñ[|~Cd[~lU& r"," fh%*Kt! !  ,       D'Ϙ(zзj|ѺBt}bwCA=hjE Gk慍WxЩ !  ,       M'hb;x2#(*(i`XQM)z-V8T"l׃ x'4* !  ,       N'H|~E2.+3GH !q>RH$J*Bx n>
+GV)<ߕ !  ,       C'Ϙ(z8cKԈ;d>&H̔	nR2uR0-EVmWW! ;
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/throbber-inactive.png b/core/themes/stable9/images/core/throbber-inactive.png
new file mode 100644
index 0000000000..befbb9f0a1
--- /dev/null
+++ b/core/themes/stable9/images/core/throbber-inactive.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR         Oy   bKGD      	pHYs        tIME4h7   IDAT(ϝ! DV??V"+##SiE2fYJU!{zZk9CD#i`ߟ3AD(@U!"PU֚sBro<_nTնm9¯s  0[ pj@fv (J @DBݿ҇;쩺2E]vΊ>!.3þ .t9ksNؔҠ'    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/tree-bottom.png b/core/themes/stable9/images/core/tree-bottom.png
new file mode 100644
index 0000000000..a55804571e
--- /dev/null
+++ b/core/themes/stable9/images/core/tree-bottom.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR   P   Q   8#ɛ   	PLTEU6   tRNS @f   &IDAT8cX040` QQQASC1@(b  1'6x    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/core/tree.png b/core/themes/stable9/images/core/tree.png
new file mode 100644
index 0000000000..89ea235014
--- /dev/null
+++ b/core/themes/stable9/images/core/tree.png
@@ -0,0 +1,3 @@
+PNG
+
+   IHDR   P   Q   8#ɛ   	PLTEU6   tRNS @f   'IDAT8OcX040` QQQAhTpTr  9I"    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/image/error.svg b/core/themes/stable9/images/image/error.svg
new file mode 100644
index 0000000000..1932ea402c
--- /dev/null
+++ b/core/themes/stable9/images/image/error.svg
@@ -0,0 +1,4 @@
+<svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
+    <path d="M0 0h24v24H0z" fill="none"/>
+    <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"/>
+</svg>
diff --git a/core/themes/stable9/images/image/upload.svg b/core/themes/stable9/images/image/upload.svg
new file mode 100644
index 0000000000..168bc43e6a
--- /dev/null
+++ b/core/themes/stable9/images/image/upload.svg
@@ -0,0 +1,4 @@
+<svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
+    <path d="M0 0h24v24H0z" fill="none"/>
+    <path d="M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z"/>
+</svg>
diff --git a/core/themes/stable9/images/media/icons/audio.png b/core/themes/stable9/images/media/icons/audio.png
new file mode 100644
index 0000000000..8ae7f9999e
--- /dev/null
+++ b/core/themes/stable9/images/media/icons/audio.png
@@ -0,0 +1,30 @@
+PNG
+
+   IHDR        J6   sRGB   hIDATxU}|@%B
+4KBAJ;ki+!X,G~`:qV
+*>IK^Ԑ(Gs}{wwf?;={3W6a\򵓓?
+3awk#˗߉J EśYf'ۮ\Er+`vƌމQ
+fi@
+
+m<X(qm:d3g'Xb16qn[2՜*W.+|؇Ȩ8gS `,JxmGRR`/JQih&ZX&k׮]<MR  j Nw} M1`f(BWX$G[Fk֬9ܶE;[C{2J`l]؄DFmq;QVI WJ+vP$#<gtX̻6ޚDޱ}t?ҳfzî] Ig*̓U)AR
+7a*mH|It0c0y5aQa(-S)yDU&*ܹbLk?yMlOq(/i.H%P,qEцOܼܤmjF94o⳺6q}G6SH7(ly;UӦ*\(k仰i#4|IJ4M$m4.[#KG	(%@gH{&c/4}{Ƽ-+hܱhZiobLSV`Z?=M`Jg[J0p^PJ\sIDiQM|"PeJ78_DQ;MJ.{T}111]oB2ڹL!n5WR¹0%VZȑ#<Jb) yT(,YCDy5y)Bg30}ݲe8qs)RnB/V[o~IUqr)M_f0%!Naiy-ߎM12Ґ|.\LᾸqN㐔xخv_f"mv27fIg*500/˾3pQ_$ISSPm&><#(L̙p*#4~EMmӦ
+%uVo#L]͠PJ@	(%PJkZ2 uoUKAs@γz;{1rEnyvAuŮxY:|
+;O:ʽ+O[L=Mˈ]8Ȓ+6[?[
+m?dtk@f6u{ӄvkz[{0g
+:bH 8@FC e䤾l22F>NkrQdɢ[΍0 ST
+:7d?2=sҎ;}?ȓMNN&K[As#>|슯^T_ {
+Mg{Wzk?¶W2<zې((YeWu 6*2 ug~#$@Ĭ_&ٳ'AƩ΢$nr<CCCRihq[n0-X2*: N	;i6$~^,itUYt.!<LO#l9GiQB
+Ԣ*iEYʰc `*ނ60(ȿtZ Y&m9i{G@W%Tᠹ[SR]2̙ft~Y**a&~pW
+:-}w9.]5QJ@	(%PJ@	(%PJ@	(%PJ@	t=B5l.vH0eR_ApsׯshZy,XiJ% Pih%SdZQY<'
+ʛya/8;*s{eJ3gΜE۷o_FxKRuEWqe=*'ɩa驠x	`$vxx+IӻLW+p6m*ޥJʺ;&͚Vpt`|]6ZnLjy4f2ɨB
+Q;\`vd9" _s	WGD
+
+L˷S΄5uǙXe8aW9§I])N8o	wV.1<~gYbk@lO~-0M$iHRѪ(Z@A+TZ.@IŨE+TLW]p!+{XfQI}!w@N$/5h,y&x%:e2oUނ(p"gѰuAxL,^QF[?/AY&u"?2F<{[ڕ}u=1C;X?ny緘2wٯM P_hQO<tz#r!˃o5>b#o	ҭԢp-`$֭[4~U󝖓q{+Xq9:h'&&Wv,hOܾ"~&]UnGyҀ{}qk`JhXmdspWXZv4h`c4M WV:< ýM:	&icd&fw5U^Y4ЛXS!CǙD4r/._aVW6$'AN{ƐFxO*]@,J ]?c޼y/g+獟Ft+*:/KGv43~<|rX*¼-0֏2$CtXm۶v-p$܍I钤H=4+S/rLSFִ^V|
+Q
+$%K"PR1j%.|e.Yiן
+r͹483w!\	߷o]/F7_Ú+_)%PJ@	(%PJ@	(%PJ@	(%PJ@	(%PJ@	(%PJ@	(%PJ@	(v2-̫{# ɝ?@s1s=>(aмs
+x87<PE>Ac̛iB]`؏UWE{oмI>N^-OΝ{O/.%uA7ЪK>ރ~/:.,8]hS{|*2::k7\\gl{ZIvc{-j`Q[pz1\kݺusB[M{KZm5nmY^9B}_7YUN3ldktn(Ǻj֢s6=e7mSfaO`TZ]+ߖ
+=a@TVԖ+N[(۴}Wjn8:!4v,ڊQ?w
+ DIpp;iQiҽ1	}AeU.r2&LZz2taʕJ/8ej)|xxfzYFٓ=Ԡpy1@λΩ<uĩtz<rJaVoժU9衟!N{hZAupF@J5hZAupF@J5hZAupF@J5hZAupF@JC+D:nf\:9|xٗ>\!watw;9m#Fzc9}.<o``F2]r䠍c`sAJz{]=큼oFv6ߏutg(F=pHW޾}  _3)!q!GgL'9REE	8qC_~NĉFܿIXZi1AYǩY#_0=x7"wُa[KiIߎ\5G^1?G\od-x YR@H\3H.613;aW! }s=3zagQ+pw-ak8hŨG>,kv0?ρ̰H-CVEc3|xm)xk|z)M0cBi&	uܯAWK.
+Q/CZ0[zEXxԠ+j-[L`C?1,	z)k	ړyF>`g[{B7=iB6om[jlMp[+q=4S`-XJ/	kxz;w\X\0]r}-ޫCQ;$>A5hzȖo:\ü	(&Iؚ5kN\DrF&Xm)٤dm׾%g~|Wzú-u
+WN(MOeZe˖V\]Wr[v9Klg0ccorOmY㹜szzۏT,HZ4ϜR!ҟfK=tƖǐcǾNN/у2w1O'=t&B0jyow'3ޖ7釵c<zFS)ZajRubLoch!e_	j]-sD/C'I:t紕jtHsAwN[	A'I:@4s_̅tǎà`z3_[fY։J̒ݫ<4F#@CmqW(1I4<cn;UO3zcՒ"U^{N#<c7kݫC==='VNbZյ%(F1^+Aq6|pE/љU)%PJ@	(%PJ@	(%PJ@	(%PJ@	(%P]Ee$ņ    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/media/icons/generic.png b/core/themes/stable9/images/media/icons/generic.png
new file mode 100644
index 0000000000..753d733a56
--- /dev/null
+++ b/core/themes/stable9/images/media/icons/generic.png
@@ -0,0 +1,12 @@
+PNG
+
+   IHDR        J6   sRGB   IDATxoE{?w-(h$\-$VczH5/#&JiBJ|a5ᅤD41M?"1`h+h]{-l}~7o3<Ι5WZ[oͻ>|87mr3W(/IxkrR(-BP`^,RoDyʡH<g [la8ƅ"ʅFFDMJyWW׶l♙!gRƑty;_
+2><<R
+BFE*bTܦK#)x3,%{:Y=Z"چ^KTך6:QW54@" {lh8>y]Ql|2[uC-6UZ<'@nϥH->G"=s_Tnkk7s@D񼓎_/,z91 sLxVuaf+)*PA^E'Ttۥ0 3$/(̉h9>;D ܣ0EFH~ʶI!=jO!#xGCKJpEqEwwwwMMMe09%Mr=<g	 	 	 ^gq2QHiѪTF-(',Z0I[E	ᷨHW]%ʆs/i|.t\/ 5#-FܛBҰH[4o'[i޶DdEv5K@^K'NDm3w阜TO^EףcOgġ߱ջ=:;;	MZׇ2qNɛڤU}Zf4_M9"sҪkF_:<~#x^SdôE/,:C~?қht9e
+haGζ(?QVvoF>FQitY7^$@$@$@$@$@$@$TgJީY8hdKQ?;~wzs-)v6}+'IP0#xJX5O܋"*XxrwWаP9	K ^$汲 K Ǿ)	q<<;f씠3( ~:}LM㲁.9SUL歠]y}O9BfhbJЎ#A߇~F19SW۰bӻG@lA ]ʭݣK 6@`*lUt"8 GMjϻGa᳘
+e@Yy5ݣRoBw" ̛wnfb8-E<x0]6*ݣׯ_/bujƽ{Ƨ=Hi3#hG]2ak46/@$fз7F	 ؉C"?1Ӑˈ`              O7
+̕No,I7_,Xp[L7> oBȂ0,I$(][A/tEHkc2ϧM2a8hx}}fxTn>2+Wm{ٶѢ.­Ϗ߃K1R ?}8u0t\ft*#z#.'yU
+t۷ow^n&5o߾)W_YЮaWtmo+ZĚ׶a4ag`[#+v;`[{r$Tl1k|#R^ۖ	־lЯjH=ui)@c1@ɭx(d.ևIKRN!ލWM7X?N7mL_8oFͳ@&m4Eӑ.Pfp=p=hu->{x5J3VT;h@= 1>#KkˋTu4}|1/˔G{߼7I,{̙Ŧi`BC(;h!lo(Q&CFd3!hGHЎ@{o1cu}KmB"a9R-1A/YFղ})h
+zɻGkh*)A;.v{-ʉf-PqZ`W٤wЀT/,Ne2	`x`F&8!4ml_|'F{Ӂu>D}h`W٤wB1`ߩ<!4!+'qSNE% rܔS2r	7Tֻw#yV.X흜` h)
+ idAcXRL-[0	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	D umx6p{Z,c/xƫW wY N:,,/whX#%J±	\mooCwzjݫѕخQ"6Nj|*4M*,F+'&&Nч7okޡ]!?k>&VRrt<ƍbݼyfIIJ+EcǎM~
+?7.(ҡuŗh<>rr*ZZ`onTթ\±bG9e	ЁVKYhcO2_yѡmPf+98y8voECafS8Kpؿh3#B۠Z&)!Ppϕ,dthȣcSSSC7ӡ%m	d: \RйXNOO?}!-CF>W:<+11Q8v^sΝA3HWpߠbwtLNNW/Cֻ=!5#@6B @:14:t@ССCj0F)k׮ק>qcL"C8&s:wca60֒%KV߿Ÿ-Tˁ]97?~둗;4'3Bҿf);X]σ-BCCC>هF7^P*ʷЪ?lt	С1z؇OmҰ:7avgg{|gwh~I8G{n .3Ge0]'Nՙ3Нez``0jklkkKw9j5d;Z`#pyGdEw褖R5q|#j"t"2 :j"CD8]\*p<~mmυѥʷAbУsf(YYyK	5;4Z88b[C"*Ѓa<a]>Ù{|j%oQp8[*BG^!@ eqgС3@x7:tGt^M a;Jc#qW?`QZ?rjF󋊌d}%Rw96Z%4V aY*DsU*.]*@}R!I84(BH1ͳ/4m.W	IwLZ}Q}p_cO$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@맆0A    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/media/icons/no-thumbnail.png b/core/themes/stable9/images/media/icons/no-thumbnail.png
new file mode 100644
index 0000000000..926c5314ec
--- /dev/null
+++ b/core/themes/stable9/images/media/icons/no-thumbnail.png
@@ -0,0 +1,26 @@
+PNG
+
+   IHDR        J6   sRGB   PIDATxEu&G	q8TBB`	ZEz|R[Km߈(J5$65 =PlРӐI?Οog7?{Ξs;߹3;;3;;l{r3cƌQ;|Ç_s=8O[
+?w#޼z/	Mܽ(KlEO(Z%Bf;Vdd)\0(lF9s0֚/,8MxK!x\`:oK$)\*h>&e&e"pJx8cV2i(MArU/-#/Agqc\(9la===JEBN"¢e˖m',~MTS0J Bn.&YPذkAB[[]	F衤*T{oнۂ|W<y}R:#$LGr)(C(aQ_d1cFZajY} jr2ŦiXPF"PXMx1i6:HmkC,9rܾBx<ΙWfB=eLd^ӃO?L\F
+cQ0$n&%.Tn`!qjfZV8((Z*$4crvGcy'O|ݻ`譌5<P7 2, [2v|{`@Id!t-a1gB>]
+m&e@MK];\OصkWƼKD-1|;6G,"#6}PqPh	5.`DDkV60WuqAW"("(@J(zz빸^.wIqm4o/Pc P~_eL2"{%K}[U27~Md+jx7XŤ߆s۱%AC{ă<[Fl\p*짌-2j±m5X[v!eXƶͬa4F[BαAA_xS sJ	s̳Oq OX 1"^x}ba%Th2RdE_`(RrӦM;J5i]Z޾}FmuQHcw6XP721fQBK}[аea2[#F'kc.!#d4;(5ؤ+.ƾo2:9	b\<iF#tpH
+ǌ|N/(||.zo.4(%GǻJח>hS<KE$6[U2exfe!=\e`Ewulh}a-- Oͽڮ>JWE@PE@PE@PE@P^᥂"kpM2MɒwUrOei:4^++@0P| ,L' W?91ǢUzdD;4@<߼s 5jy_31,LFtjFvlaU,묦lipS^i~Y%2/Kk	L@ﱈhM:;w>`t\'L~~ ;^r.Ń;4S.y ~V)6KXyz ݫh&
+ ip=;dLzH=W\7 <E s<vphmKAv %'5ڋL9hIHqyaT{u'H[ʒ̣z3g&Ltm6-&\gytL
+\H/  ׁY'!܎%5hoqA2iҤQ.؍4Z#{5.;L܄'7˖G_DEQ V@'t|\{-2:D<jgxl	.6^i
+&L)ve.HWu~N!Bw#+:RS,vl:p܎FEax g6Ƀ#[mT{<[2?'}MIl𔹷uh1CdWwڙNn0jުhϻ~94<h_v^:Qi-K1Qvhc1@xO]W
+rMԢvhjd`MOf'IRth_hf.&CGxr:z("("("("("("("("("DkXwB'^7fkMI }ꩧf& 菌5꜕+W]YwlTrȹ	+L4V:n\e~Ic:
+xNf4ӵ	>z~9[N;m۶/g3ҝTx^"{]bņT<hK9{ ~]wyO޳u֟poIi*>]dY|s|(6'LQq^^bEy+3,R=Z=:r7IdWȿe&N[jh-@^ h! )J61Xu7rP8Fmby{kZYN?mBr}9 ?M!?GJ?AyÌ|MRwif+y[@/Z!Edn?=%OE}BضgHBR3o@}O^ 䟺e|d>cWo^{\'<`rO:+/fƵ=OL)=G :%RSm{߭@;\Ѯ<aϗ3YتnoI {^ jêg1抄d78l(Dr$	'= ˞uA g
+vzn\3=*'{Ӗㅧ=,ﱳ;Ml8%um)e1Ax1-uiL4[h$UVU`'_hou&.p	9_V\Z^OIIIFKxja.bȧʳ=e	0$@^͋\h{\H^W">Þh`иq6VȑbdߨGh^Wg	 M[VxݱcG38 2ؓcfg]Pht<׃iUlٲɕ _<UEI8Q&.]`or!|ו`6c*B%+˗go,4?T?xVػB$@ӆ6U}UA[ 럻ƽEO@sٛh<>GF+B"d]7lܹ#]Ds"$@ˏ|q.:Bj]qЎ`f{c'WJs(=SkĵMYO;+_;y$1)3bذrOhrNO~r^\%O[B{;t/ OtГ=DoRly
+LؙpȻYpʇmspR̙=^	abLလ6]|dҒVQ+aWE^L)x&,_1;}aWSё%ι625tL!AoT	':~a qFyp.%#gvq\]}M1˅KkG'Ǯ/"MxFkZĵ{E.-LsOd~ߥ[9%vVx t(yvydSmWGQc6nܸvĉOs]G}0߂?*5 9Y<WB&EAVG#WͽK~me#-k&J#9'L9LjDV">Q_b^ ]}h`	0ÐN\E..Bc`=/]:ϛh~+]d@1HtJm^AT"("("("("("("("("("("("("("("("("("(h̦`2I93g<ݗN=a
+mߜ]S~XF<;Quɿ,Y2/	ςuE=D%m5k֬eum_񝖫!.λxWpvt*nQ'}֡Łٛjg!X~-i_v}ʡg̘gRo6!BOO˖-{
+cwh6C1YG~ϣtS^c}r?z?öSy1O/?^&?/ZMSWWvMNaW28ɷM-pF˟ׯ_6/o땜R!=\ȟ|~خ0'+B#larUTo.&<;vS9/ߓڰ3:iBTsEŕlq?<~s(x'yq̧+rUŴK6:@66/q/+E^SOc7X,QU@S:AS.G^yYFlRO\bņT;-gH:4݋ "qҤIo]]őo8,'\,!8MG<WLE~Ñ?|p:i%nOcړl8)S&3n
+&D(ud˳3/r#hi?c}bS12~#m
+&-һ!)〷ಢ2|o&ڌy~PRn5jԱVMM|2T^*G~ɩw}L:uΝ;	2,+]ckCSeپ҃|V$_T*Ađ/4)ƱCt仐'߷CxX!}Nm2B*7#m\
+y8v#OV\)-{#F:,>n3S7f:qɫt/H1))ƌ;O,Ώ̙3
+TvTI3˄AHqرcO,ŭ837П=83K~#-e%"S׭ƵcC y~4)Cpbn!UyRKZhTy;ָº&0Egf<H1 0¶q̘1Z.g%2DXzDSjy%5tA|@)cCd}uddkqDiVxZC0è|ИQ-4doA!x(93-׮]3ҙ#}D'Y\B!BdJP"9B6݋_1+7deQ/
+ qBC<ݷ/AMϺ"*2X*;J%dhCBC3Ǹ#Kt-N|ʫN[Շ`'tݳkc=Bcb?qh_$gZ^"SGZha#㥵,qG;R+=w~=؝>#|ȯr`^_8+/_tWrh'-uhxuEjӦMƔ4qhήAF94 休{ <S_:.B,虆31"MWX3|KuKy2uQMe82 Rbe"M?+ #OJ&^nnX_"_ʫQG^
+yQ:}hA5۷o=#c3on"+OZ6	nӳ	k/;N!2-L=iS7goZ)QXm+N4
+y+p/0rK]j$Ǹ!D.-ӧO	R}"[$0-CՙG3')&.0`Eĥoqu֟K򤡅:gގ+Z#
+;ai8
+{DOpQ))f/#ԑN~S?<ylD^3p"4w%CYWgibb~L&W](}9p9x,튃:K.(}9'.[IT8张9wb-łц<4djC"_ac6e()ȷeoU9Zkb]KZkJH0(߄#ǟ1:	9hJڑ}x!Cw -V U#Hބf#K-$9x2FpݼCˑK)Hq!}dO2Y8tFdFtH/G\rOꛢ3"$ 8XZ	XtC`C͗+HVJiH)lRRwM&N1{binZ6MXYG~fe.>Ň3J}*Rkмkg̘tZCꗶFejoiR(dC۠Ȧ/~WAhx=v_n75u3N:t_CW
+SM۲ٳgg_v|Cɗ,Y2VB,4Yb>ɒo͚5k:ok8ա[2>g}4w߱?<LC{p?~W)kS@[Cmz("("("("("("("("("("("("(0>K9    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/media/icons/video.png b/core/themes/stable9/images/media/icons/video.png
new file mode 100644
index 0000000000..ac235e1778
--- /dev/null
+++ b/core/themes/stable9/images/media/icons/video.png
@@ -0,0 +1,17 @@
+PNG
+
+   IHDR        J6   sRGB   IDATxGr'VD0X.m*&p@-F/mbKmJ֨MMτƋDkjE0h\ޟwwocw{Kvi0MMM>lL;~xhY?rdɒ	8xOT_,QezH. q!(Ajqj(m(FG	T6.ʰHW6.2:NOՁv6(?cXS6÷NU6m"zO(ӧW.$@r$8b\#U' a8xeGRTʛDqkҔUJy̝jKcaYHոao\qPk׷@~VY+)5*+VQX'j#g /\\*3{_yhAed;`බ蚚)-+\/xkǔRaEe*_e*ZyME,]~|f1%,=*͉h]Q"@ZKUtKTI{(2ݨhiTmUIxgԭ眤nrmTIqtq˥h R$WUxi>  m	!NXvJ1eц>wE,dq_%NA"yE'*݅K
+wQxzbbb.UY/B-TDmOZAQ}=P(Y^.,E[Lt_9l?lDp[[DSx)4CXH4JZ1sIo1O?=)؇xtu_1wҔ5R(ҏ
+Bo|:k뢥vڵK&i2H+mSm4<\$l)6ai?{qH56ƑRی7]<ڄXHHHHHHPC]uX
+Nbn"Ard*QmebRVUa`U:\%2a
+̽DP+kfsYmVnzk置-Thoi6UZB84́4c]ރ	W%ɩ?V4 {)[Ҏ]eYз5W)yAqN6TImSjV:oGYA.5=bEQ[YZ<ET=NN>mti%e"އK}Z{G''EėD}SThAQItuL=wyhh2u~,.^la6Masmض/rf
+6S/n1yIAqV
+ җ3HHHHHHHHHHHHHHcVb a}*2mfw0m`)B˴J|UK̘}ԇgYnɼY㠡M$-l(]jǂO4]~3.s~-<MVq! ބӸqymkx-4m˖-{CNZDuM*Ep#ܡ(IjlrU	Z*%ZjA]ՠU2Mx14gm 5.1`3Ǌ HFx3)}HE_s	طFJ\q(/YcE>z?qaIZ?D,#F_&װ-nmm	wV>3ty-~!vŀ0Ddcm)~PJފ:T*uvMЎ8rÈ&hGaDW;h[1I"h N;Ž=\QDi{	Poŵ=xss`zk
+A4	Z!*{!tt$|ro~3/APU'&//޳W_YWs:b#:(rUD?\.hŶQ$nFtcrNG
+ίuE;1:ywuhXzi^.[nf[yh^Ju̘1ccǎ .'-Vp?9|IXh#W`za_(4@քuHUЗ4hZ<cD7Web4_ˮ} 0`ˈ*iMЎZ	Gn툀#7hvDF4A;"ȍSp1Q]gȮ#ypLHr$qIsG*E6$h="ٳ͛'^)D=!L"                            %<}/?,ÛODsh!^p<Nx*13Y4yoCfv|V"_[;u4^$~\W^_yaU}XMM#*q4&F)rb̙9j
+.Z	'Wr~yY6922r_ncU*!j/gbڵu]٭f``5i>c@*5Hz)MiOJoϟt5h5NFXVQCeЕ֢z&=o8SΜZrĀ6fS?F`͡I輶=3ؿE`aYaύh;\YE tI8~uQ
+eP(n}GNѓlLcUY+
+~C[![&Ym{SSSc&525`׷$?>>Ѓu-CP?N;ΨJ<5fԠc#ق7'P"䯥eqC߇}}hj0Fm%@C+P1hc(ihZ`@CIC>`@
+` J ohx,"9lk;;::Fd:`}hhQd03xzS-sz/`f=f z0S~idV
+>̒ Z|݅BnAZ;ks**yh(/^{!l鶴^OOϥR`@kC+$(Q6x&rT0<аekAT=Nzv=<S4+)p?ayZ94\Mf;og^̞;"{x>S!ǔܷ^|]]UfKZӦrDay?91TLTNCHp8gg͚C!2Bf}CM#B׫ Zv212Է:4C	|)◪6vwwhfVEhEPlIQvscc9Ѓ$7ZƐ/0 kQǶ""cوpZ2Kmvc1]syw4 ZʀYq	-Ř)tn`@L/07n8Ӌ#hG hqC38"60jǂ ;N<D]+\
+;ͩÓ77Ҝь,yzq:یF]i s$4&4(ԿK ,I<as^6/<P޵0}܏=wcY@sm.$!U<3(IO;,C$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$@$3˺`J    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/quickedit/icon-throbber.gif b/core/themes/stable9/images/quickedit/icon-throbber.gif
new file mode 100644
index 0000000000..f2603e8a2c
--- /dev/null
+++ b/core/themes/stable9/images/quickedit/icon-throbber.gif
@@ -0,0 +1,6 @@
+GIF89a   Ž{{{   !NETSCAPE2.0   !	  ,      @`)KkŏA|ad0L9~\8L Ǹ0, i{qBC~H'JRĨ`f4&a !	  ,      `sɺ(t34M!-0,l#))9	!q(i<hB  3˥ (`,9%cm
+b0AY_e !	  ,      dRj:ړtG8$c02P	hi, ǑQ0X[LEck5`ڭP2F!	a	@q dfz{lQ zK !	  ,      `BjR:$BPFq(ˢ	J@0i-2͇ Qck6[G`m:pQ4fqow !	  ,      d1j}MS@S\ H9 #IrPØi8f..r$ł|nl
+*T\![͂l,Q0@(KFMO{ql{ !	  ,      ^I	3a!P(Ol~`8 LÇ!@$Lgx|f,`"`Jŉ"cUP
+GAw<	tz !	  ,       h9C 4kk\ &I&l)F-P@chH!ш4<
+ x@R`0C"8h0BfgX(rc}Y
+1 !  ,     aйҚX]mKl[)"aĢ\*"$t&#9@1pP`,`I,8 S	8U,Q`(d`3-qH$1T{ ;
\ No newline at end of file
diff --git a/core/themes/stable9/images/shortcut/favstar-rtl.svg b/core/themes/stable9/images/shortcut/favstar-rtl.svg
new file mode 100644
index 0000000000..8adec7d3c8
--- /dev/null
+++ b/core/themes/stable9/images/shortcut/favstar-rtl.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="80" height="20" xmlns="http://www.w3.org/2000/svg">
+ <g>
+  <g id="svg_1">
+   <path id="svg_2" d="m70.39463,2.259c-0.149605,-0.385 -0.395561,-0.385 -0.545135,0l-1.966644,5.049c-0.149582,0.385 -0.611374,0.699 -1.024971,0.699l-1.756836,0.169c-0.413605,0 -0.494911,0.219001 -0.180702,0.487l1.315094,0.981c0.31424,0.268 0.498962,0.816 0.408607,1.22l-1.477745,6.562c-0.090355,0.403 0.118454,0.546999 0.464806,0.319l3.862999,-2.539001c0.346359,-0.228001 0.910545,-0.228001 1.256889,0l3.863014,2.539001c0.346344,0.227999 0.555161,0.084 0.464806,-0.319l-1.051086,-4.707001c-0.090355,-0.403 0.094368,-0.952 0.408577,-1.22l3.531731,-3.006c0.314209,-0.268 0.232903,-0.487 -0.180702,-0.487l-4.398079,0c-0.413612,0 -0.875404,-0.314 -1.024986,-0.698999l-1.969635,-5.048z" fill="#FEF6A8"/>
+   <polygon id="svg_3" points="62.545124552483685,5 65.1010474534105,7.546999931335449 67.6569842932513,5 69.07749901699208,6.414999961853027 66.52157611606526,8.961000442504883 69.07448821157232,11.505000114440918 67.65596675253073,12.918999671936035 65.10203711630311,10.375 62.54711781718288,12.918999671936035 61.12760669524869,11.505000114440918 63.682525994368916,8.960000038146973 61.12559949163551,6.414000034332275 " fill="#807640"/>
+   <path id="svg_4" d="m64.930397,13.897s0.133507,-0.516001 0.653519,-0.349c0.518013,0.165999 0.303192,0.674 0.303192,0.674l-0.721832,3.204c-0.061234,0.272999 0.01609,0.427999 0.178696,0.427999c0.078323,0 0.174698,-0.035 0.28614,-0.107l3.863007,-2.539c0.174667,-0.115 0.401566,-0.172 0.62944,-0.172s0.45475,0.057 0.627426,0.172l3.863022,2.539c0.111427,0.072001 0.209808,0.107 0.28611,0.107c0.164627,0 0.240929,-0.153999 0.178696,-0.427999l-1.051094,-4.707001c-0.090347,-0.401999 0.094368,-0.951 0.409584,-1.219l3.531731,-3.007c0.315224,-0.269 0.232903,-0.487 -0.180702,-0.487l-4.400085,0c-0.413628,0 -0.874405,-0.314 -1.024986,-0.698999l-1.966637,-5.049c-0.075302,-0.192 -0.174683,-0.287 -0.273064,-0.287s-0.197769,0.096 -0.272064,0.288l-0.462784,1.158s-0.256004,0.409 -0.637497,0.219c-0.441711,-0.221 -0.227875,-0.66 -0.227875,-0.66l0.390511,-1.078c0.337311,-0.861 1.01194,-0.927 1.209709,-0.927s0.872391,0.066 1.20768,0.926l1.968658,5.049l0.109421,0.062l4.378006,-0.001c0.937645,0 1.234795,0.609 1.306076,0.796c0.06826,0.187 0.23893,0.844 -0.472839,1.451l-3.533722,3.007c-0.037148,0.041 -0.086334,0.186 -0.078308,0.25l1.049088,4.698999c0.133507,0.596001 -0.051216,0.984001 -0.229912,1.205002c-0.225868,0.278999 -0.563187,0.438999 -0.929596,0.438999c-0.280106,0 -0.563194,-0.092001 -0.839264,-0.273001l-3.863014,-2.539l0,0.002001l-0.074287,-0.008001l-0.088341,0.014l-3.85096,2.531c-0.274071,0.182001 -0.559174,0.273001 -0.839264,0.273001c-0.364418,0 -0.703735,-0.16 -0.927589,-0.438999c-0.178711,-0.221001 -0.362411,-0.609001 -0.230904,-1.205002l0.74691,-3.312999z" fill="#80722D"/>
+  </g>
+  <g id="svg_5">
+   <path id="svg_6" d="m54.758999,18.355c-0.18,0 -0.368999,-0.063999 -0.560997,-0.191l-3.848003,-2.539c-0.083,-0.055 -0.215,-0.088 -0.350998,-0.088s-0.268002,0.033 -0.351002,0.088l-3.848,2.539c-0.190998,0.127001 -0.381001,0.191 -0.561001,0.191c-0.211998,0 -0.406998,-0.091999 -0.535,-0.251999c-0.108997,-0.136002 -0.219997,-0.383001 -0.130997,-0.784l1.046997,-4.708c0.049999,-0.222 -0.070999,-0.584 -0.243,-0.731l-3.516998,-3.006001c-0.451,-0.386 -0.378002,-0.756 -0.326,-0.896999c0.053001,-0.141 0.237,-0.47 0.831001,-0.47l4.380997,0c0.206001,0 0.480003,-0.188 0.556,-0.38l1.961002,-5.049c0.213001,-0.549 0.586998,-0.608 0.737,-0.608s0.523998,0.059 0.737,0.607l1.959,5.049c0.075001,0.191 0.350002,0.38 0.556,0.38l4.382999,0c0.594002,0 0.778,0.329 0.831001,0.47c0.052002,0.142 0.125,0.512 -0.326,0.897l-3.517998,3.006c-0.173,0.147 -0.294003,0.51 -0.244003,0.731l1.047001,4.708001c0.089001,0.400999 -0.021,0.646999 -0.131001,0.783998c-0.127998,0.162001 -0.322998,0.253 -0.535,0.253z" fill="#FEF6A8"/>
+   <path id="svg_7" d="m50,1.97c0.098999,0 0.195999,0.096 0.271,0.289l1.959,5.049c0.149002,0.385 0.609001,0.699 1.021,0.699l4.382999,0c0.412003,0 0.493,0.219 0.18,0.487l-3.516998,3.006c-0.313,0.268 -0.497002,0.816 -0.407001,1.22l1.047001,4.707999c0.061001,0.273001 -0.014999,0.428001 -0.178001,0.428001c-0.077,0 -0.174,-0.035002 -0.285,-0.108002l-3.848,-2.539c-0.173,-0.113 -0.398998,-0.171 -0.625999,-0.171s-0.452999,0.058 -0.625999,0.171l-3.848,2.539c-0.111,0.073 -0.208,0.108002 -0.285,0.108002c-0.163002,0 -0.238003,-0.154001 -0.178001,-0.428001l1.047001,-4.707999c0.09,-0.403 -0.094002,-0.952001 -0.407001,-1.22l-3.517998,-3.006c-0.313,-0.268001 -0.232002,-0.487 0.18,-0.487l4.380997,0c0.412003,0 0.872002,-0.314 1.021,-0.699l1.961002,-5.049c0.076,-0.193 0.173,-0.289 0.271999,-0.289m0,-1c-0.198002,0 -0.869999,0.067 -1.203999,0.927l-1.961002,5.049l-0.108997,0.062l-4.360001,-0.001c-0.934002,0 -1.231003,0.61 -1.299999,0.797c-0.069,0.187 -0.239002,0.844 0.470997,1.451l3.518002,3.005c0.039001,0.043 0.085999,0.186 0.078999,0.25l-1.045998,4.701c-0.132,0.594999 0.051998,0.983 0.229,1.205c0.223999,0.278999 0.560997,0.438999 0.924999,0.438999c0.279999,0 0.562,-0.093 0.835999,-0.272999l3.848,-2.539001l0.000999,0.001001l0.074001,-0.007l0.089001,0.014l3.834,2.531c0.274002,0.181 0.556999,0.272999 0.835999,0.272999c0.364002,0 0.701,-0.16 0.925003,-0.438999c0.177998,-0.222 0.361,-0.610001 0.229,-1.206001l-1.046001,-4.706999c-0.006001,-0.058001 0.041,-0.2 0.085999,-0.248l3.512001,-3c0.709999,-0.607 0.540001,-1.264 0.471001,-1.451c-0.068001,-0.187 -0.366001,-0.797 -1.299999,-0.797l-4.382999,0l-0.098003,-0.08l-1.949997,-5.03c-0.336002,-0.86 -1.007999,-0.927 -1.206001,-0.927z" fill="#80722D"/>
+  </g>
+  <g id="svg_8">
+   <path id="svg_9" d="m24.614159,14.96s0.134195,-0.516 0.656843,-0.349c0.520624,0.166 0.304714,0.674 0.304714,0.674l-0.481285,2.142c-0.06155,0.273001 0.016146,0.427999 0.179598,0.427999c0.078697,0 0.175564,-0.035 0.287556,-0.107l3.882521,-2.539c0.175562,-0.115 0.403591,-0.172 0.632626,-0.172s0.457062,0.057 0.630606,0.172l3.88253,2.539c0.111988,0.072001 0.210865,0.107 0.287552,0.107c0.165478,0 0.242153,-0.153999 0.179596,-0.427999l-1.056396,-4.707c-0.090809,-0.402 0.094849,-0.951 0.411667,-1.219l3.549557,-3.007c0.316818,-0.269 0.234085,-0.487 -0.181614,-0.487l-4.422318,0c-0.415699,0 -0.878819,-0.314 -1.030159,-0.699l-1.976582,-5.049c-0.075674,-0.193 -0.17556,-0.288 -0.274439,-0.288s-0.198767,0.096 -0.27343,0.288l-1.389357,3.538s-0.257284,0.409 -0.640696,0.219c-0.443943,-0.221 -0.229034,-0.66 -0.229034,-0.66l0.612446,-1.658l0.703257,-1.801c0.340021,-0.86 1.018047,-0.926 1.216814,-0.926s0.876799,0.066 1.213793,0.926l1.9786,5.049l0.10997,0.062l4.400127,-0.001c0.942379,0 1.241035,0.609 1.312668,0.796c0.068615,0.187 0.240135,0.844 -0.475224,1.451l-3.551575,3.007c-0.037338,0.041 -0.086777,0.186 -0.078701,0.25l1.054375,4.698999c0.134193,0.596001 -0.051464,0.984001 -0.231056,1.205002c-0.22702,0.278999 -0.566032,0.438999 -0.934299,0.438999c-0.281509,0 -0.566044,-0.092001 -0.843502,-0.273001l-3.882523,-2.539l0,0.002001l-0.074667,-0.008001l-0.088793,0.014l-3.870409,2.531c-0.275454,0.182001 -0.562002,0.273001 -0.843506,0.273001c-0.366257,0 -0.707291,-0.16 -0.932289,-0.438999c-0.179598,-0.221001 -0.364237,-0.609001 -0.232063,-1.205002l0.506502,-2.249999z" fill="#5A563B" opacity="0.7"/>
+   <polygon id="svg_10" points="20.99598980255405,7.960000038146973 24.022905373148888,7.960000038146973 24.022905373148888,4.960000038146973 26.040840745155492,4.960000038146973 26.040840745155492,7.960000038146973 29.06775631575033,7.960000038146973 29.06775631575033,9.958999633789062 26.040840745155492,9.958999633789062 26.040840745155492,12.960000038146973 24.022905373148888,12.960000038146973 24.022905373148888,9.958999633789062 20.99598980255405,9.958999633789062 " fill="#807640"/>
+  </g>
+  <path id="svg_11" d="m10,1.97c0.098,0 0.197,0.096 0.271,0.289l1.959,5.049c0.149,0.385 0.609,0.699 1.021001,0.699l4.383,0c0.411999,0 0.493,0.219 0.179998,0.487l-3.516999,3.006c-0.313,0.268 -0.497,0.816 -0.407,1.22l1.047,4.707c0.061,0.273001 -0.015,0.427999 -0.178,0.427999c-0.077,0 -0.174,-0.035 -0.285,-0.108l-3.848,-2.539c-0.172,-0.114 -0.399,-0.171 -0.626,-0.171s-0.454,0.057 -0.626,0.171l-3.848,2.539c-0.111,0.073 -0.208,0.108 -0.285,0.108c-0.163,0 -0.239,-0.153999 -0.178,-0.427999l1.047,-4.707c0.09,-0.403 -0.094,-0.951 -0.407,-1.22l-3.518,-3.006c-0.313,-0.268001 -0.233,-0.487 0.18,-0.487l4.382,0c0.413,0 0.872,-0.314 1.021,-0.699l1.96,-5.049c0.075001,-0.193 0.173,-0.289 0.272,-0.289m0,-1c-0.198,0 -0.87,0.067 -1.204,0.927l-1.96,5.049l-0.109,0.062l-4.362,-0.001c-0.934,0 -1.231,0.61 -1.3,0.796c-0.069,0.187 -0.239,0.844 0.47,1.451l3.519,3.007c0.038,0.041 0.086,0.185 0.079,0.249001l-1.046,4.699999c-0.133,0.595001 0.051,0.983002 0.229,1.205002c0.224,0.278999 0.561,0.438999 0.925,0.438999c0.28,0 0.562,-0.093 0.836,-0.274l3.848,-2.538l0,0.000999l0.075,-0.007l0.088,0.014l3.834,2.531c0.274,0.181 0.557,0.273001 0.836,0.273001c0.363999,0 0.700999,-0.16 0.924999,-0.438999c0.178,-0.222 0.361001,-0.610001 0.229,-1.206001l-1.047,-4.705999c-0.006,-0.058001 0.041,-0.2 0.086,-0.248l3.511999,-3c0.710001,-0.607 0.540001,-1.264 0.471001,-1.451c-0.068001,-0.187 -0.365999,-0.797 -1.299999,-0.797l-4.383,0l-0.098001,-0.08l-1.95,-5.03c-0.333,-0.86 -1.005,-0.927 -1.203,-0.927z" fill="#5A563B" opacity="0.7"/>
+ </g>
+</svg>
diff --git a/core/themes/stable9/images/shortcut/favstar.svg b/core/themes/stable9/images/shortcut/favstar.svg
new file mode 100644
index 0000000000..9c8ef1da5c
--- /dev/null
+++ b/core/themes/stable9/images/shortcut/favstar.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="80" height="20" viewBox="0 0 80 20"><g><path fill="#FEF6A8" d="M69.729 2.259c.149-.385.394-.385.543 0l1.959 5.049c.149.385.609.699 1.021.699l1.75.169c.412 0 .493.219.18.487l-1.31.981c-.313.268-.497.816-.407 1.22l1.472 6.562c.09.403-.118.547-.463.319l-3.848-2.539c-.345-.228-.907-.228-1.252 0l-3.848 2.539c-.345.228-.553.084-.463-.319l1.047-4.707c.09-.403-.094-.952-.407-1.22l-3.518-3.006c-.313-.268-.232-.487.18-.487h4.381c.412 0 .872-.314 1.021-.699l1.962-5.048z"/><polygon fill="#807640" points="77.548,5 75.002,7.547 72.456,5 71.041,6.415 73.587,8.961 71.044,11.505 72.457,12.919 75.001,10.375 77.546,12.919 78.96,11.505 76.415,8.96 78.962,6.414"/><path fill="#80722D" d="M75.172 13.897s-.133-.516-.651-.349c-.516.166-.302.674-.302.674l.719 3.204c.061.273-.016.428-.178.428-.078 0-.174-.035-.285-.107l-3.848-2.539c-.174-.115-.4-.172-.627-.172s-.453.057-.625.172l-3.848 2.539c-.111.072-.209.107-.285.107-.164 0-.24-.154-.178-.428l1.047-4.707c.09-.402-.094-.951-.408-1.219l-3.518-3.007c-.314-.269-.232-.487.18-.487h4.383c.412 0 .871-.314 1.021-.699l1.959-5.049c.075-.192.174-.287.272-.287s.197.096.271.288l.461 1.158s.255.409.635.219c.44-.221.227-.66.227-.66l-.389-1.078c-.336-.861-1.008-.927-1.205-.927s-.869.066-1.203.926l-1.961 5.049-.109.062-4.361-.001c-.934 0-1.23.609-1.301.796-.068.187-.238.844.471 1.451l3.52 3.007c.037.041.086.186.078.25l-1.045 4.699c-.133.596.051.984.229 1.205.225.279.561.439.926.439.279 0 .561-.092.836-.273l3.848-2.539v.002l.074-.008.088.014 3.836 2.531c.273.182.557.273.836.273.363 0 .701-.16.924-.439.178-.221.361-.609.23-1.205l-.744-3.313z"/></g><g><path fill="#FEF6A8" d="M54.759 18.355c-.18 0-.369-.064-.561-.191l-3.848-2.539c-.083-.055-.215-.088-.351-.088s-.268.033-.351.088l-3.848 2.539c-.191.127-.381.191-.561.191-.212 0-.407-.092-.535-.252-.109-.136-.22-.383-.131-.784l1.047-4.708c.05-.222-.071-.584-.243-.731l-3.517-3.006c-.451-.386-.378-.756-.326-.897.053-.141.237-.47.831-.47h4.381c.206 0 .48-.188.556-.38l1.961-5.049c.213-.549.587-.608.737-.608s.524.059.737.607l1.959 5.049c.075.191.35.38.556.38h4.383c.594 0 .778.329.831.47.052.142.125.512-.326.897l-3.518 3.006c-.173.147-.294.51-.244.731l1.047 4.708c.089.401-.021.647-.131.784-.128.162-.323.253-.535.253z"/><path fill="#80722D" d="M50 1.97c.099 0 .196.096.271.289l1.959 5.049c.149.385.609.699 1.021.699h4.383c.412 0 .493.219.18.487l-3.517 3.006c-.313.268-.497.816-.407 1.22l1.047 4.708c.061.273-.015.428-.178.428-.077 0-.174-.035-.285-.108l-3.848-2.539c-.173-.113-.399-.171-.626-.171s-.453.058-.626.171l-3.848 2.539c-.111.073-.208.108-.285.108-.163 0-.238-.154-.178-.428l1.047-4.708c.09-.403-.094-.952-.407-1.22l-3.518-3.006c-.313-.268-.232-.487.18-.487h4.381c.412 0 .872-.314 1.021-.699l1.961-5.049c.076-.193.173-.289.272-.289m0-1c-.198 0-.87.067-1.204.927l-1.961 5.049-.109.062-4.36-.001c-.934 0-1.231.61-1.3.797-.069.187-.239.844.471 1.451l3.518 3.005c.039.043.086.186.079.25l-1.046 4.701c-.132.595.052.983.229 1.205.224.279.561.439.925.439.28 0 .562-.093.836-.273l3.848-2.539.001.001.074-.007.089.014 3.834 2.531c.274.181.557.273.836.273.364 0 .701-.16.925-.439.178-.222.361-.61.229-1.206l-1.046-4.707c-.006-.058.041-.2.086-.248l3.512-3c.71-.607.54-1.264.471-1.451-.068-.187-.366-.797-1.3-.797h-4.383l-.098-.08-1.95-5.03c-.336-.86-1.008-.927-1.206-.927z"/></g><g><path opacity=".7" fill="#5A563B" d="M35.414 14.96s-.133-.516-.651-.349c-.516.166-.302.674-.302.674l.477 2.142c.061.273-.016.428-.178.428-.078 0-.174-.035-.285-.107l-3.848-2.539c-.174-.115-.4-.172-.627-.172s-.453.057-.625.172l-3.848 2.539c-.111.072-.209.107-.285.107-.164 0-.24-.154-.178-.428l1.047-4.707c.09-.402-.094-.951-.408-1.219l-3.518-3.007c-.314-.269-.232-.487.18-.487h4.383c.412 0 .871-.314 1.021-.699l1.959-5.049c.075-.193.174-.288.272-.288s.197.096.271.288l1.377 3.538s.255.409.635.219c.44-.221.227-.66.227-.66l-.607-1.658-.697-1.801c-.337-.86-1.009-.926-1.206-.926s-.869.066-1.203.926l-1.961 5.049-.109.062-4.361-.001c-.934 0-1.23.609-1.301.796-.068.187-.238.844.471 1.451l3.52 3.007c.037.041.086.186.078.25l-1.045 4.699c-.133.596.051.984.229 1.205.225.279.561.439.926.439.279 0 .561-.092.836-.273l3.848-2.539v.002l.074-.008.088.014 3.836 2.531c.273.182.557.273.836.273.363 0 .701-.16.924-.439.178-.221.361-.609.23-1.205l-.502-2.25z"/><polygon fill="#807640" points="39,7.96 36,7.96 36,4.96 34,4.96 34,7.96 31,7.96 31,9.959 34,9.959 34,12.96 36,12.96 36,9.959 39,9.959"/></g><path opacity=".7" fill="#5A563B" d="M10 1.97c.098 0 .197.096.271.289l1.959 5.049c.149.385.609.699 1.021.699h4.383c.412 0 .493.219.18.487l-3.517 3.006c-.313.268-.497.816-.407 1.22l1.047 4.707c.061.273-.015.428-.178.428-.077 0-.174-.035-.285-.108l-3.848-2.539c-.172-.114-.399-.171-.626-.171s-.454.057-.626.171l-3.848 2.539c-.111.073-.208.108-.285.108-.163 0-.239-.154-.178-.428l1.047-4.707c.09-.403-.094-.951-.407-1.22l-3.518-3.006c-.313-.268-.233-.487.18-.487h4.382c.413 0 .872-.314 1.021-.699l1.96-5.049c.075-.193.173-.289.272-.289m0-1c-.198 0-.87.067-1.204.927l-1.96 5.049-.109.062-4.362-.001c-.934 0-1.231.61-1.3.796-.069.187-.239.844.47 1.451l3.519 3.007c.038.041.086.185.079.249l-1.046 4.7c-.133.595.051.983.229 1.205.224.279.561.439.925.439.28 0 .562-.093.836-.274l3.848-2.538v.001l.075-.007.088.014 3.834 2.531c.274.181.557.273.836.273.364 0 .701-.16.925-.439.178-.222.361-.61.229-1.206l-1.047-4.706c-.006-.058.041-.2.086-.248l3.512-3c.71-.607.54-1.264.471-1.451-.068-.187-.366-.797-1.3-.797h-4.383l-.098-.08-1.95-5.03c-.333-.86-1.005-.927-1.203-.927z"/></svg>
\ No newline at end of file
diff --git a/core/themes/stable9/images/system/no_screenshot.png b/core/themes/stable9/images/system/no_screenshot.png
new file mode 100644
index 0000000000..53a1abcb96
--- /dev/null
+++ b/core/themes/stable9/images/system/no_screenshot.png
@@ -0,0 +1,6 @@
+PNG
+
+   IHDR  L        0PLTE   kkk&&&XXX鍍BBB}}}TnT  IDATx^10F/A,4Yp                                                     {ڳt6dM6WFٴU>l|z(0YȡIkֱivB$5PJ1?U#8BL9p@Bnc,T	8%UğH	|	!}ΌA2jK;O,3р}OZ|3tA}Dv(jAdf>Ӌ P]SO{]Qq8o8\˘Tlj4{J/] D7Zc(;<Dx+$FQVחb[R$9O<:پ	t;?ǀwa3i0 jPZ,JaG-,)N ƶQ'kLx}8-[LE1U1+d>|yV &^qF#4D~~F\ʬC.0'k}=YYP 4\F+U&dyesO0ՒUN.TaZ!ɘ ܓ-Ls
+sW/	t,Δd-dLusO0[,vM,o2D%Vk
+~{1,']*JVjJWM=$̥$e߄s]IęAbh0dpj`A޿D2&pcr׌=4$YR3ӽq < ^t`r^9{wt5Hh=|}yG/)QZ84+h(a59nB0dX:vk
+@l]7q6\V<MOW`OmSL"3A	&ƀ	3O13S"%Ǉ@(~$aR	P1dӣ7Wnt!9rT$2&xǝ]L8xj7unڬ&L<	Lv1=,Fv2_=CL	8#y?zr#v1咷GޚpXvs-&)&<£לFQCO@5:ܛi0'av7J5>Y{[zP&g[@=2m5mbr=NT!	U1X2W619?wtEBS}!˘5RZ8	dF߆&:5/o+n&Ѽ	5ܩƳ3._k\E[`qq~Fn4Ο8&   @d                                                         xY2    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/images/views_ui/sprites.png b/core/themes/stable9/images/views_ui/sprites.png
new file mode 100644
index 0000000000..9fcb940227
--- /dev/null
+++ b/core/themes/stable9/images/views_ui/sprites.png
@@ -0,0 +1,7 @@
+PNG
+
+   IHDR     ,   >   gAMA  7   tEXtSoftware Adobe ImageReadyqe<  IDATxLSW{bC$SFt:0Ȝh2C:e&	t:M*?4sHfm2h4tJB
+F}}ꣾWӹ|yy{_-.>*	)K<':u(ttA (h1ҋT)#5PXnB!bk](HEH?wt՜xp{cRĸ; Y#' Rg8qbqgMյ< !AAnKk3Tߢnvphc8\DQǅ5	s~!AzdV9`?Vu;W:X]_(
+tvH'k	pY9t.f'L"WEIk^ѲjcB[7J 	RZA9xfwmtؤ6R|$|@8SVra6F[-7!fKuG@k׃Y)ͼ<"R6~!Aρgp}֡9Sn}ȩB	bZYVaiVZژp])__L任u..~<(F>F#>B@?Պ&DA9ZcC~Rn7/Y
+8DHtGx;: 	 - ł^KRA;.Rlt,=url`{k&M۵M?e&UقpCذ} /[)poq}u^EreVsmp	>Y![BЯҗlŁʱ~BAߨZ#XGsAo"_7A6gD+QK~Dv|GĞWAWBQnAB:hNǊ-_o\??NaG7kG ͏͇~pO~w>=8Gn~.?H^GϏ+^Qv^UTlABa~̍^.mvm"iy:ύclR'Oo=z;IK]Λq|A 9}=k/sY!Aֻ_3}z5l15D<=+8[fJJJz/..nUllȆf׻g֤˗:=ʵk:6m;ydM2ebYh&$>>+}ĈrrrinnyܹQSN]s7 y6#??7f!99BqfYGhWLk\g`Y$geeEfddDBhx>gٸ_zott󝥥F$ݧ<ܭ~h?.g|>_5bZ?KDnܨ;v,1BߔWNcٸ \،e+mkot_z`}}} 񀅋8u҉sIk~;:
+οppt̐-kw	I2kټyO_szZɦ\|ciq30?B ̏0?#̏ !AB !AB !A  jsQhTbv    IENDB`
\ No newline at end of file
diff --git a/core/themes/stable9/stable9.info.yml b/core/themes/stable9/stable9.info.yml
new file mode 100644
index 0000000000..b1d8880273
--- /dev/null
+++ b/core/themes/stable9/stable9.info.yml
@@ -0,0 +1,300 @@
+name: Stable 9
+type: theme
+description: A default base theme using Drupal 9.0.0's core markup and CSS.
+package: Core
+version: VERSION
+core: 8.x
+base theme: false
+hidden: true
+
+libraries-override:
+  block/drupal.block.admin:
+    css:
+      theme:
+        css/block.admin.css: css/block/block.admin.css
+
+  ckeditor/drupal.ckeditor:
+    css:
+      state:
+        css/ckeditor.css: css/ckeditor/ckeditor.css
+  ckeditor/drupal.ckeditor.plugins.drupalimagecaption:
+    css:
+      component:
+        css/plugins/drupalimagecaption/ckeditor.drupalimagecaption.css: css/ckeditor/plugins/drupalimagecaption/ckeditor.drupalimagecaption.css
+  ckeditor/drupal.ckeditor.plugins.language:
+    css:
+      component:
+        css/plugins/language/ckeditor.language.css: css/ckeditor/plugins/language/ckeditor.language.css
+  ckeditor/drupal.ckeditor.admin:
+    css:
+      theme:
+        css/ckeditor.admin.css: css/ckeditor/ckeditor.admin.css
+
+  color/admin:
+    css:
+      theme:
+        css/color.admin.css: css/color/color.admin.css
+
+  config_translation/drupal.config_translation.admin:
+    css:
+      theme:
+        css/config_translation.admin.css: css/config_translation/config_translation.admin.css
+
+  content_translation/drupal.content_translation.admin:
+    css:
+      theme:
+        css/content_translation.admin.css: css/content_translation/content_translation.admin.css
+
+  content_moderation/content_moderation:
+    css:
+      component:
+        css/content_moderation.module.css: css/content_moderation/content_moderation.module.css
+      theme:
+        css/content_moderation.theme.css: css/content_moderation/content_moderation.theme.css
+
+  contextual/drupal.contextual-links:
+    css:
+      component:
+        css/contextual.module.css: css/contextual/contextual.module.css
+      theme:
+        css/contextual.theme.css: css/contextual/contextual.theme.css
+        css/contextual.icons.theme.css: css/contextual/contextual.icons.theme.css
+  contextual/drupal.contextual-toolbar:
+    css:
+      component:
+        css/contextual.toolbar.css: css/contextual/contextual.toolbar.css
+
+  core/drupal.dialog.off_canvas:
+    css:
+      base:
+        misc/dialog/off-canvas.reset.css: css/core/dialog/off-canvas.reset.css
+        misc/dialog/off-canvas.base.css: css/core/dialog/off-canvas.base.css
+        misc/dialog/off-canvas.css: css/core/dialog/off-canvas.css
+        misc/dialog/off-canvas.theme.css: css/core/dialog/off-canvas.theme.css
+      component:
+        misc/dialog/off-canvas.motion.css: css/core/dialog/off-canvas.motion.css
+        misc/dialog/off-canvas.button.css: css/core/dialog/off-canvas.button.css
+        misc/dialog/off-canvas.form.css: css/core/dialog/off-canvas.form.css
+        misc/dialog/off-canvas.table.css: css/core/dialog/off-canvas.table.css
+        misc/dialog/off-canvas.details.css: css/core/dialog/off-canvas.details.css
+        misc/dialog/off-canvas.tabledrag.css: css/core/dialog/off-canvas.tabledrag.css
+        misc/dialog/off-canvas.dropbutton.css: css/core/dialog/off-canvas.dropbutton.css
+        misc/dialog/off-canvas.layout.css: css/core/dialog/off-canvas.layout.css
+
+  core/drupal.dropbutton:
+    css:
+      component:
+        misc/dropbutton/dropbutton.css: css/core/dropbutton/dropbutton.css
+  core/drupal.vertical-tabs:
+    css:
+      component:
+        misc/vertical-tabs.css: css/core/vertical-tabs.css
+
+  dblog/drupal.dblog:
+    css:
+      component:
+        css/dblog.module.css: css/dblog/dblog.module.css
+
+  field_ui/drupal.field_ui:
+    css:
+      theme:
+        css/field_ui.admin.css: css/field_ui/field_ui.admin.css
+
+  file/drupal.file:
+    css:
+      theme:
+        css/file.admin.css: css/file/file.admin.css
+
+  filter/drupal.filter.admin:
+    css:
+      theme:
+        css/filter.admin.css: css/filter/filter.admin.css
+  filter/drupal.filter:
+    css:
+      theme:
+        css/filter.admin.css: css/filter/filter.admin.css
+  filter/caption:
+    css:
+      component:
+        css/filter.caption.css: css/filter/filter.caption.css
+
+  image/admin:
+    css:
+      theme:
+        css/image.admin.css: css/image/image.admin.css
+  image/quickedit.inPlaceEditor.image:
+    css:
+      component:
+        css/editors/image.css: css/image/editors/image.css
+      theme:
+        css/editors/image.theme.css: css/image/editors/image.theme.css
+
+  language/drupal.language.admin:
+    css:
+      theme:
+        css/language.admin.css: css/language/language.admin.css
+
+  layout_builder/drupal.layout_builder:
+    css:
+      theme:
+        css/layout-builder.css: css/layout_builder/layout-builder.css
+
+  locale/drupal.locale.admin:
+    css:
+      component:
+        css/locale.admin.css: css/locale/locale.admin.css
+
+  media/filter.caption:
+    css:
+      component:
+        css/filter.caption.css: css/media/filter.caption.css
+
+  media/oembed.formatter:
+    css:
+      component:
+        css/oembed.formatter.css: css/media/oembed.formatter.css
+  media/oembed.frame:
+    css:
+      component:
+        css/oembed.frame.css: css/media/oembed.frame.css
+
+  menu_ui/drupal.menu_ui.adminforms:
+    css:
+      theme:
+        css/menu_ui.admin.css: css/menu_ui/menu_ui.admin.css
+
+  migrate_drupal_ui/base:
+    css:
+      component:
+        css/components/upgrade-analysis-report-tables.css: css/migrate_drupal_ui/components/upgrade-analysis-report-tables.css
+
+  node/drupal.node:
+    css:
+      layout:
+        css/node.module.css: css/node/node.module.css
+  node/drupal.node.preview:
+    css:
+      theme:
+        css/node.preview.css: css/node/node.preview.css
+  node/form:
+    css:
+      layout:
+        css/node.module.css: css/node/node.module.css
+  node/drupal.node.admin:
+    css:
+      theme:
+        css/node.admin.css: css/node/node.admin.css
+
+  quickedit/quickedit:
+    css:
+      component:
+        css/quickedit.module.css: css/quickedit/quickedit.module.css
+      theme:
+        css/quickedit.theme.css: css/quickedit/quickedit.theme.css
+        css/quickedit.icons.theme.css: css/quickedit/quickedit.icons.theme.css
+
+  settings_tray/drupal.settings_tray:
+    css:
+      component:
+        css/settings_tray.module.css: css/settings_tray/settings_tray.module.css
+        css/settings_tray.motion.css: css/settings_tray/settings_tray.motion.css
+        css/settings_tray.toolbar.css: css/settings_tray/settings_tray.toolbar.css
+      theme:
+        css/settings_tray.theme.css: css/settings_tray/settings_tray.theme.css
+
+  shortcut/drupal.shortcut:
+    css:
+      theme:
+        css/shortcut.theme.css: css/shortcut/shortcut.theme.css
+        css/shortcut.icons.theme.css: css/shortcut/shortcut.icons.theme.css
+
+  system/base:
+    css:
+      component:
+        css/components/ajax-progress.module.css: css/system/components/ajax-progress.module.css
+        css/components/align.module.css: css/system/components/align.module.css
+        css/components/autocomplete-loading.module.css: css/system/components/autocomplete-loading.module.css
+        css/components/fieldgroup.module.css: css/system/components/fieldgroup.module.css
+        css/components/container-inline.module.css: css/system/components/container-inline.module.css
+        css/components/clearfix.module.css: css/system/components/clearfix.module.css
+        css/components/details.module.css: css/system/components/details.module.css
+        css/components/hidden.module.css: css/system/components/hidden.module.css
+        css/components/item-list.module.css: css/system/components/item-list.module.css
+        css/components/js.module.css: css/system/components/js.module.css
+        css/components/nowrap.module.css: css/system/components/nowrap.module.css
+        css/components/position-container.module.css: css/system/components/position-container.module.css
+        css/components/progress.module.css: css/system/components/progress.module.css
+        css/components/reset-appearance.module.css: css/system/components/reset-appearance.module.css
+        css/components/resize.module.css: css/system/components/resize.module.css
+        css/components/sticky-header.module.css: css/system/components/sticky-header.module.css
+        css/components/system-status-counter.css: css/system/components/system-status-counter.css
+        css/components/system-status-report-counters.css: css/system/components/system-status-report-counters.css
+        css/components/system-status-report-general-info.css: css/system/components/system-status-report-general-info.css
+        css/components/tabledrag.module.css: css/system/components/tabledrag.module.css
+        css/components/tablesort.module.css: css/system/components/tablesort.module.css
+        css/components/tree-child.module.css: css/system/components/tree-child.module.css
+  system/admin:
+    css:
+      theme:
+        css/system.admin.css: css/system/system.admin.css
+  system/maintenance:
+    css:
+      theme:
+        css/system.maintenance.css: css/system/system.maintenance.css
+  system/diff:
+    css:
+      component:
+        css/system.diff.css: css/system/system.diff.css
+
+  taxonomy/drupal.taxonomy:
+    css:
+      component:
+        css/taxonomy.theme.css: css/taxonomy/taxonomy.theme.css
+
+  toolbar/toolbar:
+    css:
+      component:
+        css/toolbar.module.css: css/toolbar/toolbar.module.css
+      theme:
+        css/toolbar.theme.css: css/toolbar/toolbar.theme.css
+        css/toolbar.icons.theme.css: css/toolbar/toolbar.icons.theme.css
+  toolbar/toolbar.menu:
+    css:
+      state:
+        css/toolbar.menu.css: css/toolbar/toolbar.menu.css
+
+  tour/tour-styling:
+    css:
+      component:
+        css/tour.module.css: css/tour/tour.module.css
+
+  update/drupal.update.admin:
+    css:
+      theme:
+        css/update.admin.theme.css: css/update/update.admin.theme.css
+
+  user/drupal.user:
+    css:
+      component:
+        css/user.module.css: css/user/user.module.css
+  user/drupal.user.admin:
+    css:
+      theme:
+        css/user.admin.css: css/user/user.admin.css
+  user/drupal.user.icons:
+    css:
+      theme:
+        css/user.icons.admin.css: css/user/user.icons.admin.css
+
+  views/views.module:
+    css:
+      component:
+        css/views.module.css: css/views/views.module.css
+
+  views_ui/admin.styling:
+    css:
+      component:
+        css/views_ui.admin.css: css/views_ui/views_ui.admin.css
+      theme:
+        css/views_ui.admin.theme.css: css/views_ui/views_ui.admin.theme.css
+        css/views_ui.contextual.css: css/views_ui/views_ui.contextual.css
diff --git a/core/themes/stable9/stable9.theme b/core/themes/stable9/stable9.theme
new file mode 100644
index 0000000000..6351436a86
--- /dev/null
+++ b/core/themes/stable9/stable9.theme
@@ -0,0 +1,6 @@
+<?php
+
+/**
+ * @file
+ * Functions to support theming in the Stable 9 theme.
+ */
diff --git a/core/themes/stable9/templates/admin/admin-block-content.html.twig b/core/themes/stable9/templates/admin/admin-block-content.html.twig
new file mode 100644
index 0000000000..dedcc74a6f
--- /dev/null
+++ b/core/themes/stable9/templates/admin/admin-block-content.html.twig
@@ -0,0 +1,32 @@
+{#
+/**
+ * @file
+ * Default theme implementation for the content of an administrative block.
+ *
+ * Available variables:
+ * - content: A list containing information about the block. Each element
+ *   of the array represents an administrative menu item, and must at least
+ *   contain the keys 'title', 'link_path', and 'localized_options', which are
+ *   passed to l(). A 'description' key may also be provided.
+ * - attributes: HTML attributes to be added to the element.
+ * - compact: Boolean indicating whether compact mode is turned on or not.
+ *
+ * @see template_preprocess_admin_block_content()
+ */
+#}
+{%
+  set classes = [
+    'list-group',
+    compact ? 'compact',
+  ]
+%}
+{% if content %}
+  <dl{{ attributes.addClass(classes) }}>
+    {% for item in content %}
+      <dt class="list-group__link">{{ item.link }}</dt>
+      {% if item.description %}
+        <dd class="list-group__description">{{ item.description }}</dd>
+      {% endif %}
+    {% endfor %}
+  </dl>
+{% endif %}
diff --git a/core/themes/stable9/templates/admin/admin-block.html.twig b/core/themes/stable9/templates/admin/admin-block.html.twig
new file mode 100644
index 0000000000..bf635883ba
--- /dev/null
+++ b/core/themes/stable9/templates/admin/admin-block.html.twig
@@ -0,0 +1,30 @@
+{#
+/**
+ * @file
+ * Default theme implementation for an administrative block.
+ *
+ * Available variables:
+ * - block: An array of information about the block, including:
+ *   - show: A flag indicating if the block should be displayed.
+ *   - title: The block title.
+ *   - content: (optional) The content of the block.
+ *   - description: (optional) A description of the block.
+ *     (Description should only be output if content is not available).
+ * - attributes: HTML attributes for the containing div element.
+ */
+#}
+{%
+  set classes = [
+    'panel',
+  ]
+%}
+<div{{ attributes.addClass(classes) }}>
+  {% if block.title %}
+    <h3 class="panel__title">{{ block.title }}</h3>
+  {% endif %}
+  {% if block.content %}
+    <div class="panel__content">{{ block.content }}</div>
+  {% elseif block.description %}
+    <div class="panel__description">{{ block.description }}</div>
+  {% endif %}
+</div>
diff --git a/core/themes/stable9/templates/admin/admin-page.html.twig b/core/themes/stable9/templates/admin/admin-page.html.twig
new file mode 100644
index 0000000000..16e3091957
--- /dev/null
+++ b/core/themes/stable9/templates/admin/admin-page.html.twig
@@ -0,0 +1,25 @@
+{#
+/**
+ * @file
+ * Default theme implementation for an administrative page.
+ *
+ * Available variables:
+ * - system_compact_link: Themed link to toggle compact view.
+ * - containers: An list of administrative blocks keyed by position: left or
+ *   right. Contains:
+ *   - blocks: A list of blocks within a container.
+ *
+ * @see template_preprocess_admin_page()
+ */
+#}
+
+<div class="clearfix">
+  {{ system_compact_link }}
+  {% for container in containers %}
+    <div class="layout-column layout-column--half">
+      {% for block in container.blocks %}
+        {{ block }}
+      {% endfor %}
+    </div>
+  {% endfor %}
+</div>
diff --git a/core/themes/stable9/templates/admin/authorize-report.html.twig b/core/themes/stable9/templates/admin/authorize-report.html.twig
new file mode 100644
index 0000000000..036f815b03
--- /dev/null
+++ b/core/themes/stable9/templates/admin/authorize-report.html.twig
@@ -0,0 +1,21 @@
+{#
+/**
+ * @file
+ * Default theme implementation for authorize.php operation report templates.
+ *
+ * This report displays the results of an operation run via authorize.php.
+ *
+ * Available variables:
+ * - messages: A list of result messages.
+ * - attributes: HTML attributes for the element.
+ *
+ * @see template_preprocess_authorize_report()
+ */
+#}
+{% if messages %}
+  <div{{ attributes.addClass('authorize-results') }}>
+    {% for message_group in messages %}
+      {{ message_group }}
+    {% endfor %}
+  </div>
+{% endif %}
