$quote-share-maxwidth: 150px; .button-count.has-pending { span { background-color: var(--danger); color: var(--secondary); border-radius: 10px; padding: 0.25em 0.5em; display: inline-block; font-size: 0.8em; } } .placeholder-avatar { display: inline-block; width: 45px; height: 45px; border-radius: 50%; position: relative; overflow: hidden; &:before { animation: placeHolderShimmer 4s linear infinite forwards; position: absolute; left: 0; content: ""; background: linear-gradient( to right, var(--primary-very-low) 10%, var(--primary-low) 28%, var(--primary-very-low) 43% ); height: 45px; width: 700px; } } .placeholder-text { margin-left: 11px; display: inline-block; width: calc(100% - 11px); height: 1.5em; margin-bottom: 0.6em; } .names { flex: 1 1 auto; overflow: hidden; span.first { display: flex; align-items: baseline; font-weight: bold; } span { font-size: $font-0; margin-right: 8px; display: inline-block; @include ellipsis; vertical-align: middle; a { color: var(--primary-high-or-secondary-low); } } .fa { font-size: $font-down-1; color: var(--primary-med-or-secondary-med); } .svg-icon-title { margin-left: 3px; margin-right: 0px; } .new_user a, .user-title, .user-title a { color: var(--primary-med-or-secondary-med); } } // global styles for the cooked HTML content in posts (and preview) .cooked, .d-editor-preview { word-wrap: break-word; line-height: $line-height-large; > *:first-child { margin-top: 0; } h1, h2, h3, h4, h5, h6 { margin: 30px 0 10px; line-height: $line-height-medium; a.anchor { &:before { content: svg-uri( '' ); line-height: 1.4; margin-left: -20px; padding-right: 4px; position: absolute; opacity: 0; transition: opacity 0.25s; } &:hover { // show when hovering where icon should be &:before { opacity: 1; } } } &:hover { // show when hovering header a.anchor { &:before { opacity: 1; } } } } h1 { font-size: $font-up-3; } h2 { font-size: $font-up-2; } h3 { font-size: $font-up-1; } h4 { font-size: $font-0; } h5 { font-size: $font-down-1; } h6 { font-size: $font-down-2; } a { word-wrap: break-word; } del, ins, mark { text-decoration: none; } ins { background-color: var(--success-low); } del { background-color: var(--danger-low); } mark { background-color: var(--highlight); } // Prevents users from breaking posts with tag nesting big { font-size: 1.5rem; } small { font-size: 0.75rem; } small small { font-size: 0.75em; } big big { font-size: 1em; } sub sub sub { bottom: 0; } sup sup sup { top: 0; } } .cooked, .d-editor-preview { video { max-width: 100%; } sup sup { top: 0; } } // add staff color .moderator { .regular > .cooked { background-color: var(--highlight-low-or-medium); padding: 10px; img:not(.thumbnail) { max-width: 100%; height: auto; } } .clearfix > .topic-meta-data > .names { span.user-title { color: var(--primary-high-or-secondary-low); a { background-color: var(--highlight-low-or-medium); padding-left: 4px; padding-right: 4px; } } } } .topic-meta-data { display: flex; align-items: flex-start; .names { margin-right: auto; } .post-infos { display: flex; flex: 0 0 auto; align-items: center; } } // we use aside to hold expandable quotes (versus, say, static blockquotes) aside.quote { margin-top: 1em; margin-bottom: 1em; .badge-wrapper { margin-left: 5px; } .title { @include post-aside; color: var(--primary-high-or-secondary-low); padding: 12px 12px 0px 12px; // blockquote is underneath this and has top margin .avatar { margin-right: 7px; } img { margin-top: -4px; } @include unselectable; } // blockquote is docked within aside for content blockquote { margin-top: 0; } } blockquote { // due to #image-sizing-hack large images and lightboxes extend past the // limits blockquotes. Since #image-sizing-hack is inline, we need to use // !important here otherwise it won't work. img { max-width: 100% !important; } } .quote-controls, .quote-controls .d-icon { color: var(--primary-low-mid-or-secondary-high); } .quote-controls { .quote-toggle { padding: 0; } } .cooked .highlight { background-color: var(--tertiary-low); padding: 2px; margin: -2px; } .post-ignored { font-style: italic; } .post-action { color: var(--primary-medium); .undo-action, .act-action { margin-left: 5px; } } .small-user-list .unknown { display: inline-block; background-color: var(--primary-low); width: 25px; height: 25px; border-radius: 50%; vertical-align: middle; margin-right: 0.25em; } .post-hidden { .topic-avatar, .cooked, .topic-meta-data, .post-actions { opacity: 0.5; } } .topic-post.staged { opacity: 0.4; } .quote-controls { float: right; display: flex; align-items: center; a { margin-left: 0.3em; } } .quote-button { display: none; position: absolute; z-index: z("dropdown"); opacity: 0.9; background-color: var(--secondary-high); &.visible { display: inline-flex; } .btn, .btn:hover, .d-icon, .btn:hover .d-icon { color: var(--secondary-or-primary); } .insert-quote + .quote-sharing { border-left: 1px solid rgba(255, 255, 255, 0.3); } .quote-sharing { vertical-align: middle; display: inline-flex; align-items: center; .btn { display: inline-flex; align-items: center; } .quote-share-label { opacity: 1; max-width: $quote-share-maxwidth; transition: opacity 0.3s ease-in-out, max-width 0.3s ease-in-out, padding 0.3s ease-in-out; } &:hover .quote-share-label { background: transparent; opacity: 0; max-width: 0px; padding: 6px 0px; } .quote-share-label + .quote-share-buttons { opacity: 0; overflow: hidden; max-width: 0; display: inline-flex; transition: opacity 0.3s ease-in-out, max-width 0.3s ease-in-out; } &:hover .quote-share-label + .quote-share-buttons { max-width: $quote-share-maxwidth; opacity: 1; } } } .topic-avatar, .user-card-avatar { position: relative; } .topic-map { background: var(--primary-very-low); border: 1px solid var(--primary-low); border-top: none; // would cause double top border .avatars { > div { float: left; position: relative; margin: 3px 0; } .post-count { position: absolute; right: 0; border-radius: 100px; padding: 3px 5px; text-align: center; font-weight: normal; font-size: $font-down-2; line-height: $line-height-small; } } .avatar { float: left; margin-right: 4px; } section { border-top: 1px solid var(--primary-low); } ul { margin: 0; list-style: none; } h3 { margin-bottom: 4px; color: var(--primary); line-height: $line-height-large; font-weight: normal; font-size: $font-0; } h4 { margin: 1px 0 2px 0; color: var(--primary-med-or-secondary-med); font-weight: normal; font-size: $font-down-1; line-height: $line-height-small; } span.domain { font-size: $font-down-2; color: var(--primary-med-or-secondary-med); } td { vertical-align: top; padding: 1px; word-break: break-all; } .topic-links { tr { border: none; } .badge-notification { margin: 1px 5px 2px 0; } } .controls { display: flex; align-items: center; .btn { margin-right: 0.5em; &:last-child { margin: 0; } } } .participants { display: flex; flex-wrap: wrap; align-items: center; & + .controls { margin-top: 0.5em; } &.hide-names .user { .username, .group-name { display: none; } } .user { border: 1px solid var(--primary-low); border-radius: 0.25em; padding: 0; margin: 0.125em 0.25em 0.125em 0; display: flex; align-items: center; height: 26px; .user-link, .group-link { color: var(--primary-high); &:hover { color: var(--primary); } } .avatar, .d-icon-users { margin-left: 0.25em; margin-right: 0.25em; } .username, .group-name { margin-right: 0.25em; } &:last-child { margin-right: 0; } .remove-invited { display: flex; flex: 1 0 0px; align-items: center; justify-content: center; box-sizing: border-box; border-radius: 0 0.25em 0.25em 0; padding-top: 0; padding-bottom: 0; height: 100%; } } } .add-remove-participant-btn { .d-icon { margin-left: 0.25em; } } } .topic-avatar, .avatar-flair-preview, .user-card-avatar, .topic-map .poster, .user-profile-avatar, .user-image, .latest-topic-list-item { .avatar-flair { display: flex; align-items: center; justify-content: center; background-repeat: no-repeat; background-position: center; position: absolute; bottom: 0; right: -6px; } } .topic-avatar .avatar-flair, .avatar-flair-preview .avatar-flair, .collapsed-info .user-profile-avatar .avatar-flair, .user-image .avatar-flair, .latest-topic-list-item .avatar-flair { background-size: 20px 20px; width: 20px; height: 20px; &.rounded { background-size: 18px 18px; border-radius: 12px; width: 24px; height: 24px; bottom: -2px; right: -8px; } } .user-card-avatar .avatar-flair, .user-profile-avatar .avatar-flair { background-size: 40px 40px; width: 40px; height: 40px; &.rounded { background-size: 30px 30px; border-radius: 24px; width: 40px; height: 40px; bottom: -2px; right: -4px; } .fa { font-size: $font-up-4; } } .topic-map .poster .avatar-flair { right: 0; background-size: 12px 12px; width: 16px; height: 16px; bottom: -3px; color: var(--primary); &.rounded { background-size: 12px 12px; border-radius: 8px; width: 16px; height: 16px; bottom: -2px; right: 0; } .d-icon { font-size: $font-down-2; } } .topic-avatar .poster-avatar-extra { display: none; } .map { &:first-of-type { display: flex; .buttons { margin-left: auto; order: 15; .btn { height: 100%; } } } } .topic-body { // this is necessary for ANYTHING that extends past the right edge of // the post body, such as an image in a deeply nested list, image in // a deeply nested blockquote, and so on.. you get the idea. .cooked { overflow: hidden; .button-wrapper { display: none; } } .group-request { border-top: 1px solid var(--primary-low); padding-top: 0.5em; } &.highlighted { animation: background-fade-highlight 2.5s ease-out; } .deleted & { // Disable so the deleted background is visible immediately &.highlighted { animation: none; } } } .post-info { flex: 0 0 auto; margin-right: 0.5em; &.post-date { margin-right: 0; } &.via-email, &.whisper, &.post-locked { .d-icon { font-size: $font-0; } } .wiki, .last-wiki-edit { color: var(--wiki); } &.via-email { color: var(--primary-low-mid-or-secondary-high); } &.raw-email { cursor: pointer; } &.edits { .widget-button { display: flex; align-items: center; .d-button-label { order: 0; padding-right: 0.25em; color: var(--primary-med-or-secondary-med); transition: color 0.25s; } .d-icon { order: 1; transition: color 0.25s; color: var(--primary-med-or-secondary-med); } .discourse-no-touch & { &:hover { .d-button-label { color: var(--primary-high); } .d-icon { color: var(--primary-high); } } } &:focus { @include default-focus; background: transparent; } } } } pre { code { word-wrap: normal; display: block; padding: 0.5em; color: var(--primary); background: var(--blend-primary-secondary-5); max-height: 500px; } } .copy-codeblocks { display: block; position: relative; overflow: visible; .copy-cmd { @include unselectable; position: absolute; top: 0; right: 0; min-height: 0; font-size: $font-down-2; min-height: 0; font-size: $font-down-2; opacity: 0.7; &.copied { .d-icon { color: var(--tertiary); } } .d-icon { pointer-events: none; margin-right: 0; } } } kbd { align-items: center; border: 1px solid var(--primary-low-mid); background: var(--primary-very-low); border-bottom-width: 2px; border-radius: 3px; box-sizing: border-box; color: var(--primary); display: inline-flex; font-size: $font-down-1; justify-content: center; line-height: $line-height-large; margin: 0 0.15em; min-width: 24px; padding: 0.15em 0.6em; // don't allow more than 3 nested elements to prevent FF from crashing // cf. http://what.thedailywtf.com/t/nested-elements/7927 // 3 levels are needed to prevent highlighted words being hidden // cf. https://meta.discourse.org/t/word-disappears-when-searched-and-in-details-summary-kbd-b/25741 * * * { display: none; } } // we assume blockquotes have their own margins, so all blockquotes // will remove margins from first (top) and last (bottom) child elements blockquote > *:first-child { margin-top: 0 !important; } blockquote > *:last-child { margin-bottom: 0 !important; } .gap { padding: 0.25em 0 0.5em 56px; // 45px (topic avatar) + 11px (margin) = 56px color: var(--primary-med-or-secondary-high); cursor: pointer; text-transform: uppercase; font-weight: bold; font-size: $font-down-1; } .who-liked, .who-read { transition: height 0.5s; a { margin: 0 0.25em 0.5em 0; display: inline-block; } } .cooked table, .d-editor-preview table { thead { th { text-align: left; padding-bottom: 2px; font-weight: bold; color: var(--primary); } } td { padding: 3px 3px 3px 0.5em; } } .small-action { display: flex; align-items: center; max-width: 758px; border-top: 1px solid var(--primary-low); .topic-avatar { align-self: flex-start; padding: 0.7em 0; border-top: none; margin-right: 11px; flex: 0 0 auto; .d-icon { font-size: 2em; width: 45px; text-align: center; color: var(--primary-low-mid); } } .small-action.deleted { background-color: var(--danger-low-mid); } .small-action-desc.timegap { color: var(--primary-medium); } .small-action-desc { display: flex; flex-wrap: wrap; flex: 1 1 100%; align-items: center; padding: 1em 0; text-transform: uppercase; font-weight: bold; font-size: $font-down-1; color: var(--primary-medium); min-width: 0; // Allows flex container to shrink button { align-self: flex-start; } .custom-message { flex: 1 1 100%; text-transform: none; font-weight: normal; font-size: $font-up-1; order: 12; word-break: break-word; min-width: 0; // Allows content like oneboxes to shrink p { margin-bottom: 0; } } a.trigger-user-card { align-self: stretch; } .avatar { margin-right: 0.8em; float: left; } > p { margin: 0; padding-right: 0.5em; line-height: $line-height-medium; flex: 1 1; } } button { background: transparent; border: 0; order: 9; &:last-of-type { margin-left: auto; order: 8; } } } .whisper { .post-info.whisper { margin-left: 0.5em; } .topic-body { .cooked { font-style: italic; color: var(--primary-medium); } } } a.mention { display: inline-block; // https://bugzilla.mozilla.org/show_bug.cgi?id=1656119 font-weight: bold; font-size: 0.93em; color: var(--primary-high-or-secondary-low); padding: 0 4px 1px; background: var(--primary-low); border-radius: 8px; } span.mention { font-weight: bold; font-size: 0.93em; color: var(--primary); } a.mention-group { font-weight: bold; font-size: 0.93em; color: var(--primary); &.notify, .small-action-desc & { color: var(--primary-high-or-secondary-low); padding: 2px 4px; background: var(--primary-low); border-radius: 8px; } } .suggested-topics { .topics { padding-bottom: 15px; } .suggested-topics-message { .badge-wrapper { margin-right: 0; } } } .large-image-placeholder { > a { &.link { margin-right: 10px; } > * { overflow: hidden; vertical-align: middle; } > .d-icon { color: var(--primary-med-or-secondary-med); margin-right: 6px; font-size: $font-0; line-height: $line-height-large; } > span.url { display: inline-block; max-width: 300px; margin-right: 6px; text-overflow: ellipsis; white-space: nowrap; } > span.help { display: inline-block; color: var(--primary-med-or-secondary-med); font-size: $font-down-1; font-style: italic; line-height: $line-height-large; margin-bottom: 1px; } > span.badge-notification { vertical-align: unset; } } } .broken-image { display: inline-flex; color: var(--primary-low-mid-or-secondary-high); border: 1px solid var(--primary-low); font-size: $font-up-5; .d-icon { margin: 16px; } } /* below standard tablet portrait ----------- */ .reply-to-tab { display: flex; align-items: center; margin-right: 2em; img { margin: 0 0.25em; } } // Select posts .topic-post { &.selected { article.boxed { .select-posts { button.select-post { background-color: var(--tertiary); color: var(--secondary); border-color: var(--tertiary); } } .topic-body { .contents:after { display: none; } } } } article.boxed { position: relative; .select-posts { position: absolute; right: 5em; z-index: z("dropdown"); top: 0.5em; height: 100px; button { margin-left: 8px; background-color: var(--primary-low); color: var(--primary); box-shadow: shadow("dropdown"); } } } } @media all and (max-width: 767px) { .reply-to-tab { span { display: none; } } .user-title { float: left; clear: left; } } .signup-cta { box-sizing: border-box; max-width: calc(#{$topic-body-width} + 4.5em); padding: 3em 5em 2em 56px; // 45px (topic avatar) + 11px (margin) = 56px @include breakpoint(mobile-extra-large) { padding: 1.5em 1.5em 0.25em; } h3 { margin-bottom: 0.5em; } a { text-decoration: underline; } .buttons { display: flex; flex-wrap: wrap; align-items: center; margin: 1.5em 0 1em; > * { margin-bottom: 0.5em; } .btn { margin-right: 0.5em; white-space: nowrap; &.btn-remind { background: var(--primary-very-low); margin-right: auto; @include hover { background: var(--primary-medium); } } @include breakpoint(mobile-extra-large) { &.btn-primary { margin-right: 100%; } } } } } .post-notice { align-items: center; background-color: var(--tertiary-low); border-top: 1px solid var(--primary-low); display: flex; max-width: calc( #{$topic-body-width} + (#{$topic-body-width-padding} * 2) + #{$topic-avatar-width} - (0.8em * 2) ); padding: 0.8em; &.old { background-color: unset; color: var(--primary-medium); .d-icon { color: var(--primary-medium); } } p { margin: 0; } .d-icon { font-size: 2em; color: var(--primary-high); margin-right: 0.65em; } } #topic-footer-buttons { margin: var(--below-topic-margin) 0; padding: 0; .topic-footer-main-buttons { display: flex; flex-wrap: wrap; align-items: stretch; // aligns items by making them the same height button { margin-right: 0.54em; } > * { margin-bottom: 0.5em; // all immediate children should have a bottom margin in case of wrapping } .topic-admin-menu-button-container { display: inline-flex; > span { display: flex; // to make this button match siblings behavior, all of its parents need to be flex } } } .pinned-button:not(.is-hidden) + .topic-notifications-button { margin-top: 0; } .pinned-button, .topic-notifications-button { margin: 0.5em 0 1em; .reason { color: var(--primary-high); display: inline-flex; margin: 0; align-items: center; .dropdown-select-box { .select-kit-selected-name { width: 100%; overflow: hidden; } .name { @include ellipsis; } } .text { margin-left: 0.5em; line-height: $line-height-medium; } } } } .post-admin-menu { display: inline-flex; flex-direction: column; box-sizing: border-box; width: auto; max-width: 320px; position: absolute; text-align: left; bottom: -2px; right: 15px; } .posts-filtered-notice { position: -webkit-sticky; position: sticky; background-color: var(--tertiary-low); bottom: 0; padding: 1em; margin-top: 0.5em; text-align: center; z-index: 2; display: flex; justify-content: center; align-items: center; max-width: calc( #{$topic-body-width} + (#{$topic-body-width-padding} * 2) + #{$topic-avatar-width} - (0.8em * 2) ); .filtered-avatar { margin: 0 0.5em; + .names { flex: inherit; } } .filtered-replies-show-all { margin-left: 1em; } .filtered-user-row { @include ellipsis; } } .pausable-animated-image { position: relative; display: inline-block; > canvas, > .animated-image-overlay { position: absolute; bottom: 0; right: 0; } > canvas { background-color: var(--primary-very-low); } > .animated-image-overlay { pointer-events: none; text-align: right; display: flex; justify-content: flex-end; align-items: flex-end; > .d-icon { cursor: pointer; padding: 0.5em; margin: 0.5em; background-color: rgba(var(--always-black-rgb), 0.25); color: var(--secondary-or-primary); cursor: pointer; display: none; } } img.animated { cursor: pointer; } html.no-touch &:not(.paused-animated-image) .animated:hover + .animated-image-overlay .d-icon-pause { display: initial; } &.paused-animated-image .animated.manually-paused + .animated-image-overlay .d-icon-play { display: initial; } } .paused-animated-image { img.animated { // need to keep the image hidden but clickable // so the user can resume animation opacity: 0; } }