$topic-progress-height: 42px; @keyframes button-jump-up { 0% { margin-bottom: -60px; } 50% { margin-bottom: 10px; } 65% { margin-bottom: 0px; } 77% { margin-bottom: 5px; } 100% { margin-bottom: 0px; } } [class*="archetype-"] { --below-topic-margin: 0.75em; } .container.posts { display: grid; grid-template-areas: "posts timeline"; grid-template-columns: auto auto; margin-bottom: var(--below-topic-margin); > .row { grid-area: posts; max-width: calc( 100vw - 20px ); // 20px is the left + right padding on .wrap in common/base/discourse.scss min-width: 0; // grid needs to be able to shrink } .timeline-container { margin-left: unset !important; /* This is a temporary override to ease the transition to the sticky position timeline for themes with custom timeline positioning. Without this those themes would render topics unreadable. */ } // timeline @media screen and (min-width: 925px) { // at 925px viewport width and above the timeline is visible (see topic-navigation.js) .topic-navigation { grid-area: timeline; align-self: start; @include sticky; top: calc(var(--header-offset, 60px) + 2em); margin-left: 1em; z-index: z("timeline"); &.with-topic-progress { align-self: end; } &.topic-progress-expanded { z-index: z("fullscreen"); } } .topic-navigation-popup { box-sizing: border-box; position: absolute; top: 0; overflow-y: auto; z-index: z("timeline"); padding: 10px 10px 35px 10px; box-shadow: var(--shadow-dropdown); background: var(--tertiary-low); .close { display: flex; align-items: center; position: absolute; right: 0px; top: 8px; color: var(--primary); opacity: 0.5; font-size: var(--font-up-1); } } } // progress bar @media screen and (max-width: 924px) { grid-template-areas: "posts"; grid-template-columns: auto; .topic-navigation { grid-area: posts; grid-row: 2; width: auto; } .timeline-container:not(.timeline-fullscreen) { display: none; // hiding this because sometimes the JS switch lags and causes layout issues } .timeline-container .timeline-scroller-content { position: relative; } } #topic-progress-wrapper { .topic-admin-menu-button .toggle-admin-menu { border-top-right-radius: 0; border-bottom-left-radius: var(--d-border-radius); border-bottom-right-radius: 0; } #topic-progress { border-radius: var(--d-border-radius); overflow: hidden; } .topic-admin-menu-button-container + #topic-progress { border-top-left-radius: 0; border-top-right-radius: var(--d-border-radius); border-bottom-left-radius: 0; border-bottom-right-radius: var(--d-border-radius); } } } .progress-back-container { z-index: z("dropdown"); margin-right: 0; animation-duration: 0.5s; animation-name: button-jump-up; width: 145px; text-align: center; margin-bottom: 0px; position: absolute; right: 0; top: -120%; // above parent container + some extra space .btn { margin: 0; } } #topic-progress-wrapper { position: fixed; bottom: 0px; right: 10px; margin: 0 auto; display: flex; justify-content: flex-end; z-index: z("timeline"); .topic-admin-menu-button-container { display: flex; > span { display: flex; } } .topic-admin-popup-menu.right-side { position: absolute; bottom: 0; right: 0; left: auto; transition: bottom 0.5s; transform: translateZ( 0 ); // iOS11 Rendering bug https://meta.discourse.org/t/wrench-menu-not-disappearing-on-ios/94297 } &.docked { position: initial; .topic-admin-popup-menu.right-side { bottom: unset; right: 10px; } } body:not(.footer-nav-visible) & { bottom: env(safe-area-inset-bottom); } &:not(.docked) { @media screen and (min-width: $reply-area-max-width) { // position to right side of composer right: calc(50% + 10px); margin-right: calc(#{$reply-area-max-width} / 2 * -1); } } &.with-transitions { transition: bottom 0.2s, margin-bottom 0.2s; #topic-progress .bg { transition: width 0.5s; } } } #topic-progress { position: relative; background-color: var(--secondary); color: var(--tertiary); border: 1px solid var(--tertiary-low); width: 145px; height: $topic-progress-height; /* as a big ol' click target, don't let text inside be selected */ @include unselectable; .nums { position: relative; top: 12px; width: 100%; text-align: center; z-index: z("base"); } h4 { display: inline; font-size: var(--font-up-2); line-height: var(--line-height-small); } .d-icon { position: absolute; right: 8px; bottom: 9px; z-index: z("base"); } .bg { position: absolute; top: 0; bottom: 0; width: var(--progress-bg-width, 0); background-color: var(--tertiary-low); } } .topic-status-info, .topic-timer-info { border-top: 1px solid var(--primary-low); margin: 0; max-width: calc( var(--topic-body-width) + (var(--topic-body-width-padding) * 2) + var(--topic-avatar-width) ); &:empty { padding: 0; } span .d-icon { font-size: var(--font-down-1); } .topic-timer-heading, .slow-mode-heading { display: flex; align-items: center; margin: 0; padding: var(--below-topic-margin) 0; } .slow-mode-remove, .topic-timer-modify { display: flex; margin-left: auto; align-self: flex-start; } button { font-size: var(--font-down-2); background: transparent; } } .title-wrapper { display: flex; flex-wrap: wrap; button { margin: 0 0.5em 0 0; } a.topic-featured-link { display: inline-block; } .topic-statuses { line-height: 1.2; .d-icon { color: var(--primary-medium); } } .header-title .private-message-glyph-wrapper { float: left; margin-right: 0.25em; } } #topic-title { .title-wrapper { display: flex; flex-wrap: wrap; width: 90%; a.topic-featured-link { display: inline-block; } } h1 { margin-bottom: 0; width: 100%; } a.edit-topic .d-icon { font-size: 0.8em; } .edit-topic-title { display: flex; flex-wrap: wrap; box-sizing: border-box; max-width: calc( var(--topic-body-width) + (var(--topic-body-width-padding) * 2) + var(--topic-avatar-width) ); #edit-title { flex: 1 1 100%; } .category-chooser, .mini-tag-chooser { flex: 1 1 35%; margin: 0 0 9px 0; @media all and (max-width: 500px) { flex: 1 1 100%; } } .mini-tag-chooser { flex: 1 1 54%; margin: 0 0 9px 0; margin-left: 1%; // category at 40%, tag chooser at 58% @media all and (max-width: 500px) { margin-left: 0; } } .edit-controls { flex: 1 1 100%; } .select-kit .category-row { max-width: unset; } } } .private-message-glyph { color: var(--primary-medium); height: 0.95em; } .private_message { background: var(--d-content-background); #topic-title { .edit-topic-title { position: relative; .private-message-glyph { position: absolute; left: 0.75em; top: 7px; } #edit-title { width: calc(100% - 50px); padding-left: 2.25em; } .mini-tag-chooser { margin-left: 0; @include breakpoint(mobile-large, min-width) { .selected-name { max-width: 500px; } } } } } } .topic-title-outlet { clear: both; } .has-pending-posts { display: flex; justify-content: space-between; padding: 0.5em; background-color: var(--highlight-bg); margin-top: 1em; max-width: 757px; } .post-links-container { @include unselectable; clear: both; .post-links { margin-top: 1em; padding-top: 1em; border-top: 1px solid var(--primary-low); li:last-of-type { margin-bottom: 1em; } } .expand-links { color: var(--primary-med-or-secondary-med); } .track-link { display: flex; align-items: center; span:not(.badge) { @include ellipsis; } } ul { margin: 0; list-style: none; li { margin-bottom: 0.5em; a[href] { color: var(--primary-med-or-secondary-med); } .clicks { margin-left: 0.5em; flex: 0 0 auto; } .d-icon { font-size: var(--font-down-2); margin: 0 0.5em 0 0; } } } a.reply-new { .d-icon { background: var(--secondary); border-radius: 20px; transition: all linear 0.15s; } &:hover { color: var(--tertiary); .d-icon { background: var(--tertiary-low); } } } } a.topic-featured-link { display: inline-block; text-transform: lowercase; color: var(--primary-med-or-secondary-med); font-size: 0.875rem; .d-icon { margin-right: 3px; } } .topic-area { .pending-posts { max-width: calc( var(--topic-body-width) + (var(--topic-body-width-padding) * 2) + var(--topic-avatar-width) ); .reviewable-item { .post-body { max-height: unset; } } } } .published-page-notice { display: flex; justify-content: space-between; padding-bottom: 1em; max-width: calc( var(--topic-body-width) + (var(--topic-body-width-padding) * 2) + var(--topic-avatar-width) ); align-items: center; .is-public { padding: 0.25em 0.5em; font-size: var(--font-down-2); background: var(--tertiary); color: var(--secondary); border-radius: 3px; text-transform: lowercase; } }