2 @import 'variables-glitch';
5 -webkit-overflow-scrolling: touch;
6 -ms-overflow-style: -ms-autohiding-scrollbar;
10 background-color: darken($ui-highlight-color, 3%);
13 box-sizing: border-box;
14 color: $primary-text-color;
16 display: inline-block;
27 text-transform: uppercase;
28 text-decoration: none;
29 text-overflow: ellipsis;
30 transition: all 100ms ease-in;
37 background-color: lighten($ui-highlight-color, 7%);
38 transition: all 200ms ease-out;
42 background-color: $ui-primary-color;
46 &.button-alternative {
50 color: $ui-base-color;
51 background: $ui-primary-color;
58 background-color: lighten($ui-primary-color, 4%);
66 color: $ui-primary-color;
68 background: transparent;
70 border: 1px solid $ui-primary-color;
75 border-color: lighten($ui-primary-color, 4%);
76 color: lighten($ui-primary-color, 4%);
93 background: lighten($ui-base-color, 4%);
94 color: $ui-primary-color;
104 color: lighten($ui-primary-color, 7%);
109 display: inline-block;
111 color: $ui-base-lighter-color;
113 background: transparent;
115 transition: color 100ms ease-in;
120 color: lighten($ui-base-color, 33%);
121 transition: color 200ms ease-out;
125 color: lighten($ui-base-color, 13%);
130 color: $ui-highlight-color;
133 &::-moz-focus-inner {
140 outline: 0 !important;
144 color: lighten($ui-base-color, 33%);
149 color: $ui-base-lighter-color;
153 color: $ui-primary-color;
157 color: $ui-highlight-color;
160 color: lighten($ui-highlight-color, 13%);
166 box-sizing: content-box;
167 background: rgba($base-overlay-background, 0.6);
168 color: rgba($primary-text-color, 0.7);
173 background: rgba($base-overlay-background, 0.9);
179 color: lighten($ui-base-color, 33%);
181 background: transparent;
188 transition: color 100ms ease-in;
193 color: $ui-base-lighter-color;
194 transition: color 200ms ease-out;
198 color: lighten($ui-base-color, 13%);
203 color: $ui-highlight-color;
206 &::-moz-focus-inner {
213 outline: 0 !important;
217 .dropdown--active .icon-button {
218 color: $ui-highlight-color;
221 .dropdown--active::after {
222 @media screen and (min-width: 1025px) {
229 border-width: 0 4.5px 7.8px;
230 border-color: transparent transparent $ui-secondary-color;
239 display: inline-block;
251 .lightbox .icon-button {
252 color: $ui-base-color;
259 .compose-form__warning {
260 color: darken($ui-secondary-color, 65%);
262 background: $ui-primary-color;
263 box-shadow: 0 2px 6px rgba($base-shadow-color, 0.3);
270 color: darken($ui-secondary-color, 65%);
275 color: darken($ui-primary-color, 33%);
277 text-decoration: underline;
282 text-decoration: none;
287 .compose-form__modifiers {
288 color: $ui-base-color;
289 font-family: inherit;
291 background: $simple-background-color;
292 border-radius: 0 0 4px;
295 .compose-form__buttons-wrapper {
297 justify-content: space-between;
300 .compose-form__buttons {
302 background: darken($simple-background-color, 8%);
303 box-shadow: inset 0 5px 5px rgba($base-shadow-color, 0.05);
304 border-radius: 0 0 4px 4px;
308 box-sizing: content-box;
313 .compose-form__upload-button-icon {
317 .compose-form__sensitive-button {
320 &.compose-form__sensitive-button--visible {
324 .compose-form__sensitive-button__icon {
329 .compose-form__upload-wrapper {
333 .compose-form__uploads-wrapper {
338 .compose-form__upload {
343 .compose-form__upload-thumbnail {
345 background-position: center;
346 background-size: cover;
347 background-repeat: no-repeat;
352 .compose-form__upload-cancel {
353 background-size: cover;
359 .compose-form__label {
362 vertical-align: middle;
365 border-top: 1px solid $ui-base-color;
369 .compose-form__label__text {
370 display: inline-block;
371 vertical-align: middle;
374 color: $ui-primary-color;
378 .compose-form__textarea,
379 .follow-form__input {
380 background: $simple-background-color;
383 background: $ui-secondary-color;
387 .compose-form__autosuggest-wrapper {
390 .emoji-picker__dropdown {
395 &.dropdown--active::after {
396 border-color: transparent transparent $base-border-color;
401 ::-webkit-scrollbar-track:hover,
402 ::-webkit-scrollbar-track:active {
403 background-color: rgba($base-overlay-background, 0.3);
408 .compose-form__publish {
413 .compose-form__publish-button-wrapper {
419 display: inline-block;
421 vertical-align: middle;
422 margin: -.2ex .15em .2ex;
432 border-radius: 4px 4px 0 0;
435 background: $ui-primary-color;
439 .reply-indicator__header {
444 .reply-indicator__cancel {
449 .reply-indicator__display-name {
450 color: $ui-base-color;
456 text-decoration: none;
459 .reply-indicator__display-avatar {
464 .status__content--with-action {
468 // --- Extra clickable area in the status gutter ---
470 @mixin xtraspaces-full {
471 height: calc(100% + 10px);
474 @mixin xtraspaces-short {
475 height: calc(100% - 35px);
479 // Avi must go on top if the toot is too short
485 .status__content--with-action > div::after {
492 // more than 4 never fit on FullHD, short
493 @include xtraspaces-short;
496 @media screen and (min-width: 1800px) {
497 // 4, very wide screen
498 .column:nth-child(2):nth-last-child(4) {
500 .status__content--with-action > div::after {
501 @include xtraspaces-full;
507 // 1 or 2, always fit
508 .column:nth-child(2):nth-last-child(1),
509 .column:nth-child(2):nth-last-child(2),
510 .column:nth-child(2):nth-last-child(3) {
512 .status__content--with-action > div::after {
513 @include xtraspaces-full;
518 @media screen and (max-width: 1440px) {
520 .column:nth-child(2):nth-last-child(3) {
522 .status__content--with-action > div::after {
523 @include xtraspaces-short;
530 @media screen and (max-width: 1060px) {
531 .status__content--with-action > div::after {
538 // --- end extra clickable spaces ---
542 .reply-indicator__content {
551 .reply-indicator__content {
556 color: $primary-text-color;
557 word-wrap: break-word;
560 white-space: pre-wrap;
576 color: $ui-secondary-color;
577 text-decoration: none;
580 text-decoration: underline;
583 color: lighten($ui-base-color, 40%);
589 text-decoration: none;
592 text-decoration: underline;
598 color: lighten($ui-base-color, 30%);
602 .status__content__spoiler {
605 &.status__content__spoiler--visible {
611 .status__content__spoiler-link {
612 display: inline-block;
614 background: lighten($ui-base-color, 30%);
616 color: lighten($ui-base-color, 8%);
620 text-transform: uppercase;
621 line-height: inherit;
623 vertical-align: bottom;
626 background: lighten($ui-base-color, 33%);
627 text-decoration: none;
630 .status__content__spoiler-icon {
631 display: inline-block;
633 border-left: 1px solid currentColor;
636 vertical-align: -2px;
640 .status__prepend-icon-wrapper {
646 .status, .notification-follow {
647 padding-right: ($dismiss-overlay-width + 0.5rem);
651 .notification-follow {
655 border-bottom: 1px solid lighten($ui-base-color, 8%);
658 border-bottom: 0 none;
667 border-bottom: 1px solid lighten($ui-base-color, 8%);
676 animation: fade 150ms linear;
679 background: lighten($ui-base-color, 8%);
681 .icon-button.disabled {
682 color: lighten($ui-base-color, 16%);
687 .status__relative-time {
688 color: $ui-primary-color;
691 .status__display-name {
692 color: $ui-base-color;
697 color: $ui-base-color;
701 color: $ui-primary-color;
706 color: $ui-base-color;
709 color: $ui-highlight-color;
712 a.status__content__spoiler-link {
713 color: $primary-text-color;
714 background: $ui-primary-color;
717 background: lighten($ui-primary-color, 8%);
724 background-position: center;
725 background-size: cover;
728 &.has-background::before {
735 background-image: linear-gradient(to bottom, rgba($base-shadow-color, .75), rgba($base-shadow-color, .65) 24px, rgba($base-shadow-color, .8));
739 .display-name:hover .display-name__html {
740 text-decoration: none;
746 text-overflow: ellipsis;
749 text-decoration: none;
754 .notification__message {
755 margin: -10px 0 10px;
759 .notification-favourite {
760 .status.status-direct {
761 background: transparent;
763 .icon-button.disabled {
764 color: lighten($ui-base-color, 13%);
769 .status__relative-time {
770 display: inline-block;
774 color: $ui-base-lighter-color;
779 text-overflow: ellipsis;
782 .status__display-name {
784 color: $ui-base-lighter-color;
794 .status__info__icons {
797 color: lighten($ui-base-color, 26%);
799 .status__visibility-icon {
805 border-bottom: 1px solid $ui-secondary-color;
812 text-overflow: ellipsis;
817 .status-check-box-toggle {
821 justify-content: center;
826 margin: -10px 0 10px;
827 color: $ui-base-lighter-color;
832 .status__display-name strong {
833 color: $ui-base-lighter-color;
837 .status__action-bar {
843 .status__action-bar-button {
849 .status__action-bar-dropdown {
854 // Dropdown style override for centering on the icon
858 .dropdown__content.dropdown__right {
859 left: calc(50% + 3px);
861 transform: translate(-50%, 0);
872 .detailed-status__action-bar-dropdown {
876 justify-content: center;
886 .dropdown__content.dropdown__left {
901 background: lighten($ui-base-color, 4%);
915 .detailed-status__meta {
917 color: $ui-base-lighter-color;
922 .detailed-status__action-bar {
923 background: lighten($ui-base-color, 4%);
924 border-top: 1px solid lighten($ui-base-color, 8%);
925 border-bottom: 1px solid lighten($ui-base-color, 8%);
931 .detailed-status__link {
933 text-decoration: none;
936 .detailed-status__favorites,
937 .detailed-status__reblogs {
938 display: inline-block;
944 .reply-indicator__content {
945 color: $ui-base-color;
949 color: lighten($ui-base-color, 20%);
955 border-bottom: 1px solid lighten($ui-base-color, 8%);
957 .account__display-name {
960 color: $ui-primary-color;
962 text-decoration: none;
971 .account__avatar-wrapper {
978 @include avatar-radius();
983 display: inline-block;
984 vertical-align: middle;
989 .account__avatar-overlay {
990 @include avatar-size(48px);
993 @include avatar-radius();
994 @include avatar-size(36px);
998 @include avatar-radius();
999 @include avatar-size(24px);
1008 .account__relationship {
1011 white-space: nowrap;
1014 .account__header__wrapper {
1016 background: lighten($ui-base-color, 4%);
1021 background-size: cover;
1022 background-position: center;
1026 background: rgba(lighten($ui-base-color, 4%), 0.9);
1030 .account__header__content {
1031 color: $ui-secondary-color;
1034 .account__header__display-name {
1035 color: $primary-text-color;
1036 display: inline-block;
1042 .account__header__username {
1043 color: $ui-highlight-color;
1047 margin-bottom: 10px;
1051 .account__disclaimer {
1053 border-top: 1px solid lighten($ui-base-color, 8%);
1054 color: $ui-base-lighter-color;
1063 text-decoration: underline;
1068 text-decoration: none;
1073 .account__header__content {
1074 color: $ui-primary-color;
1079 word-wrap: break-word;
1082 margin-bottom: 20px;
1091 text-decoration: underline;
1094 text-decoration: none;
1099 .account__header__display-name {
1106 .account__metadata {
1111 border-collapse: collapse;
1114 text-decoration: none;
1117 text-decoration: underline;
1122 border-top: 1px solid lighten($ui-base-color, 8%);
1127 vertical-align: middle;
1132 white-space: pre-wrap;
1133 text-overflow: ellipsis;
1138 color: $ui-primary-color;
1139 background: lighten($ui-base-color, 13%);
1140 font-variant: small-caps;
1144 color: $primary-text-color;
1150 color: $primary-text-color;
1151 background: $ui-base-color;
1154 color: $ui-highlight-color;
1159 .account__action-bar {
1160 border-top: 1px solid lighten($ui-base-color, 8%);
1161 border-bottom: 1px solid lighten($ui-base-color, 8%);
1168 .account__action-bar-dropdown {
1173 .dropdown__content.dropdown__right {
1187 .account__action-bar-links {
1193 .account__action-bar__tab {
1194 text-decoration: none;
1197 border-left: 1px solid lighten($ui-base-color, 8%);
1202 text-transform: uppercase;
1204 color: $ui-primary-color;
1211 color: $primary-text-color;
1215 color: $ui-base-lighter-color;
1219 .account__header__avatar {
1220 @include avatar-radius();
1221 @include avatar-size(90px);
1223 margin: 0 auto 10px;
1227 .account-authorize {
1230 .detailed-status__display-name {
1232 margin-bottom: 15px;
1237 .account-authorize__avatar {
1242 .status__display-name,
1243 .status__relative-time,
1244 .detailed-status__display-name,
1245 .detailed-status__datetime,
1246 .detailed-status__application,
1247 .account__display-name {
1248 text-decoration: none;
1251 .status__display-name,
1252 .account__display-name {
1254 color: $primary-text-color;
1258 .account__display-name strong {
1262 .detailed-status__application,
1263 .detailed-status__datetime {
1267 .detailed-status__display-name {
1268 color: $ui-secondary-color;
1271 margin-bottom: 15px;
1277 text-overflow: ellipsis;
1283 color: $primary-text-color;
1287 .detailed-status__display-avatar {
1301 .status__content a {
1302 color: $ui-base-lighter-color;
1305 .status__display-name strong {
1306 color: $ui-base-lighter-color;
1309 .status__avatar, .emojione {
1313 a.status__content__spoiler-link {
1314 background: $ui-base-lighter-color;
1315 color: lighten($ui-base-color, 4%);
1318 background: lighten($ui-base-color, 29%);
1319 text-decoration: none;
1324 .notification__message {
1329 color: $ui-primary-color;
1334 color: $ui-highlight-color;
1338 .notification__favourite-icon-wrapper {
1351 .notification__display-name {
1354 text-decoration: none;
1357 color: $primary-text-color;
1358 text-decoration: underline;
1375 text-overflow: ellipsis;
1377 white-space: nowrap;
1385 text-overflow: ellipsis;
1387 white-space: nowrap;
1392 text-decoration: underline;
1397 .status__relative-time,
1398 .detailed-status__datetime {
1400 text-decoration: underline;
1407 &.image-loader--loading {
1408 .image-loader__preview-canvas {
1413 .image-loader__img {
1420 background-image: none;
1423 &.image-loader--amorphous {
1426 .image-loader__preview-canvas {
1430 .image-loader__img {
1443 color: $ui-primary-color;
1446 color: $primary-text-color;
1450 text-decoration: none;
1454 pointer-events: none;
1459 .navigation-bar__profile {
1464 .navigation-bar__profile-account {
1469 .navigation-bar__profile-edit {
1471 text-decoration: none;
1475 display: inline-block;
1478 .dropdown__content {
1484 border-bottom: 1px solid darken($ui-secondary-color, 8%);
1485 margin: 5px 7px 6px;
1489 .dropdown--active .dropdown__content {
1499 background: $ui-secondary-color;
1502 box-shadow: 0 0 15px rgba($base-shadow-color, 0.4);
1522 box-sizing: border-box;
1523 text-decoration: none;
1524 background: $ui-secondary-color;
1525 color: $ui-base-color;
1527 text-overflow: ellipsis;
1528 white-space: nowrap;
1535 background: $ui-highlight-color;
1536 color: $ui-secondary-color;
1542 vertical-align: middle;
1548 color: $ui-base-lighter-color;
1553 margin-bottom: 40px;
1559 margin-bottom: 20px;
1566 flex-direction: row;
1567 justify-content: flex-start;
1573 @include limited-single-column('screen and (max-width: 360px)', $parent: null) {
1578 .react-swipeable-view-container .columns-area {
1579 height: calc(100% - 20px) !important;
1583 .react-swipeable-view-container {
1592 .react-swipeable-view-container > * {
1594 align-items: center;
1595 justify-content: center;
1602 box-sizing: border-box;
1604 flex-direction: column;
1614 background: $ui-base-color;
1621 flex-direction: column;
1624 background: darken($ui-base-color, 7%);
1629 box-sizing: border-box;
1631 flex-direction: column;
1644 padding: 15px 5px 13px;
1645 color: $ui-primary-color;
1646 text-decoration: none;
1649 border-bottom: 2px solid transparent;
1656 @supports(display: grid) { // hack to fix Chrome <57
1661 @include limited-single-column('screen and (max-width: 360px)', $parent: null) {
1671 :root { // Overrides .wide stylings for mobile view
1672 @include single-column('screen and (max-width: 1024px)', $parent: null) {
1683 flex-direction: column;
1687 .autosuggest-textarea__textarea {
1693 @include multi-columns('screen and (min-width: 1025px)', $parent: null) {
1709 padding-right: 10px;
1713 .columns-area > div {
1723 box-sizing: border-box;
1730 background: lighten($ui-base-color, 13%);
1731 box-sizing: border-box;
1741 background: $ui-base-color;
1748 background: lighten($ui-base-color, 13%);
1756 background: lighten($ui-base-color, 8%);
1757 margin-bottom: 10px;
1759 flex-direction: row;
1762 transition: background 100ms ease-in;
1765 background: lighten($ui-base-color, 3%);
1766 transition: background 200ms ease-out;
1773 background: lighten($ui-base-color, 8%);
1784 color: $primary-text-color;
1785 text-decoration: none;
1789 border-bottom: 2px solid lighten($ui-base-color, 8%);
1790 transition: all 200ms linear;
1798 border-bottom: 2px solid $ui-highlight-color;
1799 color: $ui-highlight-color;
1805 @include multi-columns('screen and (min-width: 1025px)') {
1806 background: lighten($ui-base-color, 14%);
1807 transition: all 100ms linear;
1817 @include limited-single-column('screen and (max-width: 600px)', $parent: null) {
1825 @include multi-columns('screen and (min-width: 1025px)', $parent: null) {
1835 -webkit-overflow-scrolling: touch;
1836 @supports(display: grid) { // hack to fix Chrome <57
1840 &.optionally-scrollable {
1845 .column-back-button {
1846 background: lighten($ui-base-color, 4%);
1847 color: $ui-highlight-color;
1858 text-decoration: underline;
1862 .column-header__back-button {
1863 background: lighten($ui-base-color, 4%);
1865 font-family: inherit;
1866 color: $ui-highlight-color;
1874 text-decoration: underline;
1878 padding: 0 15px 0 0;
1882 .column-back-button__icon {
1883 display: inline-block;
1887 .column-back-button--slim {
1891 .column-back-button--slim-button {
1902 display: inline-block;
1905 background-color: transparent;
1909 -webkit-tap-highlight-color: rgba($base-overlay-background, 0);
1910 -webkit-tap-highlight-color: transparent;
1913 .react-toggle-screenreader-only {
1915 clip: rect(0 0 0 0);
1924 .react-toggle--disabled {
1925 cursor: not-allowed;
1927 transition: opacity 0.25s;
1930 .react-toggle-track {
1934 border-radius: 30px;
1935 background-color: $ui-base-color;
1936 transition: all 0.2s ease;
1939 .react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
1940 background-color: darken($ui-base-color, 10%);
1943 .react-toggle--checked .react-toggle-track {
1944 background-color: $ui-highlight-color;
1947 .react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track {
1948 background-color: lighten($ui-highlight-color, 10%);
1951 .react-toggle-track-check {
1958 margin-bottom: auto;
1962 transition: opacity 0.25s ease;
1965 .react-toggle--checked .react-toggle-track-check {
1967 transition: opacity 0.25s ease;
1970 .react-toggle-track-x {
1977 margin-bottom: auto;
1981 transition: opacity 0.25s ease;
1984 .react-toggle--checked .react-toggle-track-x {
1988 .react-toggle-thumb {
1989 transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1) 0ms;
1995 border: 1px solid $ui-base-color;
1997 background-color: darken($simple-background-color, 2%);
1998 box-sizing: border-box;
1999 transition: all 0.25s ease;
2002 .react-toggle--checked .react-toggle-thumb {
2004 border-color: $ui-highlight-color;
2008 background: lighten($ui-base-color, 8%);
2009 color: $primary-text-color;
2013 text-decoration: none;
2018 background: lighten($ui-base-color, 11%);
2022 .column-link__icon {
2023 display: inline-block;
2027 .column-subheading {
2028 background: $ui-base-color;
2029 color: $ui-base-lighter-color;
2033 text-transform: uppercase;
2037 .autosuggest-textarea,
2042 .autosuggest-textarea__textarea,
2043 .spoiler-input__input {
2045 box-sizing: border-box;
2048 color: $ui-base-color;
2049 background: $simple-background-color;
2051 font-family: inherit;
2061 @include limited-single-column('screen and (max-width: 600px)') {
2066 .spoiler-input__input {
2070 .autosuggest-textarea__textarea {
2072 border-radius: 4px 4px 0 0;
2074 padding-right: 10px + 22px;
2077 @include limited-single-column('screen and (max-width: 600px)') {
2078 height: 100px !important; // prevent auto-resize textarea
2083 .autosuggest-textarea__suggestions {
2089 box-shadow: 0 0 15px rgba($base-shadow-color, 0.4);
2090 background: $ui-secondary-color;
2091 color: $ui-base-color;
2094 &.autosuggest-textarea__suggestions--visible {
2099 .autosuggest-textarea__suggestions__item {
2104 background: darken($ui-secondary-color, 10%);
2108 background: $ui-highlight-color;
2109 color: $base-border-color;
2113 .autosuggest-account {
2117 .autosuggest-account-icon {
2122 .autosuggest-status {
2124 white-space: nowrap;
2125 text-overflow: ellipsis;
2132 .character-counter__wrapper {
2134 margin: 0 16px 0 8px;
2138 .character-counter {
2143 .character-counter--over {
2144 color: $warning-red;
2147 .getting-started__wrapper {
2152 .getting-started__footer {
2154 flex-direction: column;
2158 box-sizing: border-box;
2159 padding-bottom: 235px;
2160 background: url('../images/mastodon-getting-started.png') no-repeat 0 100%;
2164 color: $ui-secondary-color;
2168 color: $ui-base-lighter-color;
2173 color: $ui-primary-color;
2174 background: transparent;
2176 border-bottom: 2px solid $ui-primary-color;
2177 box-sizing: border-box;
2179 font-family: inherit;
2180 margin-bottom: 10px;
2186 color: $primary-text-color;
2187 border-bottom-color: $ui-highlight-color;
2190 @include limited-single-column('screen and (max-width: 600px)') {
2195 color: $ui-base-color;
2196 border-bottom: 2px solid lighten($ui-base-color, 27%);
2200 color: $ui-base-color;
2201 border-bottom-color: $ui-highlight-color;
2208 button.icon-button i.fa-retweet {
2209 background-position: 0 0;
2211 transition: background-position 0.9s steps(10);
2212 transition-duration: 0s;
2213 vertical-align: middle;
2217 display: none !important;
2221 button.icon-button.active i.fa-retweet {
2222 transition-duration: 0.9s;
2223 background-position: 0 100%;
2230 border: 1px solid lighten($ui-base-color, 8%);
2232 color: $ui-base-lighter-color;
2234 text-decoration: none;
2238 background: lighten($ui-base-color, 8%);
2244 .status-card-photo {
2254 .status-card-photo {
2256 text-decoration: none;
2266 .status-card-video {
2270 padding-top: 56.25%;
2286 .status-card__title {
2290 color: $ui-primary-color;
2292 text-overflow: ellipsis;
2293 white-space: nowrap;
2296 .status-card__content {
2299 padding: 14px 14px 14px 8px;
2302 .status-card__description {
2303 color: $ui-primary-color;
2306 .status-card__host {
2312 .status-card__image {
2314 background: lighten($ui-base-color, 8%);
2317 .status-card.horizontal {
2320 .status-card__image {
2324 .status-card__image-image {
2325 border-radius: 4px 4px 0 0;
2329 .status-card__image-image {
2330 border-radius: 4px 0 0 4px;
2339 color: $ui-base-lighter-color;
2340 background-color: transparent;
2344 line-height: inherit;
2351 background: lighten($ui-base-color, 2%);
2355 .missing-indicator {
2359 color: lighten($ui-base-color, 16%);
2360 background: $ui-base-color;
2364 align-items: center;
2365 justify-content: center;
2368 background: url('../images/mastodon-not-found.png') no-repeat center -50px;
2374 .column-header__wrapper {
2388 pointer-events: none;
2391 background: radial-gradient(ellipse, rgba($ui-highlight-color, 0.23) 0%, rgba($ui-highlight-color, 0) 60%);
2399 background: lighten($ui-base-color, 4%);
2407 box-shadow: 0 1px 0 rgba($ui-highlight-color, 0.3);
2409 .column-header__icon {
2410 color: $ui-highlight-color;
2411 text-shadow: 0 0 10px rgba($ui-highlight-color, 0.4);
2421 .column-header__buttons {
2430 .column-header__button {
2431 background: lighten($ui-base-color, 4%);
2433 color: $ui-primary-color;
2439 color: lighten($ui-primary-color, 7%);
2443 color: $primary-text-color;
2444 background: lighten($ui-base-color, 8%);
2447 color: $primary-text-color;
2448 background: lighten($ui-base-color, 8%);
2452 // glitch - added focus ring for keyboard navigation
2454 text-shadow: 0 0 4px darken($ui-highlight-color, 5%);
2458 .scrollable > div > :first-child .notification__dismiss-overlay > .wrappy {
2459 border-top: 1px solid $ui-base-color;
2462 .notification__dismiss-overlay {
2468 padding-left: 15px; // space for the box shadow to be visible
2471 align-items: center;
2472 justify-content: flex-end;
2478 width: $dismiss-overlay-width;
2479 align-self: stretch;
2481 flex-direction: column;
2482 align-items: center;
2483 justify-content: center;
2484 background: lighten($ui-base-color, 8%);
2485 border-left: 1px solid lighten($ui-base-color, 20%);
2486 box-shadow: 0 0 5px black;
2487 border-bottom: 1px solid $ui-base-color;
2491 border: 2px solid $ui-primary-color;
2496 color: $ui-primary-color;
2497 text-shadow: 0 0 5px black;
2499 justify-content: center;
2500 align-items: center;
2504 outline: 0 !important;
2507 box-shadow: 0 0 1px 1px $ui-highlight-color;
2512 .column-header__notif-cleaning-buttons {
2514 align-items: stretch;
2515 justify-content: space-around;
2518 @extend .column-header__button;
2519 background: transparent;
2522 white-space: pre-wrap;
2530 // The notifs drawer with no padding to have more space for the buttons
2531 .column-header__collapsible-inner.nopad-drawer {
2535 .column-header__collapsible {
2539 color: $ui-primary-color;
2540 transition: max-height 150ms ease-in-out, opacity 300ms linear;
2552 // notif cleaning drawer
2562 .column-header__collapsible-inner {
2563 background: lighten($ui-base-color, 8%);
2567 .column-header__setting-btn {
2569 color: lighten($ui-primary-color, 4%);
2570 text-decoration: underline;
2574 .column-header__setting-arrows {
2577 .column-header__setting-btn {
2587 display: inline-block;
2589 font-family: inherit;
2593 background: transparent;
2597 .column-header__icon {
2598 display: inline-block;
2602 .loading-indicator {
2603 color: lighten($ui-base-color, 26%);
2606 text-transform: uppercase;
2611 transform: translate(-50%, -50%);
2617 transform: translateX(-50%);
2618 margin: 82px 0 0 50%;
2619 white-space: nowrap;
2620 animation: loader-label 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
2624 .loading-indicator__figure {
2628 transform: translate(-50%, -50%);
2631 box-sizing: border-box;
2632 border: 0 solid lighten($ui-base-color, 26%);
2634 animation: loader-figure 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
2637 @keyframes loader-figure {
2641 background-color: lighten($ui-base-color, 26%);
2645 background-color: lighten($ui-base-color, 26%);
2651 background-color: transparent;
2661 background-color: transparent;
2665 @keyframes loader-label {
2666 0% { opacity: 0.25; }
2668 100% { opacity: 0.25; }
2671 .video-error-cover {
2672 align-items: center;
2673 background: $base-overlay-background;
2674 color: $primary-text-color;
2677 flex-direction: column;
2679 justify-content: center;
2687 background: $base-overlay-background;
2688 color: $primary-text-color;
2692 justify-content: center;
2697 flex-direction: column;
2699 .status__content > & {
2700 margin-top: 15px; // Add margin when used bare for NSFW video player
2705 width: calc(100% + 80px);
2709 .media-spoiler__warning {
2714 .media-spoiler__trigger {
2724 text-shadow: 0 1px 1px $base-shadow-color, 1px 0 1px $base-shadow-color;
2728 &.spoiler-button--visible {
2733 .modal-container--preloader {
2734 background: lighten($ui-base-color, 8%);
2738 background: lighten($ui-base-color, 4%);
2739 border-top: 1px solid lighten($ui-base-color, 8%);
2740 border-bottom: 1px solid lighten($ui-base-color, 8%);
2742 flex-direction: row;
2746 .account--panel__button,
2747 .detailed-status__button {
2752 .column-settings__outer {
2753 background: lighten($ui-base-color, 8%);
2757 .column-settings__section {
2758 color: $ui-primary-color;
2762 margin-bottom: 10px;
2765 .column-settings__row {
2767 margin-bottom: 15px;
2771 .modal-container__nav {
2772 align-items: center;
2773 background: rgba($base-overlay-background, 0.5);
2774 box-sizing: border-box;
2776 color: $primary-text-color;
2786 .modal-container__nav--left {
2790 .modal-container__nav--right {
2794 .account--follows-info {
2795 color: $primary-text-color;
2800 display: inline-block;
2801 vertical-align: top;
2802 background-color: rgba($base-overlay-background, 0.4);
2803 text-transform: uppercase;
2810 .account--action-button {
2821 .setting-toggle__label,
2822 .setting-meta__label {
2823 color: $ui-primary-color;
2824 display: inline-block;
2825 margin-bottom: 14px;
2827 vertical-align: middle;
2830 .setting-meta__label {
2831 color: $ui-primary-color;
2835 .empty-column-indicator,
2837 color: lighten($ui-base-color, 20%);
2838 background: $ui-base-color;
2846 align-items: center;
2847 justify-content: center;
2848 @supports(display: grid) { // hack to fix Chrome <57
2853 color: $ui-highlight-color;
2854 text-decoration: none;
2857 text-decoration: underline;
2863 flex-direction: column;
2877 animation: pulse 1s ease-in-out infinite;
2878 animation-direction: alternate;
2884 background: $simple-background-color;
2885 box-sizing: border-box;
2889 box-shadow: 0 0 8px rgba($base-shadow-color, 0.2);
2897 .emoji-dialog-header {
2907 display: inline-block;
2908 box-sizing: border-box;
2911 border-bottom: 2px solid transparent;
2922 filter: grayscale(100%);
2928 filter: grayscale(0);
2933 border-bottom-color: $ui-highlight-color;
2937 filter: grayscale(0);
2944 box-sizing: border-box;
2949 display: inline-block;
2955 .emoji-category-header {
2956 box-sizing: border-box;
2958 padding: 10px 8px 10px 16px;
2962 display: table-cell;
2963 vertical-align: middle;
2967 .emoji-category-title {
2969 text-transform: uppercase;
2971 color: darken($ui-secondary-color, 18%);
2975 .emoji-category-heading-decoration {
2983 vertical-align: middle;
2984 white-space: nowrap;
2988 display: inline-block;
2997 display: inline-block;
2998 border-radius: 10px;
3010 border-radius: 10px;
3011 border: 2px solid $base-border-color;
3018 .emoji-search-wrapper {
3020 border-bottom: 1px solid lighten($ui-secondary-color, 4%);
3027 font-family: inherit;
3030 background: rgba($ui-secondary-color, 0.3);
3031 color: darken($ui-secondary-color, 18%);
3032 border: 1px solid $ui-secondary-color;
3036 .emoji-categories-wrapper {
3044 .emoji-search-wrapper + .emoji-categories-wrapper {
3051 transition: transform 60ms ease-in-out;
3055 background: lighten($ui-secondary-color, 3%);
3059 transform: translateZ(0) scale(1.2);
3076 align-items: center;
3077 background: rgba($base-overlay-background, 0.8);
3080 justify-content: center;
3090 pointer-events: none;
3094 .upload-area__drop {
3098 box-sizing: border-box;
3103 .upload-area__background {
3111 background: $ui-base-color;
3112 box-shadow: 0 0 5px rgba($base-shadow-color, 0.2);
3115 .upload-area__content {
3118 align-items: center;
3119 justify-content: center;
3120 color: $ui-secondary-color;
3123 border: 2px dashed $ui-base-lighter-color;
3129 color: $ui-base-lighter-color;
3140 text-transform: uppercase;
3146 .upload-progess__message {
3150 .upload-progress__backdrop {
3154 background: $ui-base-lighter-color;
3159 .upload-progress__tracker {
3164 background: $ui-highlight-color;
3179 outline: 0 !important;
3183 filter: grayscale(100%);
3202 .dropdown--active .emoji-button img {
3211 .privacy-dropdown__dropdown {
3217 background: $simple-background-color;
3218 border-radius: 0 4px 4px;
3223 .privacy-dropdown__option {
3224 color: $ui-base-color;
3231 background: $ui-highlight-color;
3232 color: $primary-text-color;
3234 .privacy-dropdown__option__content {
3235 color: $primary-text-color;
3238 color: $primary-text-color;
3244 background: lighten($ui-highlight-color, 4%);
3248 .privacy-dropdown__option__icon {
3250 align-items: center;
3251 justify-content: center;
3255 .privacy-dropdown__option__content {
3257 color: darken($ui-primary-color, 24%);
3262 color: $ui-base-color;
3266 .privacy-dropdown.active {
3267 .privacy-dropdown__value {
3268 background: $simple-background-color;
3269 border-radius: 4px 4px 0 0;
3270 box-shadow: 0 -4px 4px rgba($base-shadow-color, 0.1);
3273 .privacy-dropdown__dropdown {
3275 box-shadow: 2px 4px 6px rgba($base-shadow-color, 0.1);
3279 .advanced-options-dropdown {
3283 .advanced-options-dropdown__dropdown {
3289 background: $simple-background-color;
3290 border-radius: 0 4px 4px;
3295 .advanced-options-dropdown__option {
3296 color: $ui-base-color;
3303 background: $ui-highlight-color;
3304 color: $primary-text-color;
3306 .advanced-options-dropdown__option__content {
3307 color: $primary-text-color;
3310 color: $primary-text-color;
3316 background: lighten($ui-highlight-color, 4%);
3320 .advanced-options-dropdown__option__toggle {
3322 align-items: center;
3323 justify-content: center;
3327 .advanced-options-dropdown__option__content {
3329 color: darken($ui-primary-color, 24%);
3334 color: $ui-base-color;
3338 .advanced-options-dropdown.open {
3339 .advanced-options-dropdown__value {
3340 background: $simple-background-color;
3341 border-radius: 4px 4px 0 0;
3342 box-shadow: 0 -4px 4px rgba($base-shadow-color, 0.1);
3345 .advanced-options-dropdown__dropdown {
3347 box-shadow: 2px 4px 6px rgba($base-shadow-color, 0.1);
3354 margin-bottom: 10px;
3358 padding-right: 30px;
3359 color: $ui-secondary-color;
3361 box-sizing: border-box;
3366 padding-right: 30px;
3367 font-family: inherit;
3368 background: $ui-base-color;
3369 color: $ui-primary-color;
3373 &::-moz-focus-inner {
3377 &::-moz-focus-inner,
3380 outline: 0 !important;
3384 background: lighten($ui-base-color, 4%);
3387 @include limited-single-column('screen and (max-width: 600px)') {
3398 display: inline-block;
3400 transition: all 100ms linear;
3404 color: $ui-secondary-color;
3406 pointer-events: none;
3409 pointer-events: auto;
3415 transform: translateZ(0) rotate(90deg);
3418 pointer-events: none;
3419 transform: translateZ(0) rotate(0deg);
3425 transform: translateZ(0) rotate(0deg);
3429 transform: translateZ(0) rotate(90deg);
3433 color: $primary-text-color;
3438 .search-results__header {
3439 color: $ui-base-lighter-color;
3440 background: lighten($ui-base-color, 2%);
3441 border-bottom: 1px solid darken($ui-base-color, 4%);
3447 .search-results__section {
3448 background: $ui-base-color;
3451 .search-results__hashtag {
3454 color: $ui-secondary-color;
3455 text-decoration: none;
3460 color: lighten($ui-secondary-color, 4%);
3461 text-decoration: underline;
3465 .modal-root__overlay {
3473 background: rgba($base-overlay-background, 0.7);
3474 transform: translateZ(0);
3477 .modal-root__container {
3484 flex-direction: column;
3485 align-items: center;
3486 justify-content: center;
3487 align-content: space-around;
3490 pointer-events: none;
3494 .modal-root__modal {
3495 pointer-events: auto;
3505 .extended-video-player,
3516 .extended-video-player,
3526 background: url('../images/void.png') repeat;
3527 object-fit: contain;
3530 .react-swipeable-view-container {
3535 .media-modal__content {
3536 background: $base-overlay-background;
3539 .media-modal__close {
3549 background: $ui-secondary-color;
3550 color: $ui-base-color;
3554 flex-direction: column;
3557 .onboarding-modal__pager {
3563 .react-swipeable-view-container > div {
3566 box-sizing: border-box;
3569 flex-direction: column;
3570 align-items: center;
3571 justify-content: center;
3577 .error-modal__body {
3590 box-sizing: border-box;
3593 flex-direction: column;
3594 align-items: center;
3595 justify-content: center;
3602 .error-modal__body {
3604 flex-direction: column;
3605 justify-content: center;
3606 align-items: center;
3610 @media screen and (max-width: 550px) {
3617 .onboarding-modal__pager {
3626 .onboarding-modal__paginator,
3627 .error-modal__footer {
3629 background: darken($ui-secondary-color, 8%);
3637 .onboarding-modal__nav,
3639 color: darken($ui-secondary-color, 34%);
3640 background-color: transparent;
3645 line-height: inherit;
3651 color: darken($ui-secondary-color, 38%);
3654 &.onboarding-modal__done,
3655 &.onboarding-modal__next {
3656 color: $ui-highlight-color;
3661 .error-modal__footer {
3662 justify-content: center;
3665 .onboarding-modal__dots {
3668 align-items: center;
3669 justify-content: center;
3672 .onboarding-modal__dot {
3675 border-radius: 14px;
3676 background: darken($ui-secondary-color, 16%);
3681 background: darken($ui-secondary-color, 18%);
3686 background: darken($ui-secondary-color, 24%);
3690 .onboarding-modal__page__wrapper {
3691 pointer-events: none;
3693 &.onboarding-modal__page__wrapper--active {
3694 pointer-events: auto;
3698 .onboarding-modal__page {
3705 color: $ui-base-color;
3706 margin-bottom: 20px;
3710 color: $ui-highlight-color;
3715 color: lighten($ui-highlight-color, 4%);
3721 color: lighten($ui-base-color, 8%);
3723 margin-bottom: 10px;
3731 background: $ui-base-color;
3732 color: $ui-secondary-color;
3740 .onboarding-modal__page-one {
3742 align-items: center;
3745 .onboarding-modal__page-one__elephant-friend {
3746 background: url('../images/elephant-friend-1.png') no-repeat center center / contain;
3752 @media screen and (max-width: 400px) {
3753 .onboarding-modal__page-one {
3754 flex-direction: column;
3755 align-items: normal;
3758 .onboarding-modal__page-one__elephant-friend {
3766 .onboarding-modal__page-two,
3767 .onboarding-modal__page-three,
3768 .onboarding-modal__page-four,
3769 .onboarding-modal__page-five {
3775 background: darken($ui-base-color, 8%);
3776 color: $ui-secondary-color;
3777 margin-bottom: 20px;
3782 box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.3);
3784 .onboarding-modal__image {
3786 margin-bottom: 10px;
3790 pointer-events: none;
3796 .onboarding-modal__page-four__columns {
3799 margin-bottom: 20px;
3824 color: $primary-text-color;
3828 @media screen and (max-width: 320px) and (max-height: 600px) {
3829 .onboarding-modal__page p {
3834 .onboarding-modal__page-two .figure,
3835 .onboarding-modal__page-three .figure,
3836 .onboarding-modal__page-four .figure,
3837 .onboarding-modal__page-five .figure {
3839 margin-bottom: 10px;
3842 .onboarding-modal__page-four__columns .row {
3843 margin-bottom: 10px;
3846 .onboarding-modal__page-four__columns .column-header {
3852 .onboarding-modal__image {
3859 margin-bottom: 20px;
3863 display: inline-block;
3870 .confirmation-modal,
3874 background: lighten($ui-secondary-color, 8%);
3875 color: $ui-base-color;
3881 flex-direction: column;
3883 .status__display-name {
3891 border-bottom-color: $ui-secondary-color;
3893 padding-bottom: 10px;
3897 .boost-modal__container {
3907 .boost-modal__action-bar,
3908 .confirmation-modal__action-bar,
3909 .mute-modal__action-bar,
3910 .report-modal__action-bar {
3912 justify-content: space-between;
3913 background: $ui-secondary-color;
3920 color: lighten($ui-base-color, 33%);
3921 padding-right: 10px;
3929 .boost-modal__status-header {
3933 .boost-modal__status-time {
3938 .confirmation-modal {
3941 @media screen and (min-width: 480px) {
3946 .report-modal__statuses,
3947 .report-modal__comment {
3951 .report-modal__statuses {
3958 .report-modal__comment {
3983 color: $ui-base-color;
3986 align-items: center;
3987 text-decoration: none;
3992 background: $ui-highlight-color;
3993 color: $primary-text-color;
3997 button:first-child {
4005 .confirmation-modal__action-bar,
4006 .mute-modal__action-bar {
4007 .confirmation-modal__cancel-button,
4008 .mute-modal__cancel-button {
4009 background-color: transparent;
4010 color: darken($ui-secondary-color, 34%);
4017 color: darken($ui-secondary-color, 38%);
4022 .confirmation-modal__container,
4023 .mute-modal__container,
4024 .report-modal__target {
4035 background-color: $ui-highlight-color;
4042 .media-gallery__gifv__label {
4045 color: $primary-text-color;
4046 background: rgba($base-overlay-background, 0.5);
4054 pointer-events: none;
4056 transition: opacity 0.1s ease;
4059 .media-gallery__gifv {
4061 .media-gallery__gifv__label {
4067 .media-gallery__gifv__label {
4076 border: 1px solid lighten($ui-base-color, 8%);
4082 .attachment-list__icon {
4084 color: $ui-base-lighter-color;
4087 border-right: 1px solid lighten($ui-base-color, 8%);
4089 flex-direction: column;
4090 align-items: center;
4091 justify-content: center;
4099 .attachment-list__list {
4104 flex-direction: column;
4105 justify-content: center;
4113 text-decoration: none;
4114 color: $ui-base-lighter-color;
4118 text-decoration: underline;
4125 box-sizing: border-box;
4129 background: $base-shadow-color;
4134 width: calc(100% + 80px);
4137 .detailed-status & {
4139 width: calc(100% + 22px);
4143 .media-gallery__item {
4145 box-sizing: border-box;
4151 .media-gallery__item-thumbnail {
4153 text-decoration: none;
4160 object-fit: contain;
4169 .media-gallery__gifv {
4175 justify-content: center;
4178 .media-gallery__item-gifv-thumbnail {
4183 object-fit: contain;
4191 .media-gallery__item-thumbnail-label {
4192 clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
4193 clip: rect(1px, 1px, 1px, 1px);
4197 /* End Media Gallery */
4199 /* Status Video Player */
4200 .status__video-player {
4202 align-items: center;
4203 background: $base-shadow-color;
4204 box-sizing: border-box;
4205 cursor: default; /* May not be needed */
4213 width: calc(100% + 80px);
4217 .status__video-player-video {
4228 .status__video-player-expand,
4229 .status__video-player-mute {
4230 color: $primary-text-color;
4234 text-shadow: 0 1px 1px $base-shadow-color, 1px 0 1px $base-shadow-color;
4237 .status__video-player-spoiler {
4239 color: $primary-text-color;
4242 text-shadow: 0 1px 1px $base-shadow-color, 1px 0 1px $base-shadow-color;
4246 &.status__video-player-spoiler--visible {
4251 .status__video-player-expand {
4256 .status__video-player-mute {
4261 .media-spoiler-video {
4262 background-size: cover;
4263 background-repeat: no-repeat;
4264 background-position: center;
4272 width: calc(100% + 80px);
4279 .media-spoiler-video-play-icon {
4280 border-radius: 100px;
4281 color: rgba($primary-text-color, 0.8);
4287 transform: translate(-50%, -50%);
4289 /* End Video Player */
4291 .account-gallery__container {
4296 .account-gallery__item {
4306 background-color: $base-overlay-background;
4307 background-size: cover;
4308 background-position: center;
4313 .account-section-headline {
4314 color: $ui-base-lighter-color;
4315 background: lighten($ui-base-color, 2%);
4316 border-bottom: 1px solid lighten($ui-base-color, 4%);
4332 border-style: solid;
4333 border-width: 0 10px 10px;
4334 border-color: transparent transparent lighten($ui-base-color, 4%);
4339 border-color: transparent transparent $ui-base-color;
4343 ::-webkit-scrollbar-thumb {
4353 animation: flicker 4s infinite;
4359 color: $ui-secondary-color;
4363 color: $ui-highlight-color;
4364 text-decoration: underline;
4367 text-decoration: none;
4373 @keyframes flicker {
4375 30% { opacity: 0.75; }
4376 100% { opacity: 1; }
4379 @media screen and (max-width: 1024px) and (max-height: 400px) {
4385 will-change: margin-top;
4386 transition: margin-top $duration $delay;
4390 will-change: padding-bottom;
4391 transition: padding-bottom $duration $delay;
4396 will-change: margin-top, margin-left, width;
4397 transition: margin-top $duration $delay, margin-left $duration ($duration + $delay);
4400 & > .navigation-bar__profile-edit {
4401 will-change: margin-top;
4402 transition: margin-top $duration $delay;
4406 will-change: opacity;
4407 transition: opacity $duration $delay;
4425 .navigation-bar__profile {
4429 .navigation-bar__profile-edit {
4435 pointer-events: auto;
4441 // fixes for the navbar-under mode
4442 .is-composing.navbar-under {
4445 margin-bottom: -20px;
4453 // more fixes for the navbar-under mode
4454 @mixin fix-margins-for-navbar-under {
4456 margin-top: 0 !important;
4457 margin-bottom: -6px !important;
4461 .single-column.navbar-under {
4462 @include fix-margins-for-navbar-under;
4465 .auto-columns.navbar-under {
4466 @media screen and (max-width: 360px) {
4467 @include fix-margins-for-navbar-under;
4471 .auto-columns.navbar-under .react-swipeable-view-container .columns-area,
4472 .single-column.navbar-under .react-swipeable-view-container .columns-area {
4473 @media screen and (max-width: 360px) {
4474 height: 100% !important;
4489 .embed-modal__container {
4493 margin-bottom: 15px;
4496 .embed-modal__html {
4497 color: $ui-secondary-color;
4499 box-sizing: border-box;
4504 font-family: 'mastodon-font-monospace', monospace;
4505 background: $ui-base-color;
4506 color: $ui-primary-color;
4509 margin-bottom: 15px;
4511 &::-moz-focus-inner {
4515 &::-moz-focus-inner,
4518 outline: 0 !important;
4522 background: lighten($ui-base-color, 4%);
4525 @media screen and (max-width: 600px) {
4530 .embed-modal__iframe {