diff --git a/app/javascript/styles/mastodon-light.scss b/app/javascript/styles/mastodon-light.scss
index ce9452ff13e..756a12d8689 100644
--- a/app/javascript/styles/mastodon-light.scss
+++ b/app/javascript/styles/mastodon-light.scss
@@ -1,227 +1,3 @@
-// Set variables
-$ui-base-color: #d9e1e8;
-$ui-base-lighter-color: darken($ui-base-color, 57%);
-$ui-highlight-color: #2b90d9;
-$ui-primary-color: darken($ui-highlight-color, 28%);
-$ui-secondary-color: #282c37;
-
-$primary-text-color: black;
-$base-overlay-background: $ui-base-color;
-
-$login-button-color: white;
-$account-background-color: white;
-
-// Import defaults
+@import 'mastodon-light/variables';
@import 'application';
-
-// Change the color of the log in button
-.button {
- &.button-alternative-2 {
- color: $login-button-color;
- }
-}
-
-// Change columns' default background colors
-.column {
- > .scrollable {
- background: lighten($ui-base-color, 13%);
- }
-}
-
-.drawer__inner {
- background: $ui-base-color;
-}
-
-.drawer__inner__mastodon {
- background: $ui-base-color url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto;
-}
-
-// Change the default appearance of the content warning button
-.status__content,
-.reply-indicator__content {
-
- .status__content__spoiler-link {
-
- background: darken($ui-base-color, 30%);
-
- &:hover {
- background: darken($ui-base-color, 35%);
- text-decoration: none;
- }
-
- }
-
-}
-
-// Change the default appearance of the action buttons
-.icon-button {
-
- &:hover,
- &:active,
- &:focus {
- color: darken($ui-base-color, 40%);
- transition: color 200ms ease-out;
- }
-
- &.disabled {
- color: darken($ui-base-color, 30%);
- }
-
-}
-
-.status {
- &.status-direct {
- .icon-button.disabled {
- color: darken($ui-base-color, 30%);
- }
- }
-}
-
-button.icon-button i.fa-retweet {
- &:hover {
- background-image: url("data:image/svg+xml;utf8,");
- }
-}
-
-button.icon-button.disabled i.fa-retweet {
- background-image: url("data:image/svg+xml;utf8,");
-}
-
-// Change the colors used in the dropdown menu
-.dropdown-menu {
- background: $ui-base-color;
-}
-
-.dropdown-menu__arrow {
-
- &.left {
- border-left-color: $ui-base-color;
- }
-
- &.top {
- border-top-color: $ui-base-color;
- }
-
- &.bottom {
- border-bottom-color: $ui-base-color;
- }
-
- &.right {
- border-right-color: $ui-base-color;
- }
-
-}
-
-.dropdown-menu__item {
- a {
- background: $ui-base-color;
- color: $ui-secondary-color;
- }
-}
-
-// Change the default color of several parts of the compose form
-.compose-form {
-
- .compose-form__warning {
- color: lighten($ui-secondary-color, 65%);
- }
-
- strong {
- color: lighten($ui-secondary-color, 65%);
- }
-
- .autosuggest-textarea__textarea,
- .spoiler-input__input {
-
- color: darken($ui-base-color, 80%);
-
- &::placeholder {
- color: darken($ui-base-color, 70%);
- }
-
- }
-
- .compose-form__buttons-wrapper {
- background: darken($ui-base-color, 10%);
- }
-
- .privacy-dropdown__option {
- color: $ui-primary-color;
- }
-
- .privacy-dropdown__option__content {
-
- strong {
- color: $ui-primary-color;
- }
-
- }
-
-}
-
-// Change the default color used for the text in an empty column or on the error column
-.empty-column-indicator,
-.error-column {
- color: darken($ui-base-color, 60%);
-}
-
-// Change the default colors used on some parts of the profile pages
-.activity-stream-tabs {
-
- background: $account-background-color;
-
- a {
- &.active {
- color: $ui-primary-color;
- }
- }
-
-}
-
-.activity-stream {
-
- .entry {
- background: $account-background-color;
- }
-
- .status.light {
-
- .status__content {
- color: $primary-text-color;
- }
-
- .display-name {
- strong {
- color: $primary-text-color;
- }
- }
-
- }
-
-}
-
-.accounts-grid {
- .account-grid-card {
-
- .controls {
- .icon-button {
- color: $ui-secondary-color;
- }
- }
-
- .name {
- a {
- color: $primary-text-color;
- }
- }
-
- .username {
- color: $ui-secondary-color;
- }
-
- .account__header__content {
- color: $primary-text-color;
- }
-
- }
-}
+@import 'mastodon-light/diff';
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
new file mode 100644
index 00000000000..42c790bac64
--- /dev/null
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -0,0 +1,157 @@
+// Notes!
+// Sass color functions, "darken" and "lighten" are automatically replaced.
+
+// Change the colors of button texts
+.button {
+ color: $white;
+
+ &.button-alternative-2 {
+ color: $white;
+ }
+}
+
+// Change default background colors of columns
+.column {
+ > .scrollable {
+ background: $white;
+ }
+}
+
+.drawer__inner {
+ background: $ui-base-color;
+}
+
+.drawer__inner__mastodon {
+ background: $ui-base-color url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto;
+}
+
+// Change the colors used in the dropdown menu
+.dropdown-menu {
+ background: $ui-base-color;
+}
+
+.dropdown-menu__arrow {
+ &.left {
+ border-left-color: $ui-base-color;
+ }
+
+ &.top {
+ border-top-color: $ui-base-color;
+ }
+
+ &.bottom {
+ border-bottom-color: $ui-base-color;
+ }
+
+ &.right {
+ border-right-color: $ui-base-color;
+ }
+}
+
+.dropdown-menu__item {
+ a {
+ background: $ui-base-color;
+ color: $ui-secondary-color;
+ }
+}
+
+// Change the text colors on inverted background
+.privacy-dropdown__option.active .privacy-dropdown__option__content,
+.privacy-dropdown__option.active .privacy-dropdown__option__content strong,
+.privacy-dropdown__option:hover .privacy-dropdown__option__content,
+.privacy-dropdown__option:hover .privacy-dropdown__option__content strong,
+.dropdown-menu__item a:active,
+.dropdown-menu__item a:focus,
+.dropdown-menu__item a:hover,
+.actions-modal ul li:not(:empty) a.active,
+.actions-modal ul li:not(:empty) a.active button,
+.actions-modal ul li:not(:empty) a:active,
+.actions-modal ul li:not(:empty) a:active button,
+.actions-modal ul li:not(:empty) a:focus,
+.actions-modal ul li:not(:empty) a:focus button,
+.actions-modal ul li:not(:empty) a:hover,
+.actions-modal ul li:not(:empty) a:hover button,
+.admin-wrapper .sidebar ul ul a.selected,
+.simple_form .block-button,
+.simple_form .button,
+.simple_form button {
+ color: $white;
+}
+
+// Change the background colors of modals
+.actions-modal,
+.boost-modal,
+.confirmation-modal,
+.mute-modal,
+.report-modal {
+ background: $ui-secondary-color;
+}
+
+.boost-modal__action-bar,
+.confirmation-modal__action-bar,
+.mute-modal__action-bar {
+ background: darken($ui-secondary-color, 6%);
+}
+
+.react-toggle-track {
+ background: $ui-base-color;
+}
+
+// Change the default color used for the text in an empty column or on the error column
+.empty-column-indicator,
+.error-column {
+ color: $primary-text-color;
+}
+
+// Change the default colors used on some parts of the profile pages
+.activity-stream-tabs {
+ background: $account-background-color;
+
+ a {
+ &.active {
+ color: $ui-primary-color;
+ }
+ }
+}
+
+.activity-stream {
+ .entry {
+ background: $account-background-color;
+ }
+
+ .status.light {
+ .status__content {
+ color: $primary-text-color;
+ }
+
+ .display-name {
+ strong {
+ color: $primary-text-color;
+ }
+ }
+ }
+}
+
+.accounts-grid {
+ .account-grid-card {
+ .controls {
+ .icon-button {
+ color: $ui-secondary-color;
+ }
+ }
+
+ .name {
+ a {
+ color: $primary-text-color;
+ }
+ }
+
+ .username {
+ color: $ui-secondary-color;
+ }
+
+ .account__header__content {
+ color: $primary-text-color;
+ }
+ }
+}
diff --git a/app/javascript/styles/mastodon-light/variables.scss b/app/javascript/styles/mastodon-light/variables.scss
new file mode 100644
index 00000000000..4be454e66a0
--- /dev/null
+++ b/app/javascript/styles/mastodon-light/variables.scss
@@ -0,0 +1,38 @@
+// Dependent colors
+$black: #000000;
+$white: #ffffff;
+
+$classic-base-color: #282c37;
+$classic-primary-color: #9baec8;
+$classic-secondary-color: #d9e1e8;
+$classic-highlight-color: #2b90d9;
+
+// Differences
+$base-overlay-background: $white;
+
+$ui-base-color: $classic-secondary-color !default;
+$ui-base-lighter-color: #b0c0cf;
+$ui-primary-color: #9bcbed;
+$ui-secondary-color: $classic-base-color !default;
+$ui-highlight-color: #2b5fd9;
+
+$primary-text-color: $black !default;
+$darker-text-color: $classic-base-color !default;
+$dark-text-color: #444b5d;
+$action-button-color: #606984;
+
+$inverted-text-color: $black !default;
+$lighter-text-color: $classic-base-color !default;
+$light-text-color: #444b5d;
+
+//Newly added colors
+$account-background-color: $white;
+
+//Invert darkened and lightened colors
+@function darken($color, $amount) {
+ @return hsl(hue($color), saturation($color), lightness($color) + $amount);
+}
+
+@function lighten($color, $amount) {
+ @return hsl(hue($color), saturation($color), lightness($color) - $amount);
+}
diff --git a/config/themes.yml b/config/themes.yml
index f0bb1e6f725..9c21c9459f3 100644
--- a/config/themes.yml
+++ b/config/themes.yml
@@ -1,2 +1,3 @@
default: styles/application.scss
contrast: styles/contrast.scss
+mastodon-light: styles/mastodon-light.scss