@keyframes spring-flip-in { 0% { transform: rotate(0deg); } 30% { transform: rotate(-242.4deg); } 60% { transform: rotate(-158.35deg); } 90% { transform: rotate(-187.5deg); } 100% { transform: rotate(-180deg); } } @keyframes spring-flip-out { 0% { transform: rotate(-180deg); } 30% { transform: rotate(62.4deg); } 60% { transform: rotate(-21.635deg); } 90% { transform: rotate(7.5deg); } 100% { transform: rotate(0deg); } } .status__content--with-action { cursor: pointer; } .status__content { position: relative; margin: 10px 0; font-size: 15px; line-height: 20px; word-wrap: break-word; font-weight: 400; overflow: visible; padding-top: 5px; clear: both; &:focus { outline: 0; } .emojione { width: 20px; height: 20px; margin: -3px 0 0; } p, pre { margin-bottom: 20px; white-space: pre-wrap; unicode-bidi: plaintext; &:last-child { margin-bottom: 0; } } a { color: $secondary-text-color; text-decoration: none; unicode-bidi: isolate; &:hover { text-decoration: underline; } &.mention { &:hover { text-decoration: none; span { text-decoration: underline; } } } } .status__content__spoiler { display: none; &.status__content__spoiler--visible { display: block; } } a.unhandled-link { color: $highlight-text-color; .link-origin-tag { color: $gold-star; font-size: 0.8em; } } .status__content__spoiler-link { background: lighten($ui-base-color, 30%); &:hover, &:focus { background: lighten($ui-base-color, 33%); text-decoration: none; } } } .translate-button { margin-top: 16px; font-size: 15px; line-height: 20px; display: flex; justify-content: space-between; color: $dark-text-color; } .status__content__spoiler-link { display: inline-flex; border-radius: 2px; background: lighten($ui-base-color, 30%); border: 0; color: $inverted-text-color; font-weight: 700; font-size: 11px; padding: 0 5px; text-transform: uppercase; line-height: inherit; cursor: pointer; vertical-align: top; align-items: center; &:hover { background: lighten($ui-base-color, 33%); text-decoration: none; } .status__content__spoiler-icon { display: inline-block; margin-inline-start: 5px; border-inline-start: 1px solid currentColor; padding: 0; padding-inline-start: 4px; width: 16px; height: 16px; } } .notif-cleaning { .status, .notification { padding-inline-end: ($dismiss-overlay-width + 0.5rem); } } .status__wrapper--filtered { color: $dark-text-color; border: 0; font-size: inherit; text-align: center; line-height: inherit; margin: 0; padding: 15px; box-sizing: border-box; width: 100%; clear: both; border-bottom: 1px solid lighten($ui-base-color, 8%); } .status__prepend-icon-wrapper { inset-inline-start: -26px; position: absolute; } .notification-follow, .notification-follow-request { position: relative; // same like Status border-bottom: 1px solid lighten($ui-base-color, 8%); .account { border-bottom: 0 none; } } .focusable { &:focus { outline: 0; background: lighten($ui-base-color, 4%); &.status.status-direct { background: mix(lighten($ui-base-color, 4%), $ui-highlight-color, 95%); &.muted { background: transparent; } } .detailed-status, .detailed-status__action-bar { background: lighten($ui-base-color, 8%); } } } .status { padding: 10px 14px; position: relative; height: auto; border-bottom: 1px solid lighten($ui-base-color, 8%); cursor: auto; @supports (-ms-overflow-style: -ms-autohiding-scrollbar) { // Add margin to avoid Edge auto-hiding scrollbar appearing over content. // On Edge 16 this is 16px and Edge <=15 it's 12px, so aim for 16px. padding-inline-end: 28px; // 12px + 16px } @keyframes fade { 0% { opacity: 0; } 100% { opacity: 1; } } opacity: 1; animation: fade 150ms linear; .video-player, .audio-player { margin-top: 8px; } &.status-direct { background: mix($ui-base-color, $ui-highlight-color, 95%); border-bottom-color: lighten($ui-base-color, 12%); } &.light { .status__relative-time { color: $lighter-text-color; } .status__display-name { color: $inverted-text-color; } .display-name { color: $light-text-color; strong { color: $inverted-text-color; } } .status__content { color: $inverted-text-color; a { color: $highlight-text-color; } a.status__content__spoiler-link { color: $primary-text-color; background: $ui-primary-color; &:hover { background: lighten($ui-primary-color, 8%); } } } } &.collapsed { background-position: center; background-size: cover; user-select: none; &.has-background::before { display: block; position: absolute; inset-inline-start: 0; inset-inline-end: 0; top: 0; bottom: 0; background-image: linear-gradient( to bottom, rgba($base-shadow-color, 0.75), rgba($base-shadow-color, 0.65) 24px, rgba($base-shadow-color, 0.8) ); pointer-events: none; content: ''; } .display-name:hover .display-name__html { text-decoration: none; } .status__content { height: 20px; overflow: hidden; text-overflow: ellipsis; padding-top: 0; &::after { content: ''; position: absolute; top: 0; bottom: 0; inset-inline-start: 0; inset-inline-end: 0; background: linear-gradient( rgba($ui-base-color, 0), rgba($ui-base-color, 1) ); pointer-events: none; } a:hover { text-decoration: none; } } &:focus > .status__content::after { background: linear-gradient( rgba(lighten($ui-base-color, 4%), 0), rgba(lighten($ui-base-color, 4%), 1) ); } &.status-direct > .status__content::after { background: linear-gradient( rgba(mix($ui-base-color, $ui-highlight-color, 95%), 0), rgba(mix($ui-base-color, $ui-highlight-color, 95%), 1) ); } .notification__message { margin-bottom: 0; } .status__info .notification__message > span { white-space: nowrap; } } .notification__message { margin: -10px 0 10px; } } .notification-favourite { .status.status-direct { background: transparent; .icon-button.disabled { color: lighten($action-button-color, 13%); } } } .status__relative-time { display: inline-block; color: $dark-text-color; font-size: 14px; text-align: end; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .status__display-name { color: $dark-text-color; overflow: hidden; } .status__info__account .status__display-name { display: block; max-width: 100%; } .status__info { display: flex; justify-content: space-between; font-size: 15px; > span { text-overflow: ellipsis; overflow: hidden; } .notification__message > span { word-wrap: break-word; } } .status__info__icons { display: flex; align-items: center; height: 1em; color: $action-button-color; .status__media-icon, .status__visibility-icon, .status__reply-icon, .text-icon { padding-inline-start: 2px; padding-inline-end: 2px; } & > .icon { width: 16px; height: 16px; } .status__collapse-button.active > .icon { transform: rotate(-180deg); } } .no-reduce-motion .status__collapse-button { &.activate { & > .icon { animation: spring-flip-in 1s linear; } } &.deactivate { & > .icon { animation: spring-flip-out 1s linear; } } } .status__info__account { display: flex; align-items: center; justify-content: flex-start; } .status-check-box__status { display: block; box-sizing: border-box; width: 100%; padding: 0 10px; .detailed-status__display-name { color: lighten($inverted-text-color, 16%); span { display: inline; } &:hover strong { text-decoration: none; } } .media-gallery, .audio-player, .video-player { margin-top: 15px; max-width: 250px; } .status__content { padding: 0; white-space: normal; } .media-gallery__item-thumbnail { cursor: default; } } .status__prepend { margin-top: -2px; margin-bottom: 8px; margin-inline-start: 58px; color: $dark-text-color; font-size: 14px; position: relative; .status__display-name strong { color: $dark-text-color; } > span { display: block; overflow: hidden; text-overflow: ellipsis; } } .status__action-bar { align-items: center; display: flex; margin-top: 8px; } .status__action-bar-button { margin-inline-end: 18px; &.icon-button--with-counter { margin-inline-end: 14px; } } .status__action-bar-dropdown { height: 23.15px; width: 23.15px; } .status__action-bar-spacer { flex-grow: 1; } .detailed-status__action-bar-dropdown { flex: 1 1 auto; display: flex; align-items: center; justify-content: center; position: relative; } .detailed-status { background: lighten($ui-base-color, 4%); padding: 14px 10px; border-top: 1px solid lighten($ui-base-color, 8%); &--flex { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; .status__content, .detailed-status__meta { flex: 100%; } } .status__content { font-size: 19px; line-height: 24px; .emojione { width: 24px; height: 24px; margin: -1px 0 0; } } .video-player, .audio-player { margin-top: 8px; } } .detailed-status__meta { margin-top: 15px; color: $dark-text-color; font-size: 14px; line-height: 18px; .icon { width: 15px; height: 15px; vertical-align: middle; } } .detailed-status__action-bar { background: lighten($ui-base-color, 4%); border-top: 1px solid lighten($ui-base-color, 8%); border-bottom: 1px solid lighten($ui-base-color, 8%); display: flex; flex-direction: row; padding: 10px 0; } .detailed-status__link { display: inline-flex; align-items: center; color: inherit; text-decoration: none; gap: 6px; position: relative; top: 0.145em; .icon { top: 0; } } .detailed-status__favorites, .detailed-status__reblogs { font-weight: 500; font-size: 12px; line-height: 18px; } .status__display-name, .status__relative-time, .detailed-status__display-name, .detailed-status__datetime, .detailed-status__application, .account__display-name { text-decoration: none; } .status__display-name, .account__display-name { .display-name strong { color: $primary-text-color; } } .muted { .emojione { opacity: 0.5; } } a.status__display-name, .reply-indicator__display-name, .detailed-status__display-name, .account__display-name { &:hover .display-name strong { text-decoration: underline; } } .account__display-name .display-name strong { display: block; overflow: hidden; text-overflow: ellipsis; } .detailed-status__application, .detailed-status__datetime { color: inherit; } .detailed-status__display-name { color: $secondary-text-color; display: block; line-height: 24px; margin-bottom: 15px; overflow: hidden; strong, span { display: block; text-overflow: ellipsis; overflow: hidden; } strong { font-size: 16px; color: $primary-text-color; } } .detailed-status__display-avatar { float: left; margin-inline-end: 10px; } .status__avatar { flex: none; margin-inline-end: 10px; } .muted { .status__content, .status__content p, .status__content a, .status__content__text { color: $dark-text-color; } .status__display-name strong { color: $dark-text-color; } .status__avatar { opacity: 0.5; } a.status__content__spoiler-link { background: $ui-base-lighter-color; color: $inverted-text-color; &:hover, &:focus { background: lighten($ui-base-color, 29%); text-decoration: none; } } } .status__relative-time, .detailed-status__datetime { &:hover { text-decoration: underline; } } .status-card { position: relative; display: flex; font-size: 14px; border: 1px solid lighten($ui-base-color, 8%); border-radius: 4px; color: $dark-text-color; margin-top: 14px; text-decoration: none; overflow: hidden; &__actions { bottom: 0; inset-inline-start: 0; position: absolute; inset-inline-end: 0; top: 0; display: flex; justify-content: center; align-items: center; & > div { background: rgba($base-shadow-color, 0.6); border-radius: 8px; padding: 12px 9px; flex: 0 0 auto; display: flex; justify-content: center; align-items: center; } button, a { display: inline; color: $secondary-text-color; background: transparent; border: 0; padding: 0 8px; text-decoration: none; font-size: 18px; line-height: 18px; &:hover, &:active, &:focus { color: $primary-text-color; } } a { font-size: 19px; position: relative; bottom: -1px; } a .fa, a:hover .fa { color: inherit; } } } a.status-card { cursor: pointer; &:hover { background: lighten($ui-base-color, 8%); } } .status-card-photo { cursor: zoom-in; display: block; text-decoration: none; width: 100%; height: auto; margin: 0; } .status-card-video { // Firefox has a bug where frameborder=0 iframes add some extra blank space // see https://bugzilla.mozilla.org/show_bug.cgi?id=155174 overflow: hidden; iframe { width: 100%; height: 100%; } } .status-card__title { display: block; font-weight: 500; margin-bottom: 5px; color: $darker-text-color; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-decoration: none; } .status-card__content { flex: 1 1 auto; overflow: hidden; padding: 14px; padding-inline-start: 8px; } .status-card__description { color: $darker-text-color; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .status-card__host { display: block; margin-top: 5px; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .status-card__image { flex: 0 0 100px; background: lighten($ui-base-color, 8%); position: relative; & > .icon { width: 18px; height: 18px; position: absolute; transform-origin: 50% 50%; top: 50%; inset-inline-start: 50%; transform: translate(-50%, -50%); } } .status-card.horizontal { display: block; .status-card__image { width: 100%; } .status-card__image-image, .status-card__image-preview { border-radius: 4px 4px 0 0; } .status-card__title { white-space: inherit; } } .status-card.compact { border-color: lighten($ui-base-color, 4%); &.interactive { border: 0; } .status-card__content { padding: 8px; padding-top: 10px; } .status-card__title { white-space: nowrap; } .status-card__image { flex: 0 0 60px; } } a.status-card.compact:hover { background-color: lighten($ui-base-color, 4%); } .status-card__image-image { border-radius: 4px 0 0 4px; display: block; margin: 0; width: 100%; height: 100%; object-fit: cover; background-size: cover; background-position: center center; } .status-card__image-preview { border-radius: 4px 0 0 4px; display: block; margin: 0; width: 100%; height: 100%; object-fit: fill; position: absolute; top: 0; inset-inline-start: 0; z-index: 0; background: $base-overlay-background; &--hidden { display: none; } } .attachment-list { display: flex; font-size: 14px; border: 1px solid lighten($ui-base-color, 8%); border-radius: 4px; margin-top: 14px; overflow: hidden; &__icon { flex: 0 0 auto; color: $dark-text-color; padding: 8px 18px; cursor: default; border-inline-end: 1px solid lighten($ui-base-color, 8%); display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 26px; } &__list { list-style: none; padding: 4px 0; padding-inline-start: 8px; display: flex; flex-direction: column; justify-content: center; li { display: block; padding: 4px 0; } a { text-decoration: none; color: $dark-text-color; font-weight: 500; &:hover { text-decoration: underline; } } } &.compact { border: 0; margin-top: 4px; .attachment-list__list { padding: 0; display: block; } .icon { color: $dark-text-color; vertical-align: middle; } } } .status__wrapper--filtered__button { display: inline; color: lighten($ui-highlight-color, 8%); border: 0; background: transparent; padding: 0; font-size: inherit; line-height: inherit; &:hover, &:active { text-decoration: underline; } } .notification, .status { position: relative; &.unread { &::before { content: ''; position: absolute; top: 0; inset-inline-start: 0; width: 100%; height: 100%; border-inline-start: 4px solid $highlight-text-color; pointer-events: none; } } &--in-thread { border-bottom: 0; .status__content, .status__action-bar { margin-inline-start: 46px + 10px; width: calc(100% - (46px + 10px)); } } &--first-in-thread { border-top: 1px solid lighten($ui-base-color, 8%); } &__line { height: 10px - 4px; border-inline-start: 2px solid lighten($ui-base-color, 8%); width: 0; position: absolute; top: 0; inset-inline-start: 14px + ((46px - 2px) * 0.5); &--full { top: 0; height: 100%; &::before { content: ''; display: block; position: absolute; top: 10px - 4px; height: 46px + 4px + 4px; width: 2px; background: $ui-base-color; inset-inline-start: -2px; } } &--first { top: 10px + 46px + 4px; height: calc(100% - (10px + 46px + 4px)); &::before { display: none; } } } } .picture-in-picture { position: fixed; bottom: 20px; inset-inline-end: 20px; width: 300px; &.left { inset-inline-end: unset; inset-inline-start: 20px; } &__footer { border-radius: 0 0 4px 4px; background: lighten($ui-base-color, 4%); padding: 10px; padding-top: 12px; display: flex; justify-content: space-between; } &__header { border-radius: 4px 4px 0 0; background: lighten($ui-base-color, 4%); padding: 10px; display: flex; justify-content: space-between; &__account { display: flex; text-decoration: none; overflow: hidden; } .account__avatar { margin-inline-end: 10px; } .display-name { color: $primary-text-color; text-decoration: none; strong, span { display: block; text-overflow: ellipsis; overflow: hidden; } span { color: $darker-text-color; } } } .video-player, .audio-player { border-radius: 0; } } .picture-in-picture-placeholder { box-sizing: border-box; border: 2px dashed lighten($ui-base-color, 8%); background: $base-shadow-color; display: flex; flex-direction: column; align-items: center; justify-content: center; margin-top: 10px; font-size: 16px; font-weight: 500; cursor: pointer; color: $darker-text-color; aspect-ratio: 16 / 9; .icon { width: 24px; height: 24px; margin-bottom: 10px; } &:hover, &:focus, &:active { border-color: lighten($ui-base-color, 12%); } } .hashtag-bar { margin-top: 16px; display: flex; flex-wrap: wrap; font-size: 14px; line-height: 18px; gap: 4px; color: $darker-text-color; a { display: inline-flex; color: inherit; text-decoration: none; &:hover span { text-decoration: underline; } } .link-button { color: inherit; font-size: inherit; line-height: inherit; padding: 0; } }