/* ==UserStyle==
@name           Compact++
@namespace      https://grzesiek11.stary.pc.pl
@version        1.8.3
@description    Discord theme that makes Compact mode more like IRC (and thus better).
@author         Grzesiek11 <grzesiek11@stary.pc.pl> (https://grzesiek11.stary.pc.pl/en)
@preprocessor   less
@license        BSD-2-Clause-Patent
@homepageURL    https://git.stary.pc.pl/Grzesiek11/compactpp
@supportURL     https://git.stary.pc.pl/Grzesiek11/compactpp/issues
@updateURL      https://grzesiek11.stary.pc.pl/files/builds/compactpp/latest/compactpp.user.css
@var            checkbox hide-tags "Hide tags" 0
@var            checkbox hide-icons "Hide icons" 0
@var            checkbox minimize-replies "Minimize replies" 0
@var            text header-width "Header width" 160px
@var            text header-margin-left "Header margin left" 10px
@var            text header-margin-right "Header margin right" 5px
@var            text message-margin-right "Message margin right" 15px
@var            text avatar-size "Avatar size" 1.25rem
@var            text reply-link-line-offset "Reply link line offset" 30px
@var            text pronoundb-pronouns-width "UserMessagesPronouns pronouns width" 45px
==/UserStyle== */

@-moz-document domain("discord.com") {

:root {
    /* Message header width */
    --compactpp-header-width: @header-width;
    /* Message header left margin */
    --compactpp-header-margin-left: @header-margin-left;
    /* Message header right margin */
    --compactpp-header-margin-right: @header-margin-right;
    /* Message container right margin */
    --compactpp-message-margin-right: @message-margin-right;
    /* Message avatar size */
    --compactpp-avatar-size: @avatar-size;
    /* Reply link line offset */
    --compactpp-reply-link-line-offset: @reply-link-line-offset;
    /* UserMessagesPronouns pronouns width */
    --compactpp-pronoundb-pronouns-width: @pronoundb-pronouns-width;
}

/* Message container */
.c19a557985eb7793-compact.c19a557985eb7793-wrapper {
    padding-left: 0;
    padding-right: var(--compactpp-message-margin-right) !important;
}

/* Message content container */
.c19a557985eb7793-compact .c19a557985eb7793-contents {
    margin-left: 0;
    padding-left: 0;
    text-indent: 0;
}

/* Message markup first header 1 */
.c19a557985eb7793-compact ._752971923a1e6683-markup h1:first-child,
/* Message markup first header 2 */
.c19a557985eb7793-compact ._752971923a1e6683-markup h2:first-child,
/* Message markup first header 3 */
.c19a557985eb7793-compact ._752971923a1e6683-markup h3:first-child {
    margin-top: 0;
}

/* Message markup last header 1 */
.c19a557985eb7793-compact ._752971923a1e6683-markup h1:last-child,
/* Message markup last header 2 */
.c19a557985eb7793-compact ._752971923a1e6683-markup h2:last-child,
/* Message markup last header 3 */
.c19a557985eb7793-compact ._752971923a1e6683-markup h3:last-child {
    margin-bottom: 0;
}

/* Message markup first unordered list */
.c19a557985eb7793-compact ._752971923a1e6683-markup ul:first-child,
/* Message markup first ordered list */
.c19a557985eb7793-compact ._752971923a1e6683-markup ol:first-child {
    margin-top: 0;
}

/* Message markup list last element */
.c19a557985eb7793-compact ._752971923a1e6683-markup li:last-child {
    margin-bottom: 0;
}

/* Message markup unordered list */
.c19a557985eb7793-compact ._752971923a1e6683-markup ul,
/* Message markup ordered list */
.c19a557985eb7793-compact ._752971923a1e6683-markup ol {
    margin-bottom: 4px;
}

/* Message markup last unordered list */
.c19a557985eb7793-compact ._752971923a1e6683-markup ul:last-child,
/* Message markup last ordered list */
.c19a557985eb7793-compact ._752971923a1e6683-markup ol:last-child {
    margin-bottom: 0px;
}

/* Message markup code block */
.c19a557985eb7793-compact ._752971923a1e6683-markup pre {
    max-width: unset;
}

/* Message markup quote container */
.c19a557985eb7793-compact ._752971923a1e6683-markup blockquote {
    padding-right: 0;
    max-width: unset;
    min-width: 0;
}

/* Message markup quote line */
.c19a557985eb7793-compact ._752971923a1e6683-blockquoteContainer ._752971923a1e6683-blockquoteDivider {
    flex-shrink: 0;
}

/* Message header container */
.c19a557985eb7793-compact .c19a557985eb7793-header,
/* Message header container with gradient (more specific selector) */
.c19a557985eb7793-zalgo.c19a557985eb7793-gradient.c19a557985eb7793-compact .c19a557985eb7793-header,
/* Message header container with special font in DMs (more specific selector) */
/* Seriously, this class is only applied in DMs/GCs. Why?? Also yes this *is* the required specificity. */
.c19a557985eb7793-withDisplayNameStyles.c19a557985eb7793-withDisplayNameStyles.c19a557985eb7793-withDisplayNameStyles .c19a557985eb7793-header {
    margin-left: var(--compactpp-header-margin-left);
    position: absolute;
    display: flex;
    width: var(--compactpp-header-width);
    align-items: center;
}

/* Message timestamp */
.c19a557985eb7793-compact .c19a557985eb7793-header .c19a557985eb7793-timestamp {
    flex-grow: 1;
    margin-right: 0;
    text-align: left;
    white-space: nowrap;
    width: unset;
}

/* Hidden message timestamp */
.c19a557985eb7793-compact .c19a557985eb7793-timestampVisibleOnHover {
    opacity: unset;
}

/* Message avatar */
.c19a557985eb7793-compact .c19a557985eb7793-avatar {
    position: static;
    width: var(--compactpp-avatar-size);
    height: var(--compactpp-avatar-size);
    margin-left: 5px;
    margin-right: 0;
    z-index: auto;
    order: 1;
}

/* Message username container */
.c19a557985eb7793-compact .c19a557985eb7793-headerText {
    display: flex;
    align-items: center;
    margin-left: 5px;
    margin-right: 0;
    min-width: 0;
    order: 2;
}

& when (@hide-tags = 1) {
    /* Message tag */
    .c19a557985eb7793-compact .c19a557985eb7793-botTag,
    /* System message tag */
    .c19a557985eb7793-compact ._444920e965051ae6-systemTag,
    /* AutoMod notice tag */
    .c19a557985eb7793-compact ._444920e965051ae6-systemTag,
    /* Message clan tag */
    .c19a557985eb7793-compact .c19a557985eb7793-clanTagChiplet {
        display: none;
    }
}

& when (@hide-tags = 0) {
    /* Message tag */
    .c19a557985eb7793-compact .c19a557985eb7793-botTag,
    /* System message tag */
    .c19a557985eb7793-compact ._444920e965051ae6-systemTag,
    /* AutoMod notice tag */
    .c19a557985eb7793-compact ._444920e965051ae6-systemTag,
    /* Message clan tag */
    .c19a557985eb7793-compact .c19a557985eb7793-clanTagChiplet {
        margin-left: 0;
        margin-right: 5px;
    }

    /* Message tag */
    .c19a557985eb7793-compact .c19a557985eb7793-botTag {
        position: static;
    }

    /* Message clan tag */
    .c19a557985eb7793-compact .c19a557985eb7793-clanTagChiplet {
        white-space: nowrap;
    }
}

/* Message username */
.c19a557985eb7793-compact .c19a557985eb7793-headerText .c19a557985eb7793-username {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    /* Gradient glow is absolute, we want it relative to the username */
    position: relative;
    flex-shrink: 1;
    z-index: 1;
    order: 2;
}

/* Message username on hover */
.mouse-mode .c19a557985eb7793-compact .c19a557985eb7793-headerText .c19a557985eb7793-username:hover,
/* AutoMod message username container on hover */
.mouse-mode ._444920e965051ae6-compact._444920e965051ae6-usernameContainer > :nth-child(2):hover,
/* AutoMod notice username container on hover */
.mouse-mode ._444920e965051ae6-compact._444920e965051ae6-usernameContainer > :nth-child(2):hover,
/* Vencord UserMessagesPronouns plugin: Message pronouns on hover */
.mouse-mode .c19a557985eb7793-compact .c19a557985eb7793-headerText .c19a557985eb7793-timestamp:hover {
    /* Show full username */
    overflow: visible;
    /* Not background-color to override gradient */
    background: var(--background-secondary-alt);
    outline: 3px solid var(--background-secondary-alt);
    border-radius: 3px;
    /* Disable gradient, as it's in conflict with the full username popup */
    -webkit-text-fill-color: unset;
    color: var(--custom-gradient-color-1, var(--header-primary));
}

/* Role and new member icon container */
.c19a557985eb7793-compact .c19a557985eb7793-headerText :has(.f80704ca4ba27cf7-newMemberBadge), .c19a557985eb7793-compact .c19a557985eb7793-headerText :has(.c19a557985eb7793-roleIcon) {
    order: 1;
}

& when (@hide-icons = 1) {
    /* Role icon */
    .c19a557985eb7793-compact .c19a557985eb7793-roleIcon,
    /* New member icon */
    .c19a557985eb7793-compact .f80704ca4ba27cf7-newMemberBadge {
        display: none;
    }
}

& when (@hide-icons = 0) {
    /* Role icon */
    .c19a557985eb7793-compact .c19a557985eb7793-roleIcon,
    /* New member icon */
    .c19a557985eb7793-compact .f80704ca4ba27cf7-newMemberBadge {
        margin-right: 5px;
        margin-left: 0;
    }
}

/* Message tag in username container (like the Remix tag) */
.c19a557985eb7793-compact .c19a557985eb7793-headerText .c19a557985eb7793-botTag {
    order: 0;
}

/* Silent message icon container */
.c19a557985eb7793-compact .c19a557985eb7793-badgesContainer {
    margin-right: 0;
    margin-left: 5px;
}

/* Silent message icon */
.c19a557985eb7793-compact ._6ba43da0a44cd9dd-badge when (@hide-icons = 1) {
    display: none;
}

/* Silent message icon */
.c19a557985eb7793-compact ._6ba43da0a44cd9dd-badge when (@hide-icons = 0) {
    position: static;
}

/* Message content */
.c19a557985eb7793-compact .c19a557985eb7793-contents .c19a557985eb7793-messageContent {
    display: block;
}

/* Message content */
.c19a557985eb7793-compact .c19a557985eb7793-contents .c19a557985eb7793-messageContent,
/* Message embed container */
.c19a557985eb7793-compact > .b7e1cb0370c2dd0e-container,
/* AutoMod referenced message container */
._444920e965051ae6-compact._444920e965051ae6-messageContent,
/* AutoMod referenced message footer */
._444920e965051ae6-compact._444920e965051ae6-footerContainer,
/* Edit input */
.c19a557985eb7793-compact ._5126c0cd07f243a0-channelTextArea,
/* Edit actions */
.c19a557985eb7793-compact .bab7519355c8eed6-operations,
/* AutoMod notice embed */
._444920e965051ae6-embedCard._444920e965051ae6-compact {
    margin-left: calc(var(--compactpp-header-width) + var(--compactpp-header-margin-left) + var(--compactpp-header-margin-right));
}

/* Message content of message with empty embed container */
.c19a557985eb7793-compact:has(> .b7e1cb0370c2dd0e-container:empty) .c19a557985eb7793-contents .c19a557985eb7793-messageContent {
    /* Make the content have at least 1 line of height, in case the client
     * renders a message with no content and no embeds */
    /* This has happened before with the 2023-09_soundmoji experiment. If a
     * client without the experiment enabled received a message with only a
     * soundmoji, it got rendered without content. */
    min-height: 1lh;
}

/* AutoMod blocked message notice container */
.blockedNoticeContainer_b7ab2c.compact_b7ab2c {
    margin-left: 0;
}

/* AutoMod blocked message accessories container */
.ephemeralAccessories_b7ab2c.compact_b7ab2c {
    margin-left: 0;
}

/* System message container */
._235ca3770d90ab7c-compact {
    margin-left: 0;
}

/* System message content */
.c19a557985eb7793-compact._5126c0cd07f243a0-systemMessage > .c19a557985eb7793-contents > .c19a557985eb7793-messageContent,
/* Blocked message drawer */
.c19a557985eb7793-compact .blockedSystemMessage__7a70a {
    margin-left: calc(var(--compactpp-header-width) + var(--compactpp-header-margin-left) - var(--compactpp-avatar-size));
}

/* System message icon */
.c19a557985eb7793-compact ._235ca3770d90ab7c-iconContainer._235ca3770d90ab7c-iconContainer {
    margin-right: var(--compactpp-header-margin-right);
    width: var(--compactpp-avatar-size);
    height: var(--compactpp-avatar-size);
    align-items: center;
    padding-top: 0;
    /* Attributes copied from Compact mode rule as the group leave message has Cozy mode classes */
    position: relative;
    inset-inline-end: auto;
}

/* Send welcome sticker button */
.c19a557985eb7793-compact .f5d1e2df173e5dbd-welcomeCTA,
/* Poll closed embed */
.c19a557985eb7793-compact .f69538e19b6eaacd-container {
    margin-left: calc(var(--compactpp-avatar-size) + var(--compactpp-header-margin-right));
}

/* Non-AutoMod system message container */
._235ca3770d90ab7c-compact._235ca3770d90ab7c-container:not(._444920e965051ae6-mainContainer) {
    align-items: center;
}

/* AutoMod message container */
._444920e965051ae6-compact._444920e965051ae6-mainContainer,
/* AutoMod notice */
._444920e965051ae6-compact._444920e965051ae6-mainContainer {
    margin-left: 0;
}

/* AutoMod message header */
._444920e965051ae6-compact._444920e965051ae6-usernameContainer,
/* AutoMod notice header */
._444920e965051ae6-compact._444920e965051ae6-usernameContainer {
    margin-left: var(--compactpp-header-margin-left) !important;
}

/* AutoMod message timestamp */
._444920e965051ae6-compact._444920e965051ae6-mainContainer .c19a557985eb7793-timestamp,
/* AutoMod notice timestamp */
._444920e965051ae6-compact._444920e965051ae6-mainContainer .c19a557985eb7793-timestamp {
    flex-shrink: 0;
}

/* AutoMod message username container */
._444920e965051ae6-compact._444920e965051ae6-usernameContainer > :nth-child(2),
/* AutoMod notice username container */
._444920e965051ae6-compact._444920e965051ae6-usernameContainer > :nth-child(2) {
    margin-left: 5px;
    overflow: hidden;
}

/* AutoMod message username container on hover */
.mouse-mode.full-motion ._444920e965051ae6-compact._444920e965051ae6-usernameContainer > :nth-child(2):hover {
    z-index: 2;
}

/* AutoMod message username */
.c19a557985eb7793-compact ._444920e965051ae6-username,
/* AutoMod notice username */
.c19a557985eb7793-compact ._444920e965051ae6-username {
    font-weight: 500;
    margin-right: 0;
    text-overflow: ellipsis;
    overflow: hidden;
}

/* AutoMod message tag */
._444920e965051ae6-compact._444920e965051ae6-usernameContainer > :nth-child(2) > * > :nth-child(1),
/* AutoMod notice tag */
._444920e965051ae6-compact._444920e965051ae6-usernameContainer > :nth-child(2) > * > :nth-child(1) {
    order: 1;
}

/* AutoMod message action */
._444920e965051ae6-compact._444920e965051ae6-usernameContainer > :nth-child(2) > * > :nth-child(3) {
    display: none !important;
}

/* AutoMod message header flex container */
.c19a557985eb7793-compact ._444920e965051ae6-spanCorrection,
/* AutoMod notice header flex container */
.c19a557985eb7793-compact ._444920e965051ae6-spanCorrection {
    flex-wrap: unset;
}

/* AutoMod message content */
.c19a557985eb7793-compact .c19a557985eb7793-contents .c19a557985eb7793-messageContent:has(> div > ._444920e965051ae6-compact._444920e965051ae6-mainContainer),
/* AutoMod notice content */
.c19a557985eb7793-compact .c19a557985eb7793-contents .c19a557985eb7793-messageContent:has(> div > ._444920e965051ae6-compact._444920e965051ae6-mainContainer) {
    margin-left: 0;
}

/* AutoMod referenced message container */
._444920e965051ae6-compact._444920e965051ae6-messageContent {
    padding-left: 0;
}

/* AutoMod referenced message */
.c19a557985eb7793-compact ._44c9ad8d149f0821-messageContainer {
    margin-left: 0;
}

/* AutoMod referenced message content */
.c19a557985eb7793-compact ._44c9ad8d149f0821-messageContainer .c19a557985eb7793-messageContent {
    margin-left: calc(var(--compactpp-header-width) + var(--compactpp-header-margin-right));
}

/* AutoMod notice content container */
._444920e965051ae6-compact._444920e965051ae6-content {
    align-items: unset;
}

/* AutoMod notice embed */
._444920e965051ae6-compact._444920e965051ae6-embedCard {
    margin-top: 0;
    margin-bottom: 0;
}

/* Message reply container */
.c19a557985eb7793-compact .c19a557985eb7793-repliedMessage {
    margin-left: calc(var(--compactpp-header-margin-left) + var(--compactpp-reply-link-line-offset));
}

/* Vencord UserMessagesPronouns plugin: Reply pronouns */
.c19a557985eb7793-compact .c19a557985eb7793-repliedMessage .c19a557985eb7793-timestamp {
    margin-left: 0;
}

& when (@minimize-replies = 1) {
    /* Reply username */
    .c19a557985eb7793-compact .c19a557985eb7793-repliedMessage .c19a557985eb7793-username,
    /* Reply preview */
    .c19a557985eb7793-compact .c19a557985eb7793-repliedTextPreview,
    /* Reply icon */
    .c19a557985eb7793-compact .repliedTextContentIcon_da8b30 {
        opacity: 0;
        transition: 0.2s;
    }

    /* Reply username on message hover */
    .c19a557985eb7793-compact._5126c0cd07f243a0-message:hover .c19a557985eb7793-repliedTextPreview,
    /* Reply preview on message hover */
    .c19a557985eb7793-compact._5126c0cd07f243a0-message:hover .c19a557985eb7793-repliedMessage .c19a557985eb7793-username,
    /* Reply icon on message hover */
    .c19a557985eb7793-compact._5126c0cd07f243a0-message:hover .repliedTextContentIcon_da8b30 {
        opacity: 1;
    }
}

/* Message thread link line next to the message content */
.c19a557985eb7793-compact.c19a557985eb7793-hasThread .c19a557985eb7793-contents::before {
    display: none;
}

/* Message thread link line next to the message embed container */
.c19a557985eb7793-compact ._9271d23503a01b50-spine {
    display: none;
}

/* Message thread embed */
.c19a557985eb7793-compact ._9271d23503a01b50-container {
    margin-top: 0;
}

/* Edit input */
.c19a557985eb7793-compact ._5126c0cd07f243a0-channelTextArea {
    width: unset;
}

/* Vencord MessageLatency plugin: Latency indicator */
.c19a557985eb7793-compact .c19a557985eb7793-headerText > svg {
    flex-shrink: 0;
    margin-right: 5px !important;
}

/* Vencord UserMessagesPronouns plugin: Message pronouns */
.c19a557985eb7793-compact .c19a557985eb7793-headerText .c19a557985eb7793-timestamp {
    width: var(--compactpp-pronoundb-pronouns-width);
    max-width: fit-content;
    flex-grow: 1;
    flex-shrink: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    order: 1;
    margin-left: -2px;
    margin-right: 4px;
}

/* Vencord UserMessagesPronouns plugin: Message pronouns on hover */
.c19a557985eb7793-compact .c19a557985eb7793-headerText .c19a557985eb7793-timestamp:hover {
    width: unset;
}

/* Vencord PlatformIndicators plugin: Message platform indicator */
.c19a557985eb7793-compact .vc-platform-indicator {
    margin-left: 0 !important;
    position: static !important;
    margin-right: 5px;
}

}
