about summary refs log tree commit diff
path: root/app/javascript/styles
diff options
context:
space:
mode:
authorDavid Yip <yipdw@member.fsf.org>2018-05-03 17:23:44 -0500
committerDavid Yip <yipdw@member.fsf.org>2018-05-03 17:23:44 -0500
commitc816701550d7cdb593371dc47d0b9430c78308b0 (patch)
treecc4417d14de20e69fd5f9a58d66f84af4a623329 /app/javascript/styles
parent3a47842223ff93d8c057f804809f1b111dfd6f76 (diff)
parenta7e71bbd08e089938fbf20ddef5768c2f3ee0702 (diff)
Merge remote-tracking branch 'origin/master' into gs-master
  Conflicts:
 	.travis.yml
 	Gemfile.lock
 	README.md
 	app/controllers/settings/follower_domains_controller.rb
 	app/controllers/statuses_controller.rb
 	app/javascript/mastodon/locales/ja.json
 	app/lib/feed_manager.rb
 	app/models/media_attachment.rb
 	app/models/mute.rb
 	app/models/status.rb
 	app/services/mute_service.rb
 	app/views/home/index.html.haml
 	app/views/stream_entries/_simple_status.html.haml
 	config/locales/ca.yml
 	config/locales/en.yml
 	config/locales/es.yml
 	config/locales/fr.yml
 	config/locales/nl.yml
 	config/locales/pl.yml
 	config/locales/pt-BR.yml
 	config/themes.yml
Diffstat (limited to 'app/javascript/styles')
-rw-r--r--app/javascript/styles/contrast.scss3
-rw-r--r--app/javascript/styles/contrast/diff.scss14
-rw-r--r--app/javascript/styles/contrast/variables.scss24
-rw-r--r--app/javascript/styles/mastodon/about.scss32
-rw-r--r--app/javascript/styles/mastodon/accounts.scss22
-rw-r--r--app/javascript/styles/mastodon/admin.scss123
-rw-r--r--app/javascript/styles/mastodon/compact_header.scss4
-rw-r--r--app/javascript/styles/mastodon/components.scss175
-rw-r--r--app/javascript/styles/mastodon/containers.scss2
-rw-r--r--app/javascript/styles/mastodon/emoji_picker.scss4
-rw-r--r--app/javascript/styles/mastodon/forms.scss10
-rw-r--r--app/javascript/styles/mastodon/landing_strip.scss2
-rw-r--r--app/javascript/styles/mastodon/stream_entries.scss14
-rw-r--r--app/javascript/styles/mastodon/tables.scss116
-rw-r--r--app/javascript/styles/mastodon/variables.scss20
15 files changed, 379 insertions, 186 deletions
diff --git a/app/javascript/styles/contrast.scss b/app/javascript/styles/contrast.scss
new file mode 100644
index 000000000..5b43aecbe
--- /dev/null
+++ b/app/javascript/styles/contrast.scss
@@ -0,0 +1,3 @@
+@import 'contrast/variables';
+@import 'application';
+@import 'contrast/diff';
diff --git a/app/javascript/styles/contrast/diff.scss b/app/javascript/styles/contrast/diff.scss
new file mode 100644
index 000000000..eee9ecc3e
--- /dev/null
+++ b/app/javascript/styles/contrast/diff.scss
@@ -0,0 +1,14 @@
+// components.scss
+.compose-form {
+  .compose-form__modifiers {
+    .compose-form__upload {
+      &-description {
+        input {
+          &::placeholder {
+            opacity: 1.0;
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/app/javascript/styles/contrast/variables.scss b/app/javascript/styles/contrast/variables.scss
new file mode 100644
index 000000000..f6cadf029
--- /dev/null
+++ b/app/javascript/styles/contrast/variables.scss
@@ -0,0 +1,24 @@
+// Dependent colors
+$black: #000000;
+
+$classic-base-color: #282c37;
+$classic-primary-color: #9baec8;
+$classic-secondary-color: #d9e1e8;
+$classic-highlight-color: #2b90d9;
+
+$ui-base-color: $classic-base-color !default;
+$ui-primary-color: $classic-primary-color !default;
+$ui-secondary-color: $classic-secondary-color !default;
+
+// Differences
+$ui-highlight-color: #2b5fd9;
+
+$darker-text-color: lighten($ui-primary-color, 20%) !default;
+$dark-text-color: lighten($ui-primary-color, 12%) !default;
+$secondary-text-color: lighten($ui-secondary-color, 6%) !default;
+$highlight-text-color: $classic-highlight-color !default;
+$action-button-color: #8d9ac2;
+
+$inverted-text-color: $black !default;
+$lighter-text-color: darken($ui-base-color,6%) !default;
+$light-text-color: darken($ui-primary-color, 40%) !default;
diff --git a/app/javascript/styles/mastodon/about.scss b/app/javascript/styles/mastodon/about.scss
index 0a09a38d2..c9c0e3081 100644
--- a/app/javascript/styles/mastodon/about.scss
+++ b/app/javascript/styles/mastodon/about.scss
@@ -225,7 +225,7 @@ $small-breakpoint: 960px;
     font-family: inherit;
     font-size: inherit;
     line-height: inherit;
-    color: transparentize($darker-text-color, 0.1);
+    color: lighten($darker-text-color, 10%);
   }
 
   h1 {
@@ -234,14 +234,14 @@ $small-breakpoint: 960px;
     line-height: 30px;
     font-weight: 500;
     margin-bottom: 20px;
-    color: $primary-text-color;
+    color: $secondary-text-color;
 
     small {
       font-family: 'mastodon-font-sans-serif', sans-serif;
       display: block;
       font-size: 18px;
       font-weight: 400;
-      color: opacify($darker-text-color, 0.1);
+      color: lighten($darker-text-color, 10%);
     }
   }
 
@@ -251,7 +251,7 @@ $small-breakpoint: 960px;
     line-height: 26px;
     font-weight: 500;
     margin-bottom: 20px;
-    color: $primary-text-color;
+    color: $secondary-text-color;
   }
 
   h3 {
@@ -260,7 +260,7 @@ $small-breakpoint: 960px;
     line-height: 24px;
     font-weight: 500;
     margin-bottom: 20px;
-    color: $primary-text-color;
+    color: $secondary-text-color;
   }
 
   h4 {
@@ -269,7 +269,7 @@ $small-breakpoint: 960px;
     line-height: 24px;
     font-weight: 500;
     margin-bottom: 20px;
-    color: $primary-text-color;
+    color: $secondary-text-color;
   }
 
   h5 {
@@ -278,7 +278,7 @@ $small-breakpoint: 960px;
     line-height: 24px;
     font-weight: 500;
     margin-bottom: 20px;
-    color: $primary-text-color;
+    color: $secondary-text-color;
   }
 
   h6 {
@@ -287,7 +287,7 @@ $small-breakpoint: 960px;
     line-height: 24px;
     font-weight: 500;
     margin-bottom: 20px;
-    color: $primary-text-color;
+    color: $secondary-text-color;
   }
 
   ul,
@@ -405,7 +405,7 @@ $small-breakpoint: 960px;
         font-size: 14px;
 
         &:hover {
-          color: $darker-text-color;
+          color: $secondary-text-color;
         }
       }
 
@@ -517,7 +517,7 @@ $small-breakpoint: 960px;
 
       span {
         &:last-child {
-          color: $darker-text-color;
+          color: $secondary-text-color;
         }
       }
 
@@ -559,7 +559,7 @@ $small-breakpoint: 960px;
         a,
         span {
           font-weight: 400;
-          color: opacify($darker-text-color, 0.1);
+          color: darken($darker-text-color, 10%);
         }
 
         a {
@@ -775,7 +775,7 @@ $small-breakpoint: 960px;
     }
 
     p a {
-      color: $darker-text-color;
+      color: $secondary-text-color;
     }
 
     h1 {
@@ -787,7 +787,7 @@ $small-breakpoint: 960px;
         color: $darker-text-color;
 
         span {
-          color: $darker-text-color;
+          color: $secondary-text-color;
         }
       }
     }
@@ -896,7 +896,7 @@ $small-breakpoint: 960px;
       }
 
       a {
-        color: $darker-text-color;
+        color: $secondary-text-color;
         text-decoration: none;
       }
     }
@@ -980,7 +980,7 @@ $small-breakpoint: 960px;
   .footer-links {
     padding-bottom: 50px;
     text-align: right;
-    color: $darker-text-color;
+    color: $dark-text-color;
 
     p {
       font-size: 14px;
@@ -995,7 +995,7 @@ $small-breakpoint: 960px;
   &__footer {
     margin-top: 10px;
     text-align: center;
-    color: $darker-text-color;
+    color: $dark-text-color;
 
     p {
       font-size: 14px;
diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss
index f9af6f288..c2d0de4b9 100644
--- a/app/javascript/styles/mastodon/accounts.scss
+++ b/app/javascript/styles/mastodon/accounts.scss
@@ -178,7 +178,7 @@
     font-size: 14px;
     line-height: 18px;
     padding: 0 15px;
-    color: $darker-text-color;
+    color: $secondary-text-color;
   }
 
   @media screen and (max-width: 480px) {
@@ -256,7 +256,7 @@
   .current {
     background: $simple-background-color;
     border-radius: 100px;
-    color: $lighter-text-color;
+    color: $inverted-text-color;
     cursor: default;
     margin: 0 10px;
   }
@@ -268,7 +268,7 @@
   .older,
   .newer {
     text-transform: uppercase;
-    color: $primary-text-color;
+    color: $secondary-text-color;
   }
 
   .older {
@@ -293,7 +293,7 @@
 
   .disabled {
     cursor: default;
-    color: opacify($lighter-text-color, 0.1);
+    color: lighten($inverted-text-color, 10%);
   }
 
   @media screen and (max-width: 700px) {
@@ -332,7 +332,7 @@
     width: 335px;
     background: $simple-background-color;
     border-radius: 4px;
-    color: $lighter-text-color;
+    color: $inverted-text-color;
     margin: 0 5px 10px;
     position: relative;
 
@@ -344,7 +344,7 @@
       overflow: hidden;
       height: 100px;
       border-radius: 4px 4px 0 0;
-      background-color: opacify($lighter-text-color, 0.04);
+      background-color: lighten($inverted-text-color, 4%);
       background-size: cover;
       background-position: center;
       position: relative;
@@ -422,7 +422,7 @@
     .account__header__content {
       padding: 10px 15px;
       padding-top: 15px;
-      color: transparentize($lighter-text-color, 0.1);
+      color: $lighter-text-color;
       word-wrap: break-word;
       overflow: hidden;
       text-overflow: ellipsis;
@@ -434,7 +434,7 @@
 .nothing-here {
   width: 100%;
   display: block;
-  color: $lighter-text-color;
+  color: $light-text-color;
   font-size: 14px;
   font-weight: 500;
   text-align: center;
@@ -493,7 +493,7 @@
 
       span {
         font-size: 14px;
-        color: $inverted-text-color;
+        color: $light-text-color;
       }
     }
 
@@ -508,7 +508,7 @@
 
   .account__header__content {
     font-size: 14px;
-    color: $darker-text-color;
+    color: $inverted-text-color;
   }
 }
 
@@ -586,7 +586,7 @@
     font-weight: 500;
     text-align: center;
     width: 94px;
-    color: opacify($darker-text-color, 0.1);
+    color: $secondary-text-color;
     background: rgba(darken($ui-base-color, 8%), 0.5);
   }
 
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index 348f72078..a6cc8b62b 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -90,7 +90,7 @@
     padding-left: 25px;
 
     h2 {
-      color: $primary-text-color;
+      color: $secondary-text-color;
       font-size: 24px;
       line-height: 28px;
       font-weight: 400;
@@ -98,7 +98,7 @@
     }
 
     h3 {
-      color: $primary-text-color;
+      color: $secondary-text-color;
       font-size: 20px;
       line-height: 28px;
       font-weight: 400;
@@ -109,7 +109,7 @@
       text-transform: uppercase;
       font-size: 13px;
       font-weight: 500;
-      color: $primary-text-color;
+      color: $darker-text-color;
       padding-bottom: 8px;
       margin-bottom: 8px;
       border-bottom: 1px solid lighten($ui-base-color, 8%);
@@ -117,7 +117,7 @@
 
     h6 {
       font-size: 16px;
-      color: $primary-text-color;
+      color: $secondary-text-color;
       line-height: 28px;
       font-weight: 400;
     }
@@ -125,7 +125,7 @@
     & > p {
       font-size: 14px;
       line-height: 18px;
-      color: $darker-text-color;
+      color: $secondary-text-color;
       margin-bottom: 20px;
 
       strong {
@@ -141,14 +141,15 @@
     }
 
     hr {
-      margin: 20px 0;
+      width: 100%;
+      height: 0;
       border: 0;
-      background: transparent;
-      border-bottom: 1px solid $ui-base-color;
+      border-bottom: 1px solid rgba($ui-base-lighter-color, .6);
+      margin: 20px 0;
 
-      &.section-break {
-        margin: 30px 0;
-        border-bottom: 2px solid $ui-base-lighter-color;
+      &.spacer {
+        height: 1px;
+        border: 0;
       }
     }
 
@@ -291,7 +292,7 @@
     font-weight: 500;
     font-size: 14px;
     line-height: 18px;
-    color: $primary-text-color;
+    color: $secondary-text-color;
 
     @each $lang in $cjk-langs {
       &:lang(#{$lang}) {
@@ -335,34 +336,8 @@
   }
 }
 
-.report-note__comment {
-  margin-bottom: 20px;
-}
-
-.report-note__form {
-  margin-bottom: 20px;
-
-  .report-note__textarea {
-    box-sizing: border-box;
-    border: 0;
-    padding: 7px 4px;
-    margin-bottom: 10px;
-    font-size: 16px;
-    color: $inverted-text-color;
-    display: block;
-    width: 100%;
-    outline: 0;
-    font-family: inherit;
-    resize: vertical;
-  }
-
-  .report-note__buttons {
-    text-align: right;
-  }
-
-  .report-note__button {
-    margin: 0 0 5px 5px;
-  }
+.simple_form.new_report_note {
+  max-width: 100%;
 }
 
 .batch-form-box {
@@ -390,13 +365,6 @@
   }
 }
 
-.batch-checkbox,
-.batch-checkbox-all {
-  display: flex;
-  align-items: center;
-  margin-right: 5px;
-}
-
 .back-link {
   margin-bottom: 10px;
   font-size: 14px;
@@ -416,7 +384,7 @@
 }
 
 .log-entry {
-  margin-bottom: 8px;
+  margin-bottom: 20px;
   line-height: 20px;
 
   &__header {
@@ -452,7 +420,7 @@
   }
 
   &__timestamp {
-    color: $darker-text-color;
+    color: $dark-text-color;
   }
 
   &__extras {
@@ -469,7 +437,7 @@
   &__icon {
     font-size: 28px;
     margin-right: 10px;
-    color: $darker-text-color;
+    color: $dark-text-color;
   }
 
   &__icon__overlay {
@@ -496,7 +464,7 @@
   a,
   .username,
   .target {
-    color: $primary-text-color;
+    color: $secondary-text-color;
     text-decoration: none;
     font-weight: 500;
   }
@@ -506,7 +474,7 @@
   }
 
   .diff-neutral {
-    color: $darker-text-color;
+    color: $secondary-text-color;
   }
 
   .diff-new {
@@ -514,9 +482,12 @@
   }
 }
 
+a.name-tag,
 .name-tag {
   display: flex;
   align-items: center;
+  text-decoration: none;
+  color: $secondary-text-color;
 
   .avatar {
     display: block;
@@ -528,4 +499,52 @@
   .username {
     font-weight: 500;
   }
+
+  &.suspended {
+    .username {
+      text-decoration: line-through;
+      color: lighten($error-red, 12%);
+    }
+
+    .avatar {
+      filter: grayscale(100%);
+      opacity: 0.8;
+    }
+  }
+}
+
+.speech-bubble {
+  margin-bottom: 20px;
+  border-left: 4px solid $ui-highlight-color;
+
+  &.positive {
+    border-left-color: $success-green;
+  }
+
+  &.negative {
+    border-left-color: lighten($error-red, 12%);
+  }
+
+  &__bubble {
+    padding: 16px;
+    padding-left: 14px;
+    font-size: 15px;
+    line-height: 20px;
+    border-radius: 4px 4px 4px 0;
+    position: relative;
+    font-weight: 500;
+
+    a {
+      color: $darker-text-color;
+    }
+  }
+
+  &__owner {
+    padding: 8px;
+    padding-left: 12px;
+  }
+
+  time {
+    color: $dark-text-color;
+  }
 }
diff --git a/app/javascript/styles/mastodon/compact_header.scss b/app/javascript/styles/mastodon/compact_header.scss
index 83ac7a8d0..4980ab5f1 100644
--- a/app/javascript/styles/mastodon/compact_header.scss
+++ b/app/javascript/styles/mastodon/compact_header.scss
@@ -2,7 +2,7 @@
   h1 {
     font-size: 24px;
     line-height: 28px;
-    color: $primary-text-color;
+    color: $darker-text-color;
     font-weight: 500;
     margin-bottom: 20px;
     padding: 0 10px;
@@ -20,7 +20,7 @@
 
     small {
       font-weight: 400;
-      color: $darker-text-color;
+      color: $secondary-text-color;
     }
 
     img {
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index f0fde6666..a982585c3 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -31,7 +31,7 @@
   &:active,
   &:focus,
   &:hover {
-    background-color: lighten($ui-highlight-color, 4%);
+    background-color: lighten($ui-highlight-color, 10%);
     transition: all 200ms ease-out;
   }
 
@@ -83,7 +83,7 @@
   }
 
   &.button-secondary {
-    color: $ui-primary-color;
+    color: $darker-text-color;
     background: transparent;
     padding: 3px 15px;
     border: 1px solid $ui-primary-color;
@@ -92,7 +92,7 @@
     &:focus,
     &:hover {
       border-color: lighten($ui-primary-color, 4%);
-      color: lighten($ui-primary-color, 4%);
+      color: lighten($darker-text-color, 4%);
     }
   }
 
@@ -149,18 +149,18 @@
     &:hover,
     &:active,
     &:focus {
-      color: transparentize($lighter-text-color, 0.07);
+      color: darken($lighter-text-color, 7%);
     }
 
     &.disabled {
-      color: opacify($lighter-text-color, 0.07);
+      color: lighten($lighter-text-color, 7%);
     }
 
     &.active {
       color: $highlight-text-color;
 
       &.disabled {
-        color: opacify($lighter-text-color, 0.13);
+        color: lighten($highlight-text-color, 13%);
       }
     }
   }
@@ -193,12 +193,12 @@
   &:hover,
   &:active,
   &:focus {
-    color: opacify($lighter-text-color, 0.07);
+    color: darken($lighter-text-color, 7%);
     transition: color 200ms ease-out;
   }
 
   &.disabled {
-    color: transparentize($lighter-text-color, 0.2);
+    color: lighten($lighter-text-color, 20%);
     cursor: default;
   }
 
@@ -349,7 +349,7 @@
     box-shadow: 4px 4px 6px rgba($base-shadow-color, 0.4);
     background: $ui-secondary-color;
     border-radius: 0 0 4px 4px;
-    color: $lighter-text-color;
+    color: $inverted-text-color;
     font-size: 14px;
     padding: 6px;
 
@@ -457,7 +457,7 @@
 
         input {
           background: transparent;
-          color: $primary-text-color;
+          color: $secondary-text-color;
           border: 0;
           padding: 0;
           margin: 0;
@@ -471,8 +471,8 @@
           }
 
           &::placeholder {
-            opacity: 0.54;
-            color: $darker-text-color;
+            opacity: 0.75;
+            color: $secondary-text-color;
           }
         }
 
@@ -556,7 +556,6 @@
 }
 
 .emojione {
-  display: inline-block;
   font-size: inherit;
   vertical-align: middle;
   object-fit: contain;
@@ -588,7 +587,7 @@
 }
 
 .reply-indicator__display-name {
-  color: $lighter-text-color;
+  color: $inverted-text-color;
   display: block;
   max-width: 100%;
   line-height: 24px;
@@ -643,14 +642,14 @@
   }
 
   a {
-    color: $ui-secondary-color;
+    color: $secondary-text-color;
     text-decoration: none;
 
     &:hover {
       text-decoration: underline;
 
       .fa {
-        color: lighten($action-button-color, 7%);
+        color: lighten($dark-text-color, 7%);
       }
     }
 
@@ -665,7 +664,7 @@
     }
 
     .fa {
-      color: $action-button-color;
+      color: $dark-text-color;
     }
   }
 
@@ -702,7 +701,7 @@
   border-radius: 2px;
   background: transparent;
   border: 0;
-  color: $lighter-text-color;
+  color: $inverted-text-color;
   font-weight: 700;
   font-size: 11px;
   padding: 0 6px;
@@ -769,7 +768,7 @@
 
   &.light {
     .status__relative-time {
-      color: $lighter-text-color;
+      color: $light-text-color;
     }
 
     .status__display-name {
@@ -782,7 +781,7 @@
       }
 
       span {
-        color: $lighter-text-color;
+        color: $light-text-color;
       }
     }
 
@@ -816,13 +815,13 @@
 }
 
 .status__relative-time {
-  color: $darker-text-color;
+  color: $dark-text-color;
   float: right;
   font-size: 14px;
 }
 
 .status__display-name {
-  color: $darker-text-color;
+  color: $dark-text-color;
 }
 
 .status__info .status__display-name {
@@ -873,14 +872,14 @@
 
 .status__prepend {
   margin-left: 68px;
-  color: $darker-text-color;
+  color: $dark-text-color;
   padding: 8px 0;
   padding-bottom: 2px;
   font-size: 14px;
   position: relative;
 
   .status__display-name strong {
-    color: $darker-text-color;
+    color: $dark-text-color;
   }
 
   > span {
@@ -942,7 +941,7 @@
 
 .detailed-status__meta {
   margin-top: 15px;
-  color: $darker-text-color;
+  color: $dark-text-color;
   font-size: 14px;
   line-height: 18px;
 }
@@ -1006,6 +1005,15 @@
   padding: 10px;
   border-bottom: 1px solid lighten($ui-base-color, 8%);
 
+  &.compact {
+    padding: 0;
+    border-bottom: 0;
+
+    .account__avatar-wrapper {
+      margin-left: 0;
+    }
+  }
+
   .account__display-name {
     flex: 1 1 auto;
     display: block;
@@ -1029,7 +1037,6 @@
 .account__avatar {
   @include avatar-radius();
   position: relative;
-  cursor: pointer;
 
   &-inline {
     display: inline-block;
@@ -1038,6 +1045,10 @@
   }
 }
 
+a .account__avatar {
+  cursor: pointer;
+}
+
 .account__avatar-overlay {
   @include avatar-size(48px);
 
@@ -1079,7 +1090,7 @@
     }
 
     .account__header__username {
-      color: $darker-text-color;
+      color: $secondary-text-color;
     }
   }
 
@@ -1089,7 +1100,7 @@
   }
 
   .account__header__content {
-    color: $darker-text-color;
+    color: $secondary-text-color;
   }
 
   .account__header__display-name {
@@ -1117,7 +1128,7 @@
 .account__disclaimer {
   padding: 10px;
   border-top: 1px solid lighten($ui-base-color, 8%);
-  color: $darker-text-color;
+  color: $dark-text-color;
 
   strong {
     font-weight: 500;
@@ -1286,7 +1297,7 @@
 .status__display-name,
 .reply-indicator__display-name,
 .detailed-status__display-name,
-.account__display-name {
+a.account__display-name {
   &:hover strong {
     text-decoration: underline;
   }
@@ -1304,7 +1315,7 @@
 }
 
 .detailed-status__display-name {
-  color: $darker-text-color;
+  color: $secondary-text-color;
   display: block;
   line-height: 24px;
   margin-bottom: 15px;
@@ -1339,11 +1350,11 @@
 .muted {
   .status__content p,
   .status__content a {
-    color: $darker-text-color;
+    color: $dark-text-color;
   }
 
   .status__display-name strong {
-    color: $darker-text-color;
+    color: $dark-text-color;
   }
 
   .status__avatar {
@@ -1351,11 +1362,11 @@
   }
 
   a.status__content__spoiler-link {
-    background: $darker-text-color;
-    color: lighten($ui-base-color, 4%);
+    background: $ui-base-lighter-color;
+    color: $inverted-text-color;
 
     &:hover {
-      background: transparentize($darker-text-color, 0.07);
+      background: lighten($ui-base-lighter-color, 7%);
       text-decoration: none;
     }
   }
@@ -1366,7 +1377,7 @@
   padding: 8px 0;
   padding-bottom: 0;
   cursor: default;
-  color: $ui-primary-color;
+  color: $darker-text-color;
   font-size: 15px;
   position: relative;
 
@@ -1477,7 +1488,7 @@
   color: $darker-text-color;
 
   strong {
-    color: $primary-text-color;
+    color: $secondary-text-color;
   }
 
   a {
@@ -1591,7 +1602,7 @@
     &:hover,
     &:active {
       background: $ui-highlight-color;
-      color: $primary-text-color;
+      color: $secondary-text-color;
       outline: 0;
     }
   }
@@ -1644,7 +1655,7 @@
 
     &:hover {
       background: $ui-highlight-color;
-      color: $primary-text-color;
+      color: $secondary-text-color;
     }
   }
 }
@@ -1656,7 +1667,7 @@
 .static-content {
   padding: 10px;
   padding-top: 20px;
-  color: $darker-text-color;
+  color: $dark-text-color;
 
   h1 {
     font-size: 16px;
@@ -1743,7 +1754,7 @@
   display: block;
   flex: 1 1 auto;
   padding: 15px 5px 13px;
-  color: $ui-primary-color;
+  color: $darker-text-color;
   text-decoration: none;
   text-align: center;
   font-size: 16px;
@@ -2155,7 +2166,7 @@
 
 .column-subheading {
   background: $ui-base-color;
-  color: $darker-text-color;
+  color: $dark-text-color;
   padding: 8px 20px;
   font-size: 12px;
   font-weight: 500;
@@ -2178,11 +2189,11 @@
   flex: 1 0 auto;
 
   p {
-    color: $darker-text-color;
+    color: $secondary-text-color;
   }
 
   a {
-    color: opacify($darker-text-color, 0.07);
+    color: $dark-text-color;
   }
 }
 
@@ -2263,7 +2274,7 @@
   font-size: 14px;
   border: 1px solid lighten($ui-base-color, 8%);
   border-radius: 4px;
-  color: $darker-text-color;
+  color: $dark-text-color;
   margin-top: 14px;
   text-decoration: none;
   overflow: hidden;
@@ -2343,7 +2354,7 @@ a.status-card {
   display: block;
   font-weight: 500;
   margin-bottom: 5px;
-  color: $ui-primary-color;
+  color: $darker-text-color;
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
@@ -2357,7 +2368,7 @@ a.status-card {
 }
 
 .status-card__description {
-  color: $ui-primary-color;
+  color: $darker-text-color;
 }
 
 .status-card__host {
@@ -2401,7 +2412,7 @@ a.status-card {
 
 .load-more {
   display: block;
-  color: $darker-text-color;
+  color: $dark-text-color;
   background-color: transparent;
   border: 0;
   font-size: inherit;
@@ -2425,7 +2436,7 @@ a.status-card {
   text-align: center;
   font-size: 16px;
   font-weight: 500;
-  color: opacify($darker-text-color, 0.07);
+  color: $dark-text-color;
   background: $ui-base-color;
   cursor: default;
   display: flex;
@@ -2465,7 +2476,7 @@ a.status-card {
     strong {
       display: block;
       margin-bottom: 10px;
-      color: $darker-text-color;
+      color: $dark-text-color;
     }
 
     span {
@@ -2553,13 +2564,13 @@ a.status-card {
 .column-header__button {
   background: lighten($ui-base-color, 4%);
   border: 0;
-  color: $ui-primary-color;
+  color: $darker-text-color;
   cursor: pointer;
   font-size: 16px;
   padding: 0 15px;
 
   &:hover {
-    color: lighten($ui-primary-color, 7%);
+    color: lighten($darker-text-color, 7%);
   }
 
   &.active {
@@ -2640,7 +2651,7 @@ a.status-card {
 }
 
 .loading-indicator {
-  color: $darker-text-color;
+  color: $dark-text-color;
   font-size: 12px;
   font-weight: 400;
   text-transform: uppercase;
@@ -2737,7 +2748,7 @@ a.status-card {
   &:active,
   &:focus {
     padding: 0;
-    color: transparentize($darker-text-color, 0.07);
+    color: lighten($darker-text-color, 8%);
   }
 }
 
@@ -2861,7 +2872,7 @@ a.status-card {
 
 .empty-column-indicator,
 .error-column {
-  color: $darker-text-color;
+  color: $dark-text-color;
   background: $ui-base-color;
   text-align: center;
   padding: 20px;
@@ -3063,7 +3074,7 @@ a.status-card {
   display: flex;
   align-items: center;
   justify-content: center;
-  color: $primary-text-color;
+  color: $secondary-text-color;
   font-size: 18px;
   font-weight: 500;
   border: 2px dashed $ui-base-lighter-color;
@@ -3161,7 +3172,7 @@ a.status-card {
 }
 
 .privacy-dropdown__option {
-  color: $lighter-text-color;
+  color: $inverted-text-color;
   padding: 10px;
   cursor: pointer;
   display: flex;
@@ -3283,7 +3294,7 @@ a.status-card {
     font-size: 18px;
     width: 18px;
     height: 18px;
-    color: $ui-secondary-color;
+    color: $secondary-text-color;
     cursor: default;
     pointer-events: none;
 
@@ -3319,7 +3330,7 @@ a.status-card {
 }
 
 .search-results__header {
-  color: $darker-text-color;
+  color: $dark-text-color;
   background: lighten($ui-base-color, 2%);
   border-bottom: 1px solid darken($ui-base-color, 4%);
   padding: 15px 10px;
@@ -3367,13 +3378,13 @@ a.status-card {
 .search-results__hashtag {
   display: block;
   padding: 10px;
-  color: darken($primary-text-color, 4%);
+  color: $secondary-text-color;
   text-decoration: none;
 
   &:hover,
   &:active,
   &:focus {
-    color: $primary-text-color;
+    color: lighten($secondary-text-color, 4%);
     text-decoration: underline;
   }
 }
@@ -3638,7 +3649,7 @@ a.status-card {
     &:hover,
     &:focus,
     &:active {
-      color: transparentize($lighter-text-color, 0.04);
+      color: darken($lighter-text-color, 4%);
       background-color: darken($ui-secondary-color, 16%);
     }
 
@@ -3732,7 +3743,7 @@ a.status-card {
     strong {
       font-weight: 500;
       background: $ui-base-color;
-      color: $primary-text-color;
+      color: $secondary-text-color;
       border-radius: 4px;
       font-size: 14px;
       padding: 3px 6px;
@@ -3792,7 +3803,7 @@ a.status-card {
 
   &__case {
     background: $ui-base-color;
-    color: $primary-text-color;
+    color: $secondary-text-color;
     font-weight: 500;
     padding: 10px;
     border-radius: 4px;
@@ -3809,7 +3820,7 @@ a.status-card {
 
   .figure {
     background: darken($ui-base-color, 8%);
-    color: $darker-text-color;
+    color: $secondary-text-color;
     margin-bottom: 20px;
     border-radius: 4px;
     padding: 10px;
@@ -3921,7 +3932,7 @@ a.status-card {
   }
 
   .status__content__spoiler-link {
-    color: lighten($ui-secondary-color, 8%);
+    color: lighten($secondary-text-color, 8%);
   }
 }
 
@@ -4026,6 +4037,10 @@ a.status-card {
   overflow-y: auto;
   overflow-x: hidden;
 
+  .status__content a {
+    color: $highlight-text-color;
+  }
+
   @media screen and (max-width: 480px) {
     max-height: 10vh;
   }
@@ -4151,7 +4166,7 @@ a.status-card {
     &:hover,
     &:focus,
     &:active {
-      color: transparentize($lighter-text-color, 0.04);
+      color: darken($lighter-text-color, 4%);
     }
   }
 }
@@ -4232,7 +4247,7 @@ a.status-card {
 
   &__icon {
     flex: 0 0 auto;
-    color: $darker-text-color;
+    color: $dark-text-color;
     padding: 8px 18px;
     cursor: default;
     border-right: 1px solid lighten($ui-base-color, 8%);
@@ -4262,7 +4277,7 @@ a.status-card {
 
     a {
       text-decoration: none;
-      color: $darker-text-color;
+      color: $dark-text-color;
       font-weight: 500;
 
       &:hover {
@@ -4281,7 +4296,7 @@ a.status-card {
     }
 
     .fa {
-      color: $darker-text-color;
+      color: $dark-text-color;
     }
   }
 }
@@ -4317,7 +4332,7 @@ a.status-card {
   cursor: zoom-in;
   display: block;
   text-decoration: none;
-  color: $ui-secondary-color;
+  color: $secondary-text-color;
   line-height: 0;
 
   &,
@@ -4431,6 +4446,8 @@ a.status-card {
     video {
       max-width: 100% !important;
       max-height: 100% !important;
+      width: 100% !important;
+      height: 100% !important;
     }
   }
 
@@ -4488,7 +4505,7 @@ a.status-card {
       &:hover,
       &:active,
       &:focus {
-        color: transparentize($darker-text-color, 0.07);
+        color: lighten($darker-text-color, 7%);
       }
     }
 
@@ -4693,7 +4710,7 @@ a.status-card {
     &:active,
     &:focus {
       outline: 0;
-      color: transparentize($darker-text-color, 0.07);
+      color: $secondary-text-color;
 
       &::before {
         content: "";
@@ -4733,7 +4750,7 @@ a.status-card {
     position: relative;
 
     &.active {
-      color: transparentize($darker-text-color, 0.07);
+      color: $secondary-text-color;
 
       &::before,
       &::after {
@@ -4768,12 +4785,12 @@ a.status-card {
   padding: 10px 14px;
   padding-bottom: 14px;
   margin-top: 10px;
-  color: $lighter-text-color;
+  color: $light-text-color;
   box-shadow: 2px 4px 15px rgba($base-shadow-color, 0.4);
 
   h4 {
     text-transform: uppercase;
-    color: $lighter-text-color;
+    color: $light-text-color;
     font-size: 13px;
     font-weight: 500;
     margin-bottom: 10px;
@@ -4805,7 +4822,7 @@ noscript {
   div {
     font-size: 14px;
     margin: 30px auto;
-    color: $primary-text-color;
+    color: $secondary-text-color;
     max-width: 400px;
 
     a {
@@ -4958,7 +4975,7 @@ noscript {
   &__message {
     position: relative;
     margin-left: 58px;
-    color: $darker-text-color;
+    color: $dark-text-color;
     padding: 8px 0;
     padding-top: 0;
     padding-bottom: 4px;
diff --git a/app/javascript/styles/mastodon/containers.scss b/app/javascript/styles/mastodon/containers.scss
index 8df2902d2..9d5ab66a4 100644
--- a/app/javascript/styles/mastodon/containers.scss
+++ b/app/javascript/styles/mastodon/containers.scss
@@ -100,7 +100,7 @@
 
   .name {
     flex: 1 1 auto;
-    color: $darker-text-color;
+    color: $secondary-text-color;
     width: calc(100% - 88px);
 
     .username {
diff --git a/app/javascript/styles/mastodon/emoji_picker.scss b/app/javascript/styles/mastodon/emoji_picker.scss
index 3620a6f54..cf9547586 100644
--- a/app/javascript/styles/mastodon/emoji_picker.scss
+++ b/app/javascript/styles/mastodon/emoji_picker.scss
@@ -50,7 +50,7 @@
   cursor: pointer;
 
   &:hover {
-    color: opacify($lighter-text-color, 0.04);
+    color: darken($lighter-text-color, 4%);
   }
 }
 
@@ -184,7 +184,7 @@
   font-size: 14px;
   text-align: center;
   padding-top: 70px;
-  color: $lighter-text-color;
+  color: $light-text-color;
 
   .emoji-mart-category-label {
     display: none;
diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss
index 3a3b4c326..f97890187 100644
--- a/app/javascript/styles/mastodon/forms.scss
+++ b/app/javascript/styles/mastodon/forms.scss
@@ -248,7 +248,7 @@ code {
     }
 
     &:required:valid {
-      border-bottom-color: lighten($error-red, 12%);
+      border-bottom-color: $valid-value-color;
     }
 
     &:active,
@@ -266,7 +266,7 @@ code {
     input[type=text],
     input[type=email],
     input[type=password] {
-      border-bottom-color: lighten($error-red, 12%);
+      border-bottom-color: $valid-value-color;
     }
 
     .error {
@@ -356,7 +356,7 @@ code {
       padding: 7px 4px;
       padding-bottom: 9px;
       font-size: 16px;
-      color: $darker-text-color;
+      color: $dark-text-color;
       font-family: inherit;
       pointer-events: none;
       cursor: default;
@@ -446,7 +446,7 @@ code {
   }
 
   strong {
-    color: $primary-text-color;
+    color: $secondary-text-color;
     font-weight: 500;
 
     @each $lang in $cjk-langs {
@@ -483,7 +483,7 @@ code {
 
 .qr-alternative {
   margin-bottom: 20px;
-  color: $darker-text-color;
+  color: $secondary-text-color;
   flex: 150px;
 
   samp {
diff --git a/app/javascript/styles/mastodon/landing_strip.scss b/app/javascript/styles/mastodon/landing_strip.scss
index 651c06ced..86614b89b 100644
--- a/app/javascript/styles/mastodon/landing_strip.scss
+++ b/app/javascript/styles/mastodon/landing_strip.scss
@@ -45,7 +45,7 @@
   padding: 14px;
   border-radius: 4px;
   background: rgba(darken($ui-base-color, 7%), 0.8);
-  color: $darker-text-color;
+  color: $secondary-text-color;
   font-weight: 400;
   margin-bottom: 20px;
 
diff --git a/app/javascript/styles/mastodon/stream_entries.scss b/app/javascript/styles/mastodon/stream_entries.scss
index c39163ba8..281cbaf83 100644
--- a/app/javascript/styles/mastodon/stream_entries.scss
+++ b/app/javascript/styles/mastodon/stream_entries.scss
@@ -93,7 +93,7 @@
       display: block;
       max-width: 100%;
       padding-right: 25px;
-      color: $lighter-text-color;
+      color: $inverted-text-color;
     }
 
     .status__avatar {
@@ -134,7 +134,7 @@
 
       span {
         font-size: 14px;
-        color: $inverted-text-color;
+        color: $light-text-color;
       }
     }
 
@@ -191,7 +191,7 @@
 
         span {
           font-size: 14px;
-          color: $lighter-text-color;
+          color: $light-text-color;
         }
       }
     }
@@ -225,7 +225,7 @@
 
     .detailed-status__meta {
       margin-top: 15px;
-      color: $lighter-text-color;
+      color: $light-text-color;
       font-size: 14px;
       line-height: 18px;
 
@@ -270,7 +270,7 @@
     padding-left: (48px + 14px * 2);
     padding-bottom: 0;
     margin-bottom: -4px;
-    color: $lighter-text-color;
+    color: $light-text-color;
     font-size: 14px;
     position: relative;
 
@@ -280,7 +280,7 @@
     }
 
     .status__display-name.muted strong {
-      color: $lighter-text-color;
+      color: $light-text-color;
     }
   }
 
@@ -293,7 +293,7 @@
   }
 
   .more {
-    color: $classic-primary-color;
+    color: $darker-text-color;
     display: block;
     padding: 14px;
     text-align: center;
diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss
index c12d84f1c..fa876e603 100644
--- a/app/javascript/styles/mastodon/tables.scss
+++ b/app/javascript/styles/mastodon/tables.scss
@@ -11,6 +11,7 @@
     vertical-align: top;
     border-top: 1px solid $ui-base-color;
     text-align: left;
+    background: darken($ui-base-color, 4%);
   }
 
   & > thead > tr > th {
@@ -48,9 +49,38 @@
     }
   }
 
-  &.inline-table > tbody > tr:nth-child(odd) > td,
-  &.inline-table > tbody > tr:nth-child(odd) > th {
-    background: transparent;
+  &.inline-table {
+    & > tbody > tr:nth-child(odd) {
+      & > td,
+      & > th {
+        background: transparent;
+      }
+    }
+
+    & > tbody > tr:first-child {
+      & > td,
+      & > th {
+        border-top: 0;
+      }
+    }
+  }
+
+  &.batch-table {
+    & > thead > tr > th {
+      background: $ui-base-color;
+      border-top: 1px solid darken($ui-base-color, 8%);
+      border-bottom: 1px solid darken($ui-base-color, 8%);
+
+      &:first-child {
+        border-radius: 4px 0 0;
+        border-left: 1px solid darken($ui-base-color, 8%);
+      }
+
+      &:last-child {
+        border-radius: 0 4px 0 0;
+        border-right: 1px solid darken($ui-base-color, 8%);
+      }
+    }
   }
 }
 
@@ -63,6 +93,13 @@ samp {
   font-family: 'mastodon-font-monospace', monospace;
 }
 
+button.table-action-link {
+  background: transparent;
+  border: 0;
+  font: inherit;
+}
+
+button.table-action-link,
 a.table-action-link {
   text-decoration: none;
   display: inline-block;
@@ -79,4 +116,77 @@ a.table-action-link {
     font-weight: 400;
     margin-right: 5px;
   }
+
+  &:first-child {
+    padding-left: 0;
+  }
+}
+
+.batch-table {
+  &__toolbar,
+  &__row {
+    display: flex;
+
+    &__select {
+      box-sizing: border-box;
+      padding: 8px 16px;
+      cursor: pointer;
+      min-height: 100%;
+
+      input {
+        margin-top: 8px;
+      }
+    }
+
+    &__actions,
+    &__content {
+      padding: 8px 0;
+      padding-right: 16px;
+      flex: 1 1 auto;
+    }
+  }
+
+  &__toolbar {
+    border: 1px solid darken($ui-base-color, 8%);
+    background: $ui-base-color;
+    border-radius: 4px 0 0;
+    height: 47px;
+    align-items: center;
+
+    &__actions {
+      text-align: right;
+      padding-right: 16px - 5px;
+    }
+  }
+
+  &__row {
+    border: 1px solid darken($ui-base-color, 8%);
+    border-top: 0;
+    background: darken($ui-base-color, 4%);
+
+    &:hover {
+      background: darken($ui-base-color, 2%);
+    }
+
+    &:nth-child(even) {
+      background: $ui-base-color;
+
+      &:hover {
+        background: lighten($ui-base-color, 2%);
+      }
+    }
+
+    &__content {
+      padding-top: 12px;
+      padding-bottom: 16px;
+    }
+  }
+
+  .status__content {
+    padding-top: 0;
+
+    strong {
+      font-weight: 700;
+    }
+  }
 }
diff --git a/app/javascript/styles/mastodon/variables.scss b/app/javascript/styles/mastodon/variables.scss
index dc4e72a2e..cbefe35b4 100644
--- a/app/javascript/styles/mastodon/variables.scss
+++ b/app/javascript/styles/mastodon/variables.scss
@@ -17,12 +17,6 @@ $base-shadow-color: $black !default;
 $base-overlay-background: $black !default;
 $base-border-color: $white !default;
 $simple-background-color: $white !default;
-$primary-text-color: $white !default;
-$darker-text-color: rgba($primary-text-color, 0.7) !default;
-$highlight-text-color: $classic-highlight-color !default;
-$inverted-text-color: $black !default;
-$lighter-text-color: rgba($inverted-text-color, 0.7) !default;
-$action-button-color: #8d9ac2;
 $valid-value-color: $success-green !default;
 $error-value-color: $error-red !default;
 
@@ -31,7 +25,19 @@ $ui-base-color: $classic-base-color !default;                  // Darkest
 $ui-base-lighter-color: lighten($ui-base-color, 26%) !default; // Lighter darkest
 $ui-primary-color: $classic-primary-color !default;            // Lighter
 $ui-secondary-color: $classic-secondary-color !default;        // Lightest
-$ui-highlight-color: #2b5fd9;
+$ui-highlight-color: $classic-highlight-color !default;
+
+// Variables for texts
+$primary-text-color: $white !default;
+$darker-text-color: $ui-primary-color !default;
+$dark-text-color: $ui-base-lighter-color !default;
+$secondary-text-color: $ui-secondary-color !default;
+$highlight-text-color: $ui-highlight-color !default;
+$action-button-color: $ui-base-lighter-color !default;
+// For texts on inverted backgrounds
+$inverted-text-color: $ui-base-color !default;
+$lighter-text-color: $ui-base-lighter-color !default;
+$light-text-color: $ui-primary-color !default;
 
 // Language codes that uses CJK fonts
 $cjk-langs: ja, ko, zh-CN, zh-HK, zh-TW;