2023-11-06 14:47:46 -04:00

609 lines
12 KiB
CSS

:root {
--color-twitter-text-gray: #536171;
--color-twitter-blue: #1b95e0; /* hsv(203, 87.9, 87,8) */
--color-twitter-blue-light: #7cc5f6; /* hsv(204, 49.6, 96.5) */
--color-twitter-off-white: #f7f9f9; /* hsv(180, 0.8, 97.6) */
--color-twitter-off-white-dark: #dae5e5; /* hsv(180, 4.8, 89.8) */
--color-outline-gray: #dcdcdc;
--color-twitter-text-gray: #536471;
--color-space-purple: #a49bfd;
--color-space-purple-outline: #6452fc;
/*
const QColor COLOR_OUTLINE_GRAY = QColor(220, 220, 220);
const QColor COLOR_TWITTER_BLUE = QColor(27, 149, 224);
const QColor COLOR_TWITTER_BLUE_LIGHT = QColor(124,197,246);
const QColor COLOR_TWITTER_OFF_WHITE = QColor(247,249,249);
const QColor COLOR_TWITTER_OFF_WHITE_DARK = QColor(218,229,229);
const QColor COLOR_TWITTER_TEXT_GRAY = QColor(83, 100, 113);
const QColor COLOR_BACKGROUND_GREEN = QColor(40, 205, 50);
const QColor COLOR_RED = QColor(255, 0, 0);
const QColor COLOR_SPACE_PURPLE = QColor(164, 155, 253);
const QColor COLOR_SPACE_PURPLE_OUTLINE = QColor(100, 82, 252);
*/
}
html {
/* Force scrollbar, even when it fits on 1 page. Prevents viewport from resizing -> flickering / stuff moving btw page loads */
overflow-y: scroll;
}
body {
margin: 0 30%;
border-color: var(--color-twitter-off-white-dark);
border-right-style: solid;
border-left-style: solid;
border-width: 1px;
min-height: 100vh;
font-family: "Titillium Web";
}
main {
padding-top: 4em;
}
input, select {
font-family: inherit;
font-size: 1em;
padding: 0.2em 0.6em;
box-sizing: border-box;
border-radius: 0.5em;
}
ul.inline-dotted-list {
list-style: none;
margin: 0;
}
ul.inline-dotted-list li {
display: inline;
}
ul.inline-dotted-list li:after {
content: " ⋅";
}
ul.inline-dotted-list li:last-child:after {
content: "";
}
.tweet {
padding: 0 1.5em;
}
:not(#focused-tweet) > .tweet {
cursor: pointer;
}
.quoted-tweet {
margin: 1em 0;
}
.rounded-gray-outline {
outline-color: lightgray;
outline-style: solid;
outline-width: 1px;
border-radius: 20px;
}
.profile-banner-image {
width: 100%;
}
.unstyled-link {
text-decoration: none;
color: inherit;
}
.author-info {
display: flex;
align-items: center;
}
.author-info a {
line-height: 0;
}
.author-info, .tweet .text {
cursor: default;
}
.circle-outline {
display: flex;
border-radius: 50%;
outline: 1px solid #777;
margin: 0 0.4em;
font-size: 0.8em;
padding: 0.2em;
box-sizing: border-box;
}
.name-and-handle {
padding: 0 0.6em !important; /* !important to make the ".quick-link .span" rule in the login button not overrule it */
}
.display-name {
font-weight: bold;
white-space: nowrap;
}
.handle {
color: var(--color-twitter-text-gray);
}
.tweet-header-container {
display: flex;
align-items: center;
}
.reply-mentions-container {
display: flex;
align-items: center;
margin: 0 5em;
cursor: default;
}
.reply-mentions {
padding: 0 0.5em;
}
.replying-to-label {
color: var(--color-twitter-text-gray);
}
a.entity {
text-decoration: none;
color: var(--color-twitter-blue);
}
.tweet .text {
display: block;
margin-bottom: 0.4em;
margin-top: 0;
overflow-wrap: anywhere;
}
#focused-tweet .text {
font-size: 1.4em;
}
#focused-tweet .quoted-tweet .text {
font-size: unset;
}
.tweet-content video {
max-width: 100%;
max-height: 40em;
}
.embedded-link {
padding: 1.3em;
margin-top: 1em;
display: flex;
flex-direction: column;
background-color: var(--color-twitter-off-white);
}
img.embedded-link-preview {
border-radius: 1em;
max-width: 100%;
}
.embedded-link-description {
color: var(--color-twitter-text-gray);
font-size: 0.8em;
margin: 0;
}
h3 {
margin: 0.5em 0;
}
.embedded-link-domain-container {
margin-top: 0.2em
}
.embedded-link-domain {
margin-left: 0.3em;
}
.thread-parent-tweet:first-child, #focused-tweet:first-child {
padding-top: 1em;
}
.thread-parent-tweet .vertical-reply-line-container,
.reply-chain .vertical-reply-line-container {
width: 3em;
margin-right: 0.5em;
}
.thread-parent-tweet .vertical-reply-line:not(.quoted-tweet .vertical-reply-line),
.reply-chain > :not(:last-child) .vertical-reply-line:not(.quoted-tweet .vertical-reply-line) {
width: 2px;
background-color: var(--color-twitter-off-white-dark);
flex-grow: 1;
margin: auto;
}
.profile-image {
border-radius: 50%;
width: 3em;
display: inline;
border: 1px solid var(--color-outline-gray);
}
.user-feed-header {
border-bottom: 1px solid var(--color-outline-gray);
}
.user-feed-header .author-info {
font-size: 1.3em;
padding: 1em;
}
.user-feed-header .profile-image {
width: 8em;
}
.user-feed-header a.user-feed-tab {
flex-grow: 1;
text-align: center;
font-size: 1.1em;
font-weight: bold;
color: var(--color-twitter-text-gray);
padding: 0.8em;
}
.user-feed-header a.user-feed-tab.active-tab {
color: var(--color-twitter-blue);
border-bottom: 0.2em solid var(--color-twitter-blue);
}
.user-feed-header a.user-feed-tab:hover {
color: var(--color-twitter-blue);
}
.row {
display: flex;
flex-direction: row;
align-items: center;
}
.vertical-reply-line-container {
flex-grow: 0;
flex-shrink: 0;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
align-self: stretch;
width: 1em; /* will be overridden by, e.g., parent-thread properties */
}
.vertical-container-1 {
flex-grow: 1;
flex-shrink: 1;
}
.posted-at-container {
flex-grow: 1;
min-width: 5em;
}
p.posted-at {
float: right;
color: var(--color-twitter-text-gray);
font-size: 0.875em;
}
.interactions-bar {
display: flex;
flex-direction: row;
margin: 0.5em 0;
}
.interaction-stat {
flex-grow: 1;
display: flex;
}
.interaction-stat span {
line-height: 1.5em;
padding: 0 0.5em;
}
.interactions-bar .dummy {
flex-grow: 5;
}
#focused-tweet {
border-bottom: 1px solid var(--color-twitter-off-white-dark);
padding-bottom: 0.5em;
}
.reply-chain {
margin-top: 1em;
}
.reply-chain > :last-child {
padding-bottom: 1em;
border-bottom: 1px solid var(--color-twitter-off-white-dark);
}
.nav-sidebar {
display: flex;
flex-direction: column;
position: fixed;
transform: translate(-100%, 0);
font-size: 1.4em;
}
ul.quick-links {
display: flex;
flex-direction: column;
list-style: none;
align-items: flex-start;
padding: 0 2em;
}
.quick-link {
display: flex;
flex-direction: row;
align-items: center;
padding: 0.5em;
margin: 0.2em;
border-radius: 100em; /* any large amount, just don't use % because then it makes an ellipse */
cursor: pointer;
}
.quick-link:hover {
background-color: var(--color-twitter-blue-light);
}
.quick-link:active {
transform: translate(0.1em, 0.1em);
background-color: var(--color-twitter-blue);
}
.quick-link span {
padding: 0 0.3em;
white-space: nowrap;
}
.followers-count, .following-count {
font-weight: bold;
}
.followers-label, .following-label {
color: var(--color-twitter-text-gray);
}
.bio-info-with-icon {
display: flex;
flex-direction: row;
align-items: center;
gap: 0.3em;
}
.user-feed-header-info-container {
padding: 2em;
margin-bottom: 0.1em;
border-bottom: 1px solid var(--color-outline-gray);
}
.timeline .tweet, .quoted-tweet .tweet {
padding-top: 0.8em;
padding-bottom: 0.8em;
}
.timeline > .tweet {
/* not for nested (i.e., quoted) tweets */
border-bottom: 1px solid var(--color-twitter-off-white-dark);
}
.top-bar {
display: flex;
flex-direction: row;
align-items: center;
height: 4em;
padding: 0.5em 1em;
gap: 1em;
border: 1px solid var(--color-outline-gray);
position: fixed;
background-color: white;
width: 40%;
left: 30%;
box-sizing: border-box;
z-index: 1;
}
.back-button {
flex-grow: 0;
border-radius: 50%;
border: 2px solid black;
width: 2em;
position: relative;
height: 2em;
box-sizing: border-box;
cursor: pointer;
}
img.svg-icon {
width: 1.5em;
}
svg {
width: 1.5em;
}
.back-button img {
color: rgb(239, 243, 244);
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.top-bar form {
flex-grow: 1;
display: flex;
}
.search-bar {
flex-grow: 1;
}
.login {
width: 60%;
margin: 20% auto;
}
.login-form input {
width: 100%;
border-radius: 0.5em;
padding: 0.5em 0.6em;
}
.login-form .error {
color: #C0392B;
font-weight: bold;
}
.login-form .error + input {
border-color: #C0392B;
border-width: 2px;
}
.field-container {
padding: 0.5em 0;
}
.submit-container {
text-align: right;
}
input[type="submit"] {
background-color: var(--color-twitter-blue-light);
width: 10em;
padding: 1em;
margin-top: 1em;
border-radius: 1em;
font-size: 1em;
cursor: pointer;
}
.change-session-form select {
display: block;
width: 100%;
}
#logged-in-user-info {
font-size: 0.8em;
margin-top: 1em;
display: flex;
flex-direction: column;
align-items: center;
}
.quick-link .author-info {
pointer-events: none;
}
.retweet-info-container {
margin-left: 3.5em;
display: flex;
align-items: center;
opacity: 0.8;
}
.retweet-info-container .svg-icon {
width: 1.2em; /* override default from .svg-icon of 1.5em */
opacity: 0.6;
margin-right: 0.3em;
}
.retweeted-by-label {
margin: 0 0.2em;
}
.user-bio {
margin: 1.5em 0;
}
.followers-followees-container {
margin-top: 1em;
gap: 4em;
}
.poll {
padding: 1em;
}
.poll-choice {
position: relative;
margin: 0.3em 0;
}
.poll-fill-bar {
position: absolute;
height: 100%;
z-index: -1;
background-color: var(--color-twitter-off-white-dark);
}
.poll-fill-bar.poll-winner {
background-color: var(--color-twitter-blue-light);
}
.poll-info-container {
width: 100%;
line-height: 2em;
margin: 0 0.5em;
}
.poll-choice-label {
width: 50%;
}
.poll-choice-votes {
width: 50%;
}
.poll-metadata {
color: var(--color-twitter-text-gray);
margin: 0;
font-size: 0.9em;
}
.space {
outline: 1px solid var(--color-space-purple-outline);
background-color: var(--color-space-purple);
border-radius: 1.5em;
padding: 1.5em;
}
.space-title {
padding-top: 0.5em;
}
.space .host-label {
color: var(--color-space-purple-outline);
}
.space-date {
color: var(--color-space-purple-outline);
font-size: 0.8em;
}
.space-info-list {
padding: 0;
}
.space .layout-spacer {
flex-grow: 1;
}
ul.space-participants-list {
list-style: none;
padding: 0;
}
ul.space-participants-list li {
padding: 0.5em 0;
display: inline-block;
width: 24%;
}
.space-participants-list .author-info {
font-size: 0.9em;
line-height: 1.2em;
}
.space-participants-list .author-info .profile-image {
font-size: 0.8em;
}
.dropdown {
position: relative;
}
ul.dropdown-items {
list-style: none;
position: absolute;
top: 2em;
width: fit-content;
margin: 0;
padding: 0.3em;
background-color: var(--color-twitter-off-white);
outline: 1px solid var(--color-outline-gray);
border-radius: 0.3em;
display: none;
z-index: 1; /* otherwise in quote-tweets, the dropdown button from quoting-tweet is on top of it */
}
.dropdown-button:focus + .dropdown-items, .dropdown-items:hover {
display: block;
}
.tombstone {
outline: 1px solid var(--color-outline-gray);
background-color: var(--color-twitter-off-white);
padding: 0.5em 1em;
border-radius: 0.5em;
color: var(--color-twitter-text-gray);
}
.tweet-image {
max-width: 95%;
max-height: 30em;
width: auto;
height: auto;
}
.tweet video {
max-height: 25em;
}
.like-icon {
cursor: pointer;
}
.like-icon.liked, .like-icon:hover {
filter: invert(20%) sepia(97%) saturate(4383%) hue-rotate(321deg) brightness(101%) contrast(95%);
}
.users-list-container {
display: flex;
flex-direction: column;
gap: 1em;
padding: 1em;
}
.users-list-container .author-info .profile-image {
width: 4em;
}