diff --git a/app/javascript/flavours/glitch/styles/mastodon-light.scss b/app/javascript/flavours/glitch/styles/mastodon-light.scss
index 029d5dde235..8fc132651bd 100644
--- a/app/javascript/flavours/glitch/styles/mastodon-light.scss
+++ b/app/javascript/flavours/glitch/styles/mastodon-light.scss
@@ -1,218 +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 'index';
-
-// 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%);
- }
-}
-
-.status.collapsed .status__content:after {
- background: linear-gradient(rgba(lighten($ui-base-color, 13%), 0), rgba(lighten($ui-base-color, 13%), 1));
-}
-
-.drawer__inner {
- background: $ui-base-color;
-}
-
-.drawer > .contents {
- background: $ui-base-color url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto !important;
-
- .mastodon {
- filter: contrast(75%) brightness(75%) !important;
- }
-}
-
-// Change the default appearance of the content warning button
-.status__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%);
- }
- }
-}
-
-// 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
-.composer {
-
- .composer--spoiler input, .composer--textarea textarea {
- color: darken($ui-base-color, 80%);
-
- &:disabled { background: darken($simple-background-color, 10%) }
-
- &::placeholder {
- color: darken($ui-base-color, 70%);
- }
- }
-
- strong {
- color: lighten($ui-secondary-color, 65%);
- }
-
- .composer--options {
- background: darken($ui-base-color, 10%);
- box-shadow: unset;
- }
-
- .composer--options--dropdown--content--item {
- color: $ui-primary-color;
-
- 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/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
new file mode 100644
index 00000000000..00d2411a167
--- /dev/null
+++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
@@ -0,0 +1,294 @@
+// Notes!
+// Sass color functions, "darken" and "lighten" are automatically replaced.
+
+.glitch.local-settings {
+ background: $ui-base-color;
+
+ &__navigation {
+ background: darken($ui-base-color, 8%);
+ }
+
+ &__navigation__item {
+ background: darken($ui-base-color, 8%);
+
+ &:hover {
+ background: $ui-base-color;
+ }
+ }
+}
+
+.notification__dismiss-overlay {
+ .wrappy {
+ box-shadow: unset;
+ }
+
+ .ckbox {
+ text-shadow: unset;
+ }
+}
+
+.status.status-direct {
+ background: darken($ui-base-color, 8%);
+
+ &.collapsed> .status__content:after {
+ background: linear-gradient(rgba(darken($ui-base-color, 8%), 0), rgba(darken($ui-base-color, 8%), 1));
+ }
+}
+
+.focusable:focus.status.status-direct {
+ background: darken($ui-base-color, 4%);
+
+ &.collapsed> .status__content:after {
+ background: linear-gradient(rgba(darken($ui-base-color, 4%), 0), rgba(darken($ui-base-color, 4%), 1));
+ }
+}
+
+// Change columns' default background colors
+.column {
+ > .scrollable {
+ background: darken($ui-base-color, 13%);
+ }
+}
+
+.status.collapsed .status__content:after {
+ background: linear-gradient(rgba(darken($ui-base-color, 13%), 0), rgba(darken($ui-base-color, 13%), 1));
+}
+
+.drawer__inner {
+ background: $ui-base-color;
+}
+
+.drawer > .contents {
+ background: $ui-base-color url('data:image/svg+xml;utf8,') no-repeat bottom / 100% auto !important;
+
+ .mastodon {
+ filter: contrast(75%) brightness(75%) !important;
+ }
+}
+
+// Change the default appearance of the content warning button
+.status__content {
+
+ .status__content__spoiler-link {
+
+ background: lighten($ui-base-color, 30%);
+
+ &:hover {
+ background: lighten($ui-base-color, 35%);
+ text-decoration: none;
+ }
+
+ }
+
+}
+
+// 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
+.composer {
+
+ .composer--spoiler input, .composer--textarea textarea {
+ color: lighten($ui-base-color, 80%);
+
+ &:disabled { background: lighten($simple-background-color, 10%) }
+
+ &::placeholder {
+ color: lighten($ui-base-color, 70%);
+ }
+ }
+
+ .composer--options {
+ background: lighten($ui-base-color, 10%);
+ box-shadow: unset;
+
+ & > hr {
+ display: none;
+ }
+ }
+
+ .composer--options--dropdown--content--item {
+ color: $ui-primary-color;
+
+ strong {
+ color: $ui-primary-color;
+ }
+
+ }
+
+}
+
+.dropdown-menu__separator {
+ border-bottom-color: lighten($ui-base-color, 12%);
+}
+
+.status__content,
+.reply-indicator__content {
+ a {
+ color: $highlight-text-color;
+ }
+}
+
+.emoji-mart-bar {
+ border-color: darken($ui-base-color, 4%);
+
+ &:first-child {
+ background: lighten($ui-base-color, 10%);
+ }
+}
+
+.emoji-mart-search input {
+ background: rgba($ui-base-color, 0.3);
+ border-color: $ui-base-color;
+}
+
+.composer--textarea--suggestions {
+ background: lighten($ui-base-color, 10%)
+}
+
+.composer--textarea--suggestions--item {
+ &:hover,
+ &:focus,
+ &:active,
+ &.selected {
+ background: darken($ui-base-color, 4%);
+ }
+}
+
+.react-toggle-track {
+ background: $ui-secondary-color;
+}
+
+.react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
+ background: lighten($ui-secondary-color, 10%);
+}
+
+.react-toggle.react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track {
+ background: darken($ui-highlight-color, 10%);
+}
+
+// Change the background colors of modals
+.actions-modal,
+.boost-modal,
+.confirmation-modal,
+.mute-modal,
+.report-modal,
+.embed-modal,
+.error-modal,
+.onboarding-modal {
+ background: $ui-base-color;
+}
+
+.boost-modal__action-bar,
+.confirmation-modal__action-bar,
+.mute-modal__action-bar,
+.onboarding-modal__paginator,
+.error-modal__footer {
+ background: darken($ui-base-color, 6%);
+
+ .onboarding-modal__nav,
+ .error-modal__nav {
+ &:hover,
+ &:focus,
+ &:active {
+ background-color: darken($ui-base-color, 12%);
+ }
+ }
+}
+
+// Change the default color used for the text in an empty column or on the error column
+.empty-column-indicator,
+.error-column {
+ color: lighten($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;
+ }
+
+ }
+}
+
diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/variables.scss b/app/javascript/flavours/glitch/styles/mastodon-light/variables.scss
new file mode 100644
index 00000000000..36f51f067c5
--- /dev/null
+++ b/app/javascript/flavours/glitch/styles/mastodon-light/variables.scss
@@ -0,0 +1,36 @@
+// Dependent colors
+$black: #000000;
+$white: #ffffff;
+
+$classic-base-color: #282c37;
+$classic-primary-color: #9baec8;
+$classic-secondary-color: #d9e1e8;
+$classic-highlight-color: #2b90d9;
+
+$ui-base-color: $classic-secondary-color !default;
+$ui-base-lighter-color: darken($ui-base-color, 57%);
+$ui-highlight-color: $classic-highlight-color !default;
+$ui-primary-color: $classic-primary-color !default;
+$ui-secondary-color: $classic-base-color !default;
+
+$primary-text-color: $black !default;
+$darker-text-color: $classic-base-color !default;
+$dark-text-color: #444b5d;
+$action-button-color: #606984;
+
+$base-overlay-background: $white !default;
+
+$inverted-text-color: $black !default;
+$lighter-text-color: $classic-base-color !default;
+$light-text-color: #444b5d;
+
+$account-background-color: $white !default;
+
+//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);
+}