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 {
557 color: $primary-text-color;
558 word-wrap: break-word;
561 white-space: pre-wrap;
577 color: $ui-secondary-color;
578 text-decoration: none;
581 text-decoration: underline;
584 color: lighten($ui-base-color, 40%);
590 text-decoration: none;
593 text-decoration: underline;
599 color: lighten($ui-base-color, 30%);
603 .status__content__spoiler {
606 &.status__content__spoiler--visible {
612 .status__content__spoiler-link {
613 display: inline-block;
615 background: lighten($ui-base-color, 30%);
617 color: lighten($ui-base-color, 8%);
621 text-transform: uppercase;
622 line-height: inherit;
624 vertical-align: bottom;
627 background: lighten($ui-base-color, 33%);
628 text-decoration: none;
631 .status__content__spoiler-icon {
632 display: inline-block;
634 border-left: 1px solid currentColor;
637 vertical-align: -2px;
641 .status__prepend-icon-wrapper {
643 margin: 0 10px 0 -58px;
649 .status, .notification-follow {
650 padding-right: ($dismiss-overlay-width + 0.5rem);
654 .notification-follow {
658 border-bottom: 1px solid lighten($ui-base-color, 8%);
661 border-bottom: 0 none;
670 border-bottom: 1px solid lighten($ui-base-color, 8%);
679 animation: fade 150ms linear;
682 background: lighten($ui-base-color, 8%);
684 .icon-button.disabled {
685 color: lighten($ui-base-color, 16%);
690 .status__relative-time {
691 color: $ui-primary-color;
694 .status__display-name {
695 color: $ui-base-color;
700 color: $ui-base-color;
704 color: $ui-primary-color;
709 color: $ui-base-color;
712 color: $ui-highlight-color;
715 a.status__content__spoiler-link {
716 color: $primary-text-color;
717 background: $ui-primary-color;
720 background: lighten($ui-primary-color, 8%);
727 background-position: center;
728 background-size: cover;
731 &.has-background::before {
738 background-image: linear-gradient(to bottom, rgba($base-shadow-color, .75), rgba($base-shadow-color, .65) 24px, rgba($base-shadow-color, .8));
742 .display-name:hover .display-name__html {
743 text-decoration: none;
749 text-overflow: ellipsis;
752 text-decoration: none;
757 .notification__message {
758 margin: -10px -10px 10px;
762 .notification-favourite {
763 .status.status-direct {
764 background: transparent;
766 .icon-button.disabled {
767 color: lighten($ui-base-color, 13%);
772 .status__relative-time {
773 display: inline-block;
777 color: $ui-base-lighter-color;
782 text-overflow: ellipsis;
785 .status__display-name {
787 color: $ui-base-lighter-color;
797 .status__info__icons {
800 color: lighten($ui-base-color, 26%);
802 .status__visibility-icon {
808 border-bottom: 1px solid $ui-secondary-color;
815 text-overflow: ellipsis;
820 .status-check-box-toggle {
824 justify-content: center;
829 margin: -10px -10px 10px;
830 color: $ui-base-lighter-color;
831 padding: 8px 10px 0 68px;
835 .status__display-name strong {
836 color: $ui-base-lighter-color;
840 .status__action-bar {
846 .status__action-bar-button {
852 .status__action-bar-dropdown {
857 // Dropdown style override for centering on the icon
861 .dropdown__content.dropdown__right {
862 left: calc(50% + 3px);
864 transform: translate(-50%, 0);
875 .detailed-status__action-bar-dropdown {
879 justify-content: center;
889 .dropdown__content.dropdown__left {
904 background: lighten($ui-base-color, 4%);
918 .detailed-status__meta {
920 color: $ui-base-lighter-color;
925 .detailed-status__action-bar {
926 background: lighten($ui-base-color, 4%);
927 border-top: 1px solid lighten($ui-base-color, 8%);
928 border-bottom: 1px solid lighten($ui-base-color, 8%);
934 .detailed-status__link {
936 text-decoration: none;
939 .detailed-status__favorites,
940 .detailed-status__reblogs {
941 display: inline-block;
947 .reply-indicator__content {
948 color: $ui-base-color;
952 color: lighten($ui-base-color, 20%);
958 border-bottom: 1px solid lighten($ui-base-color, 8%);
960 .account__display-name {
963 color: $ui-primary-color;
965 text-decoration: none;
974 .account__avatar-wrapper {
976 margin: 6px 16px 6px 6px;
980 @include avatar-radius();
985 display: inline-block;
986 vertical-align: middle;
991 .account__avatar-overlay {
993 @include avatar-size(48px);
996 @include avatar-radius();
997 @include avatar-size(36px);
1001 @include avatar-radius();
1002 @include avatar-size(24px);
1011 .account__relationship {
1014 white-space: nowrap;
1017 .account__header__wrapper {
1019 background: lighten($ui-base-color, 4%);
1024 background-size: cover;
1025 background-position: center;
1029 background: rgba(lighten($ui-base-color, 4%), 0.9);
1033 .account__header__content {
1034 color: $ui-secondary-color;
1037 .account__header__display-name {
1038 color: $primary-text-color;
1039 display: inline-block;
1045 .account__header__username {
1046 color: $ui-highlight-color;
1050 margin-bottom: 10px;
1054 .account__disclaimer {
1056 border-top: 1px solid lighten($ui-base-color, 8%);
1057 color: $ui-base-lighter-color;
1066 text-decoration: underline;
1071 text-decoration: none;
1076 .account__header__content {
1077 color: $ui-primary-color;
1082 word-wrap: break-word;
1085 margin-bottom: 20px;
1094 text-decoration: underline;
1097 text-decoration: none;
1102 .account__header__display-name {
1109 .account__metadata {
1114 border-collapse: collapse;
1117 text-decoration: none;
1120 text-decoration: underline;
1125 border-top: 1px solid lighten($ui-base-color, 8%);
1130 vertical-align: middle;
1135 white-space: pre-wrap;
1136 text-overflow: ellipsis;
1141 color: $ui-primary-color;
1142 background: lighten($ui-base-color, 13%);
1143 font-variant: small-caps;
1147 color: $primary-text-color;
1153 color: $primary-text-color;
1154 background: $ui-base-color;
1157 color: $ui-highlight-color;
1162 .account__action-bar {
1163 border-top: 1px solid lighten($ui-base-color, 8%);
1164 border-bottom: 1px solid lighten($ui-base-color, 8%);
1171 .account__action-bar-dropdown {
1176 .dropdown__content.dropdown__right {
1190 .account__action-bar-links {
1196 .account__action-bar__tab {
1197 text-decoration: none;
1200 border-left: 1px solid lighten($ui-base-color, 8%);
1205 text-transform: uppercase;
1207 color: $ui-primary-color;
1214 color: $primary-text-color;
1218 color: $ui-base-lighter-color;
1222 .account__header__avatar {
1223 @include avatar-radius();
1224 @include avatar-size(90px);
1226 margin: 0 auto 10px;
1230 .account-authorize {
1233 .detailed-status__display-name {
1235 margin-bottom: 15px;
1240 .account-authorize__avatar {
1245 .status__display-name,
1246 .status__relative-time,
1247 .detailed-status__display-name,
1248 .detailed-status__datetime,
1249 .detailed-status__application,
1250 .account__display-name {
1251 text-decoration: none;
1254 .status__display-name,
1255 .account__display-name {
1257 color: $primary-text-color;
1261 .account__display-name strong {
1265 .detailed-status__application,
1266 .detailed-status__datetime {
1270 .detailed-status__display-name {
1271 color: $ui-secondary-color;
1274 margin-bottom: 15px;
1280 text-overflow: ellipsis;
1286 color: $primary-text-color;
1290 .detailed-status__display-avatar {
1304 .status__content a {
1305 color: $ui-base-lighter-color;
1308 .status__display-name strong {
1309 color: $ui-base-lighter-color;
1312 .status__avatar, .emojione {
1316 a.status__content__spoiler-link {
1317 background: $ui-base-lighter-color;
1318 color: lighten($ui-base-color, 4%);
1321 background: lighten($ui-base-color, 29%);
1322 text-decoration: none;
1327 .notification__message {
1328 padding: 8px 10px 0 68px;
1330 color: $ui-primary-color;
1335 color: $ui-highlight-color;
1339 .notification__favourite-icon-wrapper {
1341 margin: 0 10px 0 -58px;
1354 .notification__display-name {
1357 text-decoration: none;
1360 color: $primary-text-color;
1361 text-decoration: underline;
1378 text-overflow: ellipsis;
1380 white-space: nowrap;
1388 text-overflow: ellipsis;
1390 white-space: nowrap;
1395 text-decoration: underline;
1400 .status__relative-time,
1401 .detailed-status__datetime {
1403 text-decoration: underline;
1410 &.image-loader--loading {
1411 .image-loader__preview-canvas {
1416 .image-loader__img {
1423 background-image: none;
1426 &.image-loader--amorphous {
1429 .image-loader__preview-canvas {
1433 .image-loader__img {
1446 color: $ui-primary-color;
1449 color: $primary-text-color;
1453 text-decoration: none;
1457 pointer-events: none;
1462 .navigation-bar__profile {
1467 .navigation-bar__profile-account {
1472 .navigation-bar__profile-edit {
1474 text-decoration: none;
1478 display: inline-block;
1481 .dropdown__content {
1487 border-bottom: 1px solid darken($ui-secondary-color, 8%);
1488 margin: 5px 7px 6px;
1492 .dropdown--active .dropdown__content {
1502 background: $ui-secondary-color;
1505 box-shadow: 0 0 15px rgba($base-shadow-color, 0.4);
1525 box-sizing: border-box;
1526 text-decoration: none;
1527 background: $ui-secondary-color;
1528 color: $ui-base-color;
1530 text-overflow: ellipsis;
1531 white-space: nowrap;
1538 background: $ui-highlight-color;
1539 color: $ui-secondary-color;
1545 vertical-align: middle;
1551 color: $ui-base-lighter-color;
1556 margin-bottom: 40px;
1562 margin-bottom: 20px;
1569 flex-direction: row;
1570 justify-content: flex-start;
1576 @include limited-single-column('screen and (max-width: 360px)', $parent: null) {
1581 .react-swipeable-view-container .columns-area {
1582 height: calc(100% - 20px) !important;
1586 .react-swipeable-view-container {
1595 .react-swipeable-view-container > * {
1597 align-items: center;
1598 justify-content: center;
1605 box-sizing: border-box;
1607 flex-direction: column;
1617 background: $ui-base-color;
1624 flex-direction: column;
1627 background: darken($ui-base-color, 7%);
1632 box-sizing: border-box;
1634 flex-direction: column;
1647 padding: 15px 5px 13px;
1648 color: $ui-primary-color;
1649 text-decoration: none;
1652 border-bottom: 2px solid transparent;
1659 @supports(display: grid) { // hack to fix Chrome <57
1664 @include limited-single-column('screen and (max-width: 360px)', $parent: null) {
1674 :root { // Overrides .wide stylings for mobile view
1675 @include single-column('screen and (max-width: 1024px)', $parent: null) {
1686 flex-direction: column;
1690 .autosuggest-textarea__textarea {
1696 @include multi-columns('screen and (min-width: 1025px)', $parent: null) {
1712 padding-right: 10px;
1716 .columns-area > div {
1726 box-sizing: border-box;
1733 background: lighten($ui-base-color, 13%);
1734 box-sizing: border-box;
1744 background: $ui-base-color;
1751 background: lighten($ui-base-color, 13%);
1759 background: lighten($ui-base-color, 8%);
1760 margin-bottom: 10px;
1762 flex-direction: row;
1765 transition: background 100ms ease-in;
1768 background: lighten($ui-base-color, 3%);
1769 transition: background 200ms ease-out;
1776 background: lighten($ui-base-color, 8%);
1787 color: $primary-text-color;
1788 text-decoration: none;
1792 border-bottom: 2px solid lighten($ui-base-color, 8%);
1793 transition: all 200ms linear;
1801 border-bottom: 2px solid $ui-highlight-color;
1802 color: $ui-highlight-color;
1808 @include multi-columns('screen and (min-width: 1025px)') {
1809 background: lighten($ui-base-color, 14%);
1810 transition: all 100ms linear;
1820 @include limited-single-column('screen and (max-width: 600px)', $parent: null) {
1828 @include multi-columns('screen and (min-width: 1025px)', $parent: null) {
1838 -webkit-overflow-scrolling: touch;
1839 @supports(display: grid) { // hack to fix Chrome <57
1843 &.optionally-scrollable {
1848 .column-back-button {
1849 background: lighten($ui-base-color, 4%);
1850 color: $ui-highlight-color;
1861 text-decoration: underline;
1865 .column-header__back-button {
1866 background: lighten($ui-base-color, 4%);
1868 font-family: inherit;
1869 color: $ui-highlight-color;
1877 text-decoration: underline;
1881 padding: 0 15px 0 0;
1885 .column-back-button__icon {
1886 display: inline-block;
1890 .column-back-button--slim {
1894 .column-back-button--slim-button {
1905 display: inline-block;
1908 background-color: transparent;
1912 -webkit-tap-highlight-color: rgba($base-overlay-background, 0);
1913 -webkit-tap-highlight-color: transparent;
1916 .react-toggle-screenreader-only {
1918 clip: rect(0 0 0 0);
1927 .react-toggle--disabled {
1928 cursor: not-allowed;
1930 transition: opacity 0.25s;
1933 .react-toggle-track {
1937 border-radius: 30px;
1938 background-color: $ui-base-color;
1939 transition: all 0.2s ease;
1942 .react-toggle:hover:not(.react-toggle--disabled) .react-toggle-track {
1943 background-color: darken($ui-base-color, 10%);
1946 .react-toggle--checked .react-toggle-track {
1947 background-color: $ui-highlight-color;
1950 .react-toggle--checked:hover:not(.react-toggle--disabled) .react-toggle-track {
1951 background-color: lighten($ui-highlight-color, 10%);
1954 .react-toggle-track-check {
1961 margin-bottom: auto;
1965 transition: opacity 0.25s ease;
1968 .react-toggle--checked .react-toggle-track-check {
1970 transition: opacity 0.25s ease;
1973 .react-toggle-track-x {
1980 margin-bottom: auto;
1984 transition: opacity 0.25s ease;
1987 .react-toggle--checked .react-toggle-track-x {
1991 .react-toggle-thumb {
1992 transition: all 0.5s cubic-bezier(0.23, 1, 0.32, 1) 0ms;
1998 border: 1px solid $ui-base-color;
2000 background-color: darken($simple-background-color, 2%);
2001 box-sizing: border-box;
2002 transition: all 0.25s ease;
2005 .react-toggle--checked .react-toggle-thumb {
2007 border-color: $ui-highlight-color;
2011 background: lighten($ui-base-color, 8%);
2012 color: $primary-text-color;
2016 text-decoration: none;
2021 background: lighten($ui-base-color, 11%);
2025 .column-link__icon {
2026 display: inline-block;
2030 .column-subheading {
2031 background: $ui-base-color;
2032 color: $ui-base-lighter-color;
2036 text-transform: uppercase;
2040 .autosuggest-textarea,
2045 .autosuggest-textarea__textarea,
2046 .spoiler-input__input {
2048 box-sizing: border-box;
2051 color: $ui-base-color;
2052 background: $simple-background-color;
2054 font-family: inherit;
2064 @include limited-single-column('screen and (max-width: 600px)') {
2069 .spoiler-input__input {
2073 .autosuggest-textarea__textarea {
2075 border-radius: 4px 4px 0 0;
2077 padding-right: 10px + 22px;
2080 @include limited-single-column('screen and (max-width: 600px)') {
2081 height: 100px !important; // prevent auto-resize textarea
2086 .autosuggest-textarea__suggestions {
2094 box-shadow: 0 0 15px rgba($base-shadow-color, 0.4);
2095 background: $ui-secondary-color;
2096 color: $ui-base-color;
2099 &.autosuggest-textarea__suggestions--visible {
2104 .autosuggest-textarea__suggestions__item {
2109 background: darken($ui-secondary-color, 10%);
2113 background: $ui-highlight-color;
2114 color: $base-border-color;
2118 .autosuggest-account {
2122 .autosuggest-account-icon {
2127 .autosuggest-status {
2129 white-space: nowrap;
2130 text-overflow: ellipsis;
2137 .character-counter__wrapper {
2139 margin: 0 16px 0 8px;
2143 .character-counter {
2148 .character-counter--over {
2149 color: $warning-red;
2152 .getting-started__wrapper {
2157 .getting-started__footer {
2159 flex-direction: column;
2163 box-sizing: border-box;
2164 padding-bottom: 235px;
2165 background: url('../images/mastodon-getting-started.png') no-repeat 0 100%;
2169 color: $ui-secondary-color;
2173 color: $ui-base-lighter-color;
2178 color: $ui-primary-color;
2179 background: transparent;
2181 border-bottom: 2px solid $ui-primary-color;
2182 box-sizing: border-box;
2184 font-family: inherit;
2185 margin-bottom: 10px;
2191 color: $primary-text-color;
2192 border-bottom-color: $ui-highlight-color;
2195 @include limited-single-column('screen and (max-width: 600px)') {
2200 color: $ui-base-color;
2201 border-bottom: 2px solid lighten($ui-base-color, 27%);
2205 color: $ui-base-color;
2206 border-bottom-color: $ui-highlight-color;
2213 button.icon-button i.fa-retweet {
2214 background-position: 0 0;
2216 transition: background-position 0.9s steps(10);
2217 transition-duration: 0s;
2218 vertical-align: middle;
2222 display: none !important;
2226 button.icon-button.active i.fa-retweet {
2227 transition-duration: 0.9s;
2228 background-position: 0 100%;
2235 border: 1px solid lighten($ui-base-color, 8%);
2237 color: $ui-base-lighter-color;
2239 text-decoration: none;
2243 background: lighten($ui-base-color, 8%);
2249 .status-card-photo {
2259 .status-card-photo {
2261 text-decoration: none;
2271 .status-card-video {
2275 padding-top: 56.25%;
2291 .status-card__title {
2295 color: $ui-primary-color;
2297 text-overflow: ellipsis;
2298 white-space: nowrap;
2301 .status-card__content {
2304 padding: 14px 14px 14px 8px;
2307 .status-card__description {
2308 color: $ui-primary-color;
2311 .status-card__host {
2317 .status-card__image {
2319 background: lighten($ui-base-color, 8%);
2322 .status-card.horizontal {
2325 .status-card__image {
2329 .status-card__image-image {
2330 border-radius: 4px 4px 0 0;
2334 .status-card__image-image {
2335 border-radius: 4px 0 0 4px;
2344 color: $ui-base-lighter-color;
2345 background-color: transparent;
2349 line-height: inherit;
2356 background: lighten($ui-base-color, 2%);
2360 .missing-indicator {
2364 color: lighten($ui-base-color, 16%);
2365 background: $ui-base-color;
2369 align-items: center;
2370 justify-content: center;
2373 background: url('../images/mastodon-not-found.png') no-repeat center -50px;
2379 .column-header__wrapper {
2393 pointer-events: none;
2396 background: radial-gradient(ellipse, rgba($ui-highlight-color, 0.23) 0%, rgba($ui-highlight-color, 0) 60%);
2404 background: lighten($ui-base-color, 4%);
2412 box-shadow: 0 1px 0 rgba($ui-highlight-color, 0.3);
2414 .column-header__icon {
2415 color: $ui-highlight-color;
2416 text-shadow: 0 0 10px rgba($ui-highlight-color, 0.4);
2426 .column-header__buttons {
2435 .column-header__button {
2436 background: lighten($ui-base-color, 4%);
2438 color: $ui-primary-color;
2444 color: lighten($ui-primary-color, 7%);
2448 color: $primary-text-color;
2449 background: lighten($ui-base-color, 8%);
2452 color: $primary-text-color;
2453 background: lighten($ui-base-color, 8%);
2457 // glitch - added focus ring for keyboard navigation
2459 text-shadow: 0 0 4px darken($ui-highlight-color, 5%);
2463 .scrollable > div > :first-child .notification__dismiss-overlay > .wrappy {
2464 border-top: 1px solid $ui-base-color;
2467 .notification__dismiss-overlay {
2473 padding-left: 15px; // space for the box shadow to be visible
2476 align-items: center;
2477 justify-content: flex-end;
2483 width: $dismiss-overlay-width;
2484 align-self: stretch;
2486 flex-direction: column;
2487 align-items: center;
2488 justify-content: center;
2489 background: lighten($ui-base-color, 8%);
2490 border-left: 1px solid lighten($ui-base-color, 20%);
2491 box-shadow: 0 0 5px black;
2492 border-bottom: 1px solid $ui-base-color;
2496 border: 2px solid $ui-primary-color;
2501 color: $ui-primary-color;
2502 text-shadow: 0 0 5px black;
2504 justify-content: center;
2505 align-items: center;
2509 outline: 0 !important;
2512 box-shadow: 0 0 1px 1px $ui-highlight-color;
2517 .column-header__notif-cleaning-buttons {
2519 align-items: stretch;
2520 justify-content: space-around;
2523 @extend .column-header__button;
2524 background: transparent;
2527 white-space: pre-wrap;
2535 // The notifs drawer with no padding to have more space for the buttons
2536 .column-header__collapsible-inner.nopad-drawer {
2540 .column-header__collapsible {
2544 color: $ui-primary-color;
2545 transition: max-height 150ms ease-in-out, opacity 300ms linear;
2557 // notif cleaning drawer
2567 .column-header__collapsible-inner {
2568 background: lighten($ui-base-color, 8%);
2572 .column-header__setting-btn {
2574 color: lighten($ui-primary-color, 4%);
2575 text-decoration: underline;
2579 .column-header__setting-arrows {
2582 .column-header__setting-btn {
2592 display: inline-block;
2594 font-family: inherit;
2598 background: transparent;
2602 .column-header__icon {
2603 display: inline-block;
2607 .loading-indicator {
2608 color: lighten($ui-base-color, 26%);
2611 text-transform: uppercase;
2616 transform: translate(-50%, -50%);
2622 transform: translateX(-50%);
2623 margin: 82px 0 0 50%;
2624 white-space: nowrap;
2625 animation: loader-label 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
2629 .loading-indicator__figure {
2633 transform: translate(-50%, -50%);
2636 box-sizing: border-box;
2637 border: 0 solid lighten($ui-base-color, 26%);
2639 animation: loader-figure 1.15s infinite cubic-bezier(0.215, 0.610, 0.355, 1.000);
2642 @keyframes loader-figure {
2646 background-color: lighten($ui-base-color, 26%);
2650 background-color: lighten($ui-base-color, 26%);
2656 background-color: transparent;
2666 background-color: transparent;
2670 @keyframes loader-label {
2671 0% { opacity: 0.25; }
2673 100% { opacity: 0.25; }
2676 .video-error-cover {
2677 align-items: center;
2678 background: $base-overlay-background;
2679 color: $primary-text-color;
2682 flex-direction: column;
2684 justify-content: center;
2692 background: $base-overlay-background;
2693 color: $primary-text-color;
2697 justify-content: center;
2702 flex-direction: column;
2704 .status__content > & {
2705 margin-top: 15px; // Add margin when used bare for NSFW video player
2710 width: calc(100% + 80px);
2714 .media-spoiler__warning {
2719 .media-spoiler__trigger {
2729 text-shadow: 0 1px 1px $base-shadow-color, 1px 0 1px $base-shadow-color;
2733 &.spoiler-button--visible {
2738 .modal-container--preloader {
2739 background: lighten($ui-base-color, 8%);
2743 background: lighten($ui-base-color, 4%);
2744 border-top: 1px solid lighten($ui-base-color, 8%);
2745 border-bottom: 1px solid lighten($ui-base-color, 8%);
2747 flex-direction: row;
2751 .account--panel__button,
2752 .detailed-status__button {
2757 .column-settings__outer {
2758 background: lighten($ui-base-color, 8%);
2762 .column-settings__section {
2763 color: $ui-primary-color;
2767 margin-bottom: 10px;
2770 .column-settings__row {
2772 margin-bottom: 15px;
2776 .modal-container__nav {
2777 align-items: center;
2778 background: rgba($base-overlay-background, 0.5);
2779 box-sizing: border-box;
2781 color: $primary-text-color;
2791 .modal-container__nav--left {
2795 .modal-container__nav--right {
2799 .account--follows-info {
2800 color: $primary-text-color;
2805 display: inline-block;
2806 vertical-align: top;
2807 background-color: rgba($base-overlay-background, 0.4);
2808 text-transform: uppercase;
2815 .account--action-button {
2826 .setting-toggle__label,
2827 .setting-meta__label {
2828 color: $ui-primary-color;
2829 display: inline-block;
2830 margin-bottom: 14px;
2832 vertical-align: middle;
2835 .setting-meta__label {
2836 color: $ui-primary-color;
2840 .empty-column-indicator,
2842 color: lighten($ui-base-color, 20%);
2843 background: $ui-base-color;
2851 align-items: center;
2852 justify-content: center;
2853 @supports(display: grid) { // hack to fix Chrome <57
2858 color: $ui-highlight-color;
2859 text-decoration: none;
2862 text-decoration: underline;
2868 flex-direction: column;
2882 animation: pulse 1s ease-in-out infinite;
2883 animation-direction: alternate;
2889 background: $simple-background-color;
2890 box-sizing: border-box;
2894 box-shadow: 0 0 8px rgba($base-shadow-color, 0.2);
2902 .emoji-dialog-header {
2912 display: inline-block;
2913 box-sizing: border-box;
2916 border-bottom: 2px solid transparent;
2927 filter: grayscale(100%);
2933 filter: grayscale(0);
2938 border-bottom-color: $ui-highlight-color;
2942 filter: grayscale(0);
2949 box-sizing: border-box;
2954 display: inline-block;
2960 .emoji-category-header {
2961 box-sizing: border-box;
2963 padding: 10px 8px 10px 16px;
2967 display: table-cell;
2968 vertical-align: middle;
2972 .emoji-category-title {
2974 text-transform: uppercase;
2976 color: darken($ui-secondary-color, 18%);
2980 .emoji-category-heading-decoration {
2988 vertical-align: middle;
2989 white-space: nowrap;
2993 display: inline-block;
3002 display: inline-block;
3003 border-radius: 10px;
3015 border-radius: 10px;
3016 border: 2px solid $base-border-color;
3023 .emoji-search-wrapper {
3025 border-bottom: 1px solid lighten($ui-secondary-color, 4%);
3032 font-family: inherit;
3035 background: rgba($ui-secondary-color, 0.3);
3036 color: darken($ui-secondary-color, 18%);
3037 border: 1px solid $ui-secondary-color;
3041 .emoji-categories-wrapper {
3049 .emoji-search-wrapper + .emoji-categories-wrapper {
3056 transition: transform 60ms ease-in-out;
3060 background: lighten($ui-secondary-color, 3%);
3064 transform: translateZ(0) scale(1.2);
3081 align-items: center;
3082 background: rgba($base-overlay-background, 0.8);
3085 justify-content: center;
3095 pointer-events: none;
3099 .upload-area__drop {
3103 box-sizing: border-box;
3108 .upload-area__background {
3116 background: $ui-base-color;
3117 box-shadow: 0 0 5px rgba($base-shadow-color, 0.2);
3120 .upload-area__content {
3123 align-items: center;
3124 justify-content: center;
3125 color: $ui-secondary-color;
3128 border: 2px dashed $ui-base-lighter-color;
3134 color: $ui-base-lighter-color;
3145 text-transform: uppercase;
3151 .upload-progess__message {
3155 .upload-progress__backdrop {
3159 background: $ui-base-lighter-color;
3164 .upload-progress__tracker {
3169 background: $ui-highlight-color;
3184 outline: 0 !important;
3188 filter: grayscale(100%);
3207 .dropdown--active .emoji-button img {
3216 .privacy-dropdown__dropdown {
3222 background: $simple-background-color;
3223 border-radius: 0 4px 4px;
3228 .privacy-dropdown__option {
3229 color: $ui-base-color;
3236 background: $ui-highlight-color;
3237 color: $primary-text-color;
3239 .privacy-dropdown__option__content {
3240 color: $primary-text-color;
3243 color: $primary-text-color;
3249 background: lighten($ui-highlight-color, 4%);
3253 .privacy-dropdown__option__icon {
3255 align-items: center;
3256 justify-content: center;
3260 .privacy-dropdown__option__content {
3262 color: darken($ui-primary-color, 24%);
3267 color: $ui-base-color;
3271 .privacy-dropdown.active {
3272 .privacy-dropdown__value {
3273 background: $simple-background-color;
3274 border-radius: 4px 4px 0 0;
3275 box-shadow: 0 -4px 4px rgba($base-shadow-color, 0.1);
3278 .privacy-dropdown__dropdown {
3280 box-shadow: 2px 4px 6px rgba($base-shadow-color, 0.1);
3284 .advanced-options-dropdown {
3288 .advanced-options-dropdown__dropdown {
3294 background: $simple-background-color;
3295 border-radius: 0 4px 4px;
3300 .advanced-options-dropdown__option {
3301 color: $ui-base-color;
3308 background: $ui-highlight-color;
3309 color: $primary-text-color;
3311 .advanced-options-dropdown__option__content {
3312 color: $primary-text-color;
3315 color: $primary-text-color;
3321 background: lighten($ui-highlight-color, 4%);
3325 .advanced-options-dropdown__option__toggle {
3327 align-items: center;
3328 justify-content: center;
3332 .advanced-options-dropdown__option__content {
3334 color: darken($ui-primary-color, 24%);
3339 color: $ui-base-color;
3343 .advanced-options-dropdown.open {
3344 .advanced-options-dropdown__value {
3345 background: $simple-background-color;
3346 border-radius: 4px 4px 0 0;
3347 box-shadow: 0 -4px 4px rgba($base-shadow-color, 0.1);
3350 .advanced-options-dropdown__dropdown {
3352 box-shadow: 2px 4px 6px rgba($base-shadow-color, 0.1);
3359 margin-bottom: 10px;
3363 padding-right: 30px;
3364 color: $ui-secondary-color;
3366 box-sizing: border-box;
3371 padding-right: 30px;
3372 font-family: inherit;
3373 background: $ui-base-color;
3374 color: $ui-primary-color;
3378 &::-moz-focus-inner {
3382 &::-moz-focus-inner,
3385 outline: 0 !important;
3389 background: lighten($ui-base-color, 4%);
3392 @include limited-single-column('screen and (max-width: 600px)') {
3403 display: inline-block;
3405 transition: all 100ms linear;
3409 color: $ui-secondary-color;
3411 pointer-events: none;
3414 pointer-events: auto;
3420 transform: translateZ(0) rotate(90deg);
3423 pointer-events: none;
3424 transform: translateZ(0) rotate(0deg);
3430 transform: translateZ(0) rotate(0deg);
3434 transform: translateZ(0) rotate(90deg);
3438 color: $primary-text-color;
3443 .search-results__header {
3444 color: $ui-base-lighter-color;
3445 background: lighten($ui-base-color, 2%);
3446 border-bottom: 1px solid darken($ui-base-color, 4%);
3452 .search-results__section {
3453 background: $ui-base-color;
3456 .search-results__hashtag {
3459 color: $ui-secondary-color;
3460 text-decoration: none;
3465 color: lighten($ui-secondary-color, 4%);
3466 text-decoration: underline;
3470 .modal-root__overlay {
3478 background: rgba($base-overlay-background, 0.7);
3479 transform: translateZ(0);
3482 .modal-root__container {
3489 flex-direction: column;
3490 align-items: center;
3491 justify-content: center;
3492 align-content: space-around;
3495 pointer-events: none;
3499 .modal-root__modal {
3500 pointer-events: auto;
3510 .extended-video-player,
3521 .extended-video-player,
3531 background: url('../images/void.png') repeat;
3532 object-fit: contain;
3535 .react-swipeable-view-container {
3540 .media-modal__content {
3541 background: $base-overlay-background;
3544 .media-modal__close {
3554 background: $ui-secondary-color;
3555 color: $ui-base-color;
3559 flex-direction: column;
3562 .onboarding-modal__pager {
3568 .react-swipeable-view-container > div {
3571 box-sizing: border-box;
3574 flex-direction: column;
3575 align-items: center;
3576 justify-content: center;
3582 .error-modal__body {
3595 box-sizing: border-box;
3598 flex-direction: column;
3599 align-items: center;
3600 justify-content: center;
3607 .error-modal__body {
3609 flex-direction: column;
3610 justify-content: center;
3611 align-items: center;
3615 @media screen and (max-width: 550px) {
3622 .onboarding-modal__pager {
3631 .onboarding-modal__paginator,
3632 .error-modal__footer {
3634 background: darken($ui-secondary-color, 8%);
3642 .onboarding-modal__nav,
3644 color: darken($ui-secondary-color, 34%);
3645 background-color: transparent;
3650 line-height: inherit;
3656 color: darken($ui-secondary-color, 38%);
3659 &.onboarding-modal__done,
3660 &.onboarding-modal__next {
3661 color: $ui-highlight-color;
3666 .error-modal__footer {
3667 justify-content: center;
3670 .onboarding-modal__dots {
3673 align-items: center;
3674 justify-content: center;
3677 .onboarding-modal__dot {
3680 border-radius: 14px;
3681 background: darken($ui-secondary-color, 16%);
3686 background: darken($ui-secondary-color, 18%);
3691 background: darken($ui-secondary-color, 24%);
3695 .onboarding-modal__page__wrapper {
3696 pointer-events: none;
3698 &.onboarding-modal__page__wrapper--active {
3699 pointer-events: auto;
3703 .onboarding-modal__page {
3710 color: $ui-base-color;
3711 margin-bottom: 20px;
3715 color: $ui-highlight-color;
3720 color: lighten($ui-highlight-color, 4%);
3726 color: lighten($ui-base-color, 8%);
3728 margin-bottom: 10px;
3736 background: $ui-base-color;
3737 color: $ui-secondary-color;
3745 .onboarding-modal__page-one {
3747 align-items: center;
3750 .onboarding-modal__page-one__elephant-friend {
3751 background: url('../images/elephant-friend-1.png') no-repeat center center / contain;
3757 @media screen and (max-width: 400px) {
3758 .onboarding-modal__page-one {
3759 flex-direction: column;
3760 align-items: normal;
3763 .onboarding-modal__page-one__elephant-friend {
3771 .onboarding-modal__page-two,
3772 .onboarding-modal__page-three,
3773 .onboarding-modal__page-four,
3774 .onboarding-modal__page-five {
3780 background: darken($ui-base-color, 8%);
3781 color: $ui-secondary-color;
3782 margin-bottom: 20px;
3787 box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.3);
3789 .onboarding-modal__image {
3791 margin-bottom: 10px;
3795 pointer-events: none;
3801 .onboarding-modal__page-four__columns {
3804 margin-bottom: 20px;
3829 color: $primary-text-color;
3833 @media screen and (max-width: 320px) and (max-height: 600px) {
3834 .onboarding-modal__page p {
3839 .onboarding-modal__page-two .figure,
3840 .onboarding-modal__page-three .figure,
3841 .onboarding-modal__page-four .figure,
3842 .onboarding-modal__page-five .figure {
3844 margin-bottom: 10px;
3847 .onboarding-modal__page-four__columns .row {
3848 margin-bottom: 10px;
3851 .onboarding-modal__page-four__columns .column-header {
3857 .onboarding-modal__image {
3864 margin-bottom: 20px;
3868 display: inline-block;
3875 .confirmation-modal,
3879 background: lighten($ui-secondary-color, 8%);
3880 color: $ui-base-color;
3886 flex-direction: column;
3888 .status__display-name {
3896 border-bottom-color: $ui-secondary-color;
3898 padding-bottom: 10px;
3902 .boost-modal__container {
3912 .boost-modal__action-bar,
3913 .confirmation-modal__action-bar,
3914 .mute-modal__action-bar,
3915 .report-modal__action-bar {
3917 justify-content: space-between;
3918 background: $ui-secondary-color;
3925 color: lighten($ui-base-color, 33%);
3926 padding-right: 10px;
3934 .boost-modal__status-header {
3938 .boost-modal__status-time {
3943 .confirmation-modal {
3946 @media screen and (min-width: 480px) {
3951 .report-modal__statuses,
3952 .report-modal__comment {
3956 .report-modal__statuses {
3963 .report-modal__comment {
3988 color: $ui-base-color;
3991 align-items: center;
3992 text-decoration: none;
3997 background: $ui-highlight-color;
3998 color: $primary-text-color;
4002 button:first-child {
4010 .confirmation-modal__action-bar,
4011 .mute-modal__action-bar {
4012 .confirmation-modal__cancel-button,
4013 .mute-modal__cancel-button {
4014 background-color: transparent;
4015 color: darken($ui-secondary-color, 34%);
4022 color: darken($ui-secondary-color, 38%);
4027 .confirmation-modal__container,
4028 .mute-modal__container,
4029 .report-modal__target {
4040 background-color: $ui-highlight-color;
4047 .media-gallery__gifv__label {
4050 color: $primary-text-color;
4051 background: rgba($base-overlay-background, 0.5);
4059 pointer-events: none;
4061 transition: opacity 0.1s ease;
4064 .media-gallery__gifv {
4066 .media-gallery__gifv__label {
4072 .media-gallery__gifv__label {
4081 border: 1px solid lighten($ui-base-color, 8%);
4087 .attachment-list__icon {
4089 color: $ui-base-lighter-color;
4092 border-right: 1px solid lighten($ui-base-color, 8%);
4094 flex-direction: column;
4095 align-items: center;
4096 justify-content: center;
4104 .attachment-list__list {
4109 flex-direction: column;
4110 justify-content: center;
4118 text-decoration: none;
4119 color: $ui-base-lighter-color;
4123 text-decoration: underline;
4130 box-sizing: border-box;
4134 background: $base-shadow-color;
4139 width: calc(100% + 80px);
4142 .detailed-status & {
4144 width: calc(100% + 22px);
4148 .media-gallery__item {
4150 box-sizing: border-box;
4156 .media-gallery__item-thumbnail {
4158 text-decoration: none;
4165 object-fit: contain;
4174 .media-gallery__gifv {
4180 justify-content: center;
4183 .media-gallery__item-gifv-thumbnail {
4188 object-fit: contain;
4196 .media-gallery__item-thumbnail-label {
4197 clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
4198 clip: rect(1px, 1px, 1px, 1px);
4202 /* End Media Gallery */
4204 /* Status Video Player */
4205 .status__video-player {
4207 align-items: center;
4208 background: $base-shadow-color;
4209 box-sizing: border-box;
4210 cursor: default; /* May not be needed */
4218 width: calc(100% + 80px);
4222 .status__video-player-video {
4233 .status__video-player-expand,
4234 .status__video-player-mute {
4235 color: $primary-text-color;
4239 text-shadow: 0 1px 1px $base-shadow-color, 1px 0 1px $base-shadow-color;
4242 .status__video-player-spoiler {
4244 color: $primary-text-color;
4247 text-shadow: 0 1px 1px $base-shadow-color, 1px 0 1px $base-shadow-color;
4251 &.status__video-player-spoiler--visible {
4256 .status__video-player-expand {
4261 .status__video-player-mute {
4266 .media-spoiler-video {
4267 background-size: cover;
4268 background-repeat: no-repeat;
4269 background-position: center;
4277 width: calc(100% + 80px);
4284 .media-spoiler-video-play-icon {
4285 border-radius: 100px;
4286 color: rgba($primary-text-color, 0.8);
4292 transform: translate(-50%, -50%);
4294 /* End Video Player */
4296 .account-gallery__container {
4301 .account-gallery__item {
4311 background-color: $base-overlay-background;
4312 background-size: cover;
4313 background-position: center;
4318 .account-section-headline {
4319 color: $ui-base-lighter-color;
4320 background: lighten($ui-base-color, 2%);
4321 border-bottom: 1px solid lighten($ui-base-color, 4%);
4337 border-style: solid;
4338 border-width: 0 10px 10px;
4339 border-color: transparent transparent lighten($ui-base-color, 4%);
4344 border-color: transparent transparent $ui-base-color;
4348 ::-webkit-scrollbar-thumb {
4358 animation: flicker 4s infinite;
4364 color: $ui-secondary-color;
4368 color: $ui-highlight-color;
4369 text-decoration: underline;
4372 text-decoration: none;
4378 @keyframes flicker {
4380 30% { opacity: 0.75; }
4381 100% { opacity: 1; }
4384 @media screen and (max-width: 1024px) and (max-height: 400px) {
4390 will-change: margin-top;
4391 transition: margin-top $duration $delay;
4395 will-change: padding-bottom;
4396 transition: padding-bottom $duration $delay;
4401 will-change: margin-top, margin-left, width;
4402 transition: margin-top $duration $delay, margin-left $duration ($duration + $delay);
4405 & > .navigation-bar__profile-edit {
4406 will-change: margin-top;
4407 transition: margin-top $duration $delay;
4411 will-change: opacity;
4412 transition: opacity $duration $delay;
4430 .navigation-bar__profile {
4434 .navigation-bar__profile-edit {
4440 pointer-events: auto;
4446 // fixes for the navbar-under mode
4447 .is-composing.navbar-under {
4450 margin-bottom: -20px;
4458 // more fixes for the navbar-under mode
4459 @mixin fix-margins-for-navbar-under {
4461 margin-top: 0 !important;
4462 margin-bottom: -6px !important;
4466 .single-column.navbar-under {
4467 @include fix-margins-for-navbar-under;
4470 .auto-columns.navbar-under {
4471 @media screen and (max-width: 360px) {
4472 @include fix-margins-for-navbar-under;
4476 .auto-columns.navbar-under .react-swipeable-view-container .columns-area,
4477 .single-column.navbar-under .react-swipeable-view-container .columns-area {
4478 @media screen and (max-width: 360px) {
4479 height: 100% !important;
4494 .embed-modal__container {
4498 margin-bottom: 15px;
4501 .embed-modal__html {
4502 color: $ui-secondary-color;
4504 box-sizing: border-box;
4509 font-family: 'mastodon-font-monospace', monospace;
4510 background: $ui-base-color;
4511 color: $ui-primary-color;
4514 margin-bottom: 15px;
4516 &::-moz-focus-inner {
4520 &::-moz-focus-inner,
4523 outline: 0 !important;
4527 background: lighten($ui-base-color, 4%);
4530 @media screen and (max-width: 600px) {
4535 .embed-modal__iframe {