Dola (Cici) optimized & customizable for wide screens

Dola (Cici) website interface is reworked to offer a cleaner and comfortable experience on desktop, with visual adjustments that adapt to your needs.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

/* ==UserStyle==
@name           Dola (Cici) optimized & customizable for wide screens
@description    Dola (Cici) website interface is reworked to offer a cleaner and comfortable experience on desktop, with visual adjustments that adapt to your needs.
@version        1.0.13
@author         BreatFR (https://breat.fr)
@namespace      https://breat.fr
@homepageURL    https://usercssjs.breat.fr/d/dola-cici
@supportURL     https://discord.gg/W7FKesJ9aG
@license        AGPL-3.0-or-later; https://www.gnu.org/licenses/agpl-3.0.txt
@preprocessor   stylus

@var    select      customciciface      "Custom Cici face"                      {
    "Large Cici face": "cmlgciciface",
    "Small Cici face": "cmsmciciface",
    "Hidden": "nocmciciface"
}
@var    text        cmcicifaceurl       "Custom Cici face URL"                  '"https://gitlab.com/breatfr/cici/-/raw/main/docs/cici-icon.png"'
@var    text        cmciciavatarcorner  "Custom Cici avatar corner"             22%
@var    text        fontsize            "Custom font size"                      1.2rem
@var    checkbox    chatmode            "Chat mode (Require Our avatar URL)"    0
@var    text        ouravatarurl        "Our avatar URL (Require Chat mode)"    '"https://pbs.twimg.com/profile_images/1676568728585007105/9DebaQOc_400x400.jpg"'
@var    checkbox    darkmode            "Dark mode"                             1
@var    checkbox    hidedownload        "Hide download app"                     0
@var    checkbox    widemode            "Wide mode"                             1
==/UserStyle== */

/* ==Credits==
Website         https://breat.fr
Bluesky			https://bsky.app/profile/breatfroff.bsky.social
facebook        https://www.facebook.com/breatfroff
mastodon        https://mastodon.social/@breat_fr
telegram        https://t.me/breatfr
vk              https://vk.com/breatfroff
X (twitter)     https://x.com/breatfroff
==/Credits== */

/* ==Support==
brave Creators  https://publishers.basicattentiontoken.org/c/breatfr
Buy me a coffee https://buymeacoffee.com/breatfr
ko-fi           https://ko-fi.com/breatfr
PayPal          https://paypal.me/breat
==/Support== */

@-moz-document url-prefix("https://www.dola.com/chat/") {
/* ======================================================
    Chat
====================================================== */
    /* Versions */
    :root {
        --themeversion: 'Theme v1.0.13 by BreatFR (https://breat.fr)';
        --install: ' usercssjs.breat.fr/d/dola-cici';
		--help: ' discord.gg/W7FKesJ9aG';
        --support1: ' ko-fi.com/breatfr ';
        --support2: ' paypal.me/breat';

        --chat-area-max-width: 100%;
        --self-message-box-max-width: 100%;
        --chat-bg-color: #212121;
        --color-neutral-100: #cbcbcb;
        --dot-flashing-from: #cbcbcb;
        --dot-flashing-to: rgba(203, 203, 203, 0.8);
        --s-color-bg-primary: #2f2f2f;
        --s-color-bg-secondary: #2f2f2f;
        --s-color-bg-tertiary: #171717;
        --s-color-bg-quaternary: #2f2f2f;
        --s-color-bg-trans: #2f2f2f;
        --s-color-bg-trans-primary: rgba(126, 148, 254, 0.2);
        --s-color-brand-primary-default: #7e94fe;
        --s-color-text-primary: #cbcbcb;
        --s-color-text-secondary: #cbcbcb;
        --s-color-text-tertiary: #cbcbcb;
        --s-color-text-quaternary: #cbcbcb;
    }

    @media (min-width: 900px) {
		main[data-container-name="main"]::after,
		main[data-container-name="main"]::before {
            background: linear-gradient(88.55deg, rgb(139, 109, 255) 22.43%, rgb(254, 132, 132) 92.28%);
            background-clip: text;
            color: transparent;
			display: block;
            font-family: inherit;
            font-size: 1.2rem;
			line-height: calc(60px / 2);
            pointer-events: none;
            position: absolute;
            text-align: center;
			top: 0;
			transition: left 1s ease;
            width: auto;
			white-space: pre-line;
			z-index: 9999;
		}
		main[data-container-name="main"]::after {
			content: var(--themeversion) '\A Help: ' url("https://code.breat.fr/share/images/icons/discord.png") var(--help);
			left: 15%;
		}

		main[data-container-name="main"]::before {
			content: 'Install: ' url("https://code.breat.fr/share/images/icons/breat.fr.png") var(--install) '\ASupport me: ' url("https://code.breat.fr/share/images/icons/ko-fi.png") var(--support1) url("https://code.breat.fr/share/images/icons/paypal.png") var(--support2);
			right: 15%;
		}
	}

    /* Custom font size */
    .skill-bar-button *,
    [class*="type-and-tag-filter-wrapper-"] *,
    [data-testid="bot_discover_recommend_list"] *,
    [data-testid="carousel-item"] *,
    [data-testid="chat_input_input"] *,
    [data-testid="guidance_groups_skill_card"] *,
    [data-testid="union_message"] *,
    input,
    textarea,
    ::placeholder {
        font-size: fontsize !important;
        line-height: 1.5 !important;
        text-overflow: initial !important;
    }

    if (customciciface=="cmlgciciface") {
        [data-testid="guidance_panel"]::before {
            aspect-ratio: 1 / 1;
            background: url(cmcicifaceurl) no-repeat center center / cover;
            border-radius: cmciciavatarcorner;
            content: "";
            display: inline-block;
            height: 100%;
            margin: auto;
            max-height: 256px;
            min-height: 100px;
            width: auto;
        }
        [data-testid="chat_siderbar"] img[style="width: 36px; height: 36px;"] {
            aspect-ratio: 1 / 1;
            background: url(cmcicifaceurl) no-repeat center center / cover;
            border-radius: cmciciavatarcorner;
            height: 0;
            padding-left: 36px;
            padding-top: 36px;
            width: 0;
        }
    }

    if (customciciface=="cmsmciciface") {
        [data-testid="guidance_panel"] > div:nth-of-type(1) > div::before {
            aspect-ratio: 1 / 1;
            align-self: center;
            background: url(cmcicifaceurl) no-repeat center center / cover;
            border-radius: cmciciavatarcorner;
            content: "";
            display: inline-block;
            height: 100%;
            margin: auto;
            margin-right: 0.5em;
            max-height: 256px;
            min-height: 100px;
            width: auto;
        }
        [data-testid="chat_siderbar"] img[style="width: 36px; height: 36px;"] {
            aspect-ratio: 1 / 1;
            background: url(cmcicifaceurl) no-repeat center center / cover;
            border-radius: cmciciavatarcorner;
            height: 0;
            padding-left: 36px;
            padding-top: 36px;
            width: 0;
        }
        [data-testid="guidance_panel"] > div:nth-of-type(1) > div {
            align-items: center;
        }
    }
    if (customciciface=="nocmciciface") {
        [data-testid="guidance_panel"] > div:nth-of-type(1) > div::before {
            background: none;
            display: none;
        }
    }

    if chatmode && ouravatarurl {
        [data-testid="send_message"]::after {
            align-self: center;
            aspect-ratio: 1 / 1;
            background: url(ouravatarurl) no-repeat center center / cover;
            border-radius: 50%;
            content: "";
            display: inline-flex;
            height: 40px;
            margin-bottom: auto;
            margin-left: .5em;
            width: 40px;
        }

        [data-testid="receive_message"]::before {
            align-self: center;
            aspect-ratio: 1 / 1;
            background: url(cmcicifaceurl) no-repeat center center / cover;
            border-radius: 50%;
            content: "";
            display: inline-flex;
            height: 40px;
            margin-bottom: auto;
            margin-right: .5em;
            width: 40px;
        }
    }

    if darkmode {
        [data-testid="chat_siderbar"] {
            border-right: 1px solid #7e94fe !important;
        }
        [class*="send-message-box-content-"],
        [class*="send-message-box-content-coco-"] {
            background: rgba(50, 50, 50, 0.85);
            border-radius: 1.5rem;
        }

        body {
            color: var(--s-color-text-primary);
        }

        [class*="chat-input-container"] {
            box-shadow: rgba(126, 148, 254, 0.2) -2px -2px 2px 2px,
                        rgba(126, 148, 254, 0.2) -2px 2px 2px 2px,
                        rgba(0, 87, 255, 0.2) 2px -2px 2px 2px,
                        rgba(0, 87, 255, 0.2) 2px 2px 2px 2px;
        }
        [data-testid="create_conversation_button"] svg path,
        svg[class*="short-cut-"] path,
        svg[class*="short-cut-"] rect {
            stroke: #7e94fe;
        }
        [data-testid="scroll_view"] svg path {
            stroke: var(--s-color-text-primary);
        }
        .semi-space svg path {
            fill: var(--s-color-text-primary);
        }

        [class*="thread-creation-"] {
            color: var(--s-color-brand-primary-default, #7e94fe);
        }

        [class*="chat-input-"],
        [class*="semi-input-textarea-wrapper"],
        [data-testid="chat_input_input"] {
            background: var(--s-color-bg-primary) !important;
            border: 0 !important;
            border-radius: 12px !important;
        }
        [data-testid="chat_input_send_button"]:disabled {
            background-color: grey;
        }

        [class*="section-item-"]:not([class*="active-"], [class*="section-item-title-"]):hover,
        [data-testid="guidance_groups"] > div:hover,
        .skill-bar-button > div:hover {
            background: var(--s-color-bg-trans-primary) !important;
        }

        [class*="to-bottom-button-"] {
            background: var(--s-color-bg-tertiary);
        }

        ::selection {
            background: --s-color-bg-trans-primary;
        }

        /* Dots when Cici is writing */
        [data-testid="message_loading"] [class*="dot-flashing-"],
        [data-testid="message_loading"] [class*="dot-flashing-"]::after,
        [data-testid="message_loading"] [class*="dot-flashing-"]::before {
            background-color: transparent !important;
            color: rgba(203, 203, 203, 0.8) !important;
        }

        [class*="header-P"] {
            background: transparent;
        }
    }

    if hidedownload {
        [data-testid="chat_header_download_client"],
        [data-testid="chat_header_menu"] > div:nth-of-type(1),
        [data-testid="chat_header_menu"] > button:nth-of-type(1),
        [data-testid="chat_header_menu"] > button:nth-of-type(2),
        [data-testid="chat_header_menu"] > button:nth-of-type(3),
        [data-testid="chat_siderbar"] > div > div:last-child > [data-testid="sidebar_download_desktop_btn"],
        [data-testid="chat_siderbar"] > div > div:last-child > div > div:nth-of-type(2) > div,
        [data-testid="login_content"] > div > div > div:nth-of-type(1) {
            display: none;
        }
    }

    if widemode {
        /* Wide chat */
        [style*="--right-side-width: 0px; --center-content-max-width:"] {
            --center-content-max-width: 100% !important;
        }

        /* Cici's face on home page */
        @media (max-width: 600px) {
            [class*="guidance-view-layout-"] {
                display: flex;
                flex-direction: column;
                height: calc(100vh - 216px);
                justify-content: center;
                padding: 10px 0;
            }
        }

        /* Full code block */
        [class*="code-block-element-"] [class*="code-area-"] [class*="content-"] {
            max-height: fit-content !important;
        }
        [class*="code-block-element-"] [class*="code-area-"] [class*="mask-"] {
            background: transparent !important;
        }

        /* Full attachment file name */
        [data-testid="attachment_file_item"] {
            min-width: 50% !important;
        }

        /* Images sent by us */
        [data-testid="message_content"] [class*="container-"] {
            margin-left: auto;
        }
        [data-testid="mdbox_image"] {
            border: 1px solid #7e94fe !important;
            border-radius: 12px;
        }

        /* Chat "bubbles" */
        [class*="message-box__reverse-"] {
            margin-left: auto;
        }

		[data-testid="chat_footer_skill_bar"] > div > div {
			display: flex;
			justify-content: space-evenly;
		}
		[data-testid="chat_footer_skill_bar"],
		[data-testid="chat_footer_skill_bar"] > div > div,
        [data-testid="chat_input"] > div,
 		[class*="chat-input-"] {
			max-width: 100% !important;
			width: 100% !important;
        }

		[data-testid="upload_file_button"] {
			margin: 0 !important;
			position: absolute;
			top: .5em !important;
			right: 1em !important;
			z-index: 10;
		}

        /* Avatar */
        .semi-avatar img {
            background-color: transparent !important;
        }
        [data-testid="chat_header_avatar_button"] {
            height: 36px !important;
            width: 36px !important;
        }

        /* Help and comments */
        [data-testid="feedback_modal"] > div:nth-of-type(2) > div {
            width: 80% !important;
        }
    }
}

@-moz-document url-prefix("https://www.dola.com/chat/bot/discover") {
/* ========================================================
    Bots
======================================================== */
    if darkmode {
        [class*="containerWrapper"] [class*="panelWrapper"] {
            background: var(--chat-bg-color);
        }

        [data-testid="bot_discover_search"] > div {
            background: var(--s-color-bg-secondary) !important;
        }

        [class*="newBotItem-"]:hover {
            background: var(--s-color-bg-trans-primary)
        }
    }

    if widemode {
        [class*="newBotItem-"] {
            height: auto;
            max-width: 100%;
        }
    }
}

@-moz-document url-prefix("https://www.dola.com/chat/collection") {
/* ========================================================
    Bookmarks
======================================================== */
    if darkmode {
        .collection-guide-popup-container,
        .collection-guide-popup-container div[data-testid="scroll_view"] {
            background: var(--chat-bg-color);
        }

        [data-testid="scroll_view"] div[class*="wrapper-"] > div:nth-of-type(2) > div > div:nth-of-type(1)::after {
            background: transparent;
        }
    }

    if widemode {
        [class*="type-and-tag-filter-wrapper-"] {
            margin-top: 3em;
        }

        [data-testid="scroll_view"],
        [data-testid="scroll_view"] > div {
            margin-top: 1em;
        }
    }
}

@-moz-document url-prefix("https://www.dola.com/chat/settings") {
/* ========================================================
    Settings
======================================================== */
    :root {
        --s-color-bg-trans: #2f2f2f;
        --s-color-bg-trans-primary: rgba(126, 148, 254, 0.2);
        --s-color-bg-primary: #212121;
        --s-color-text-primary: #cbcbcb;
        --s-color-text-secondary: #cbcbcb;
        --s-color-text-tertiary: #cbcbcb;
        --s-color-text-quaternary: #cbcbcb;
        --semi-color-text-0: #cbcbcb;
    }

    a {
        color: #cbcbcb;
    }
    .semi-dropdown-content {
        background: var(--s-color-bg-primary);
    }

    /* Custom font size */
    [class*="block-"] *,
    li * {
        font-size: fontsize !important;
        line-height: 1.5 !important;
        text-overflow: initial !important;
    }

	[class*="block-"] {
		max-width: 100%;
	}

    /* Dropdown language */
    .flow-dropdown-container > div > div {
        align-items: center;
        height: auto;
    }
    .semi-portal-inner {
        transform: translate(-67%, 0%) !important;
    }

    [data-testid="dropdown-menu-item"] p {
        display: inline-flex;
    }
    [data-testid="dropdown-menu-item"]:not(:first-child) p:nth-of-type(2)::before {
        content: "/";
        margin-left: .3em;
        margin-right: .3em;
    }
}

@-moz-document url-prefix("http://"), url-prefix("https://") {
/* ========================================================
    Browser plugin
======================================================== */
    /* Translated by Cici */
    if (customciciface=="cmlgciciface") || (customciciface=="cmsmciciface") {
        .__Cici_translate_translated_inject_node__:before {
            aspect-ratio: 1 / 1;
            background: url(cmcicifaceurl) no-repeat center center / cover;
            border-radius: cmciciavatarcorner;
            content: "";
            display: inline-block;
            height: 1em;
            margin: auto;
            margin-right: .25em;
            vertical-align: text-top;
            width: 1em;
        }
    }
    if (customciciface=="nocmciciface") {
        .__Cici_translate_translated_inject_node__:before {
            background: none;
            display: none;
        }
    }
    .__Cici_translate_translated_inject_node__ {
        box-shadow: rgba(126, 148, 254, 0.2) -2px -2px 2px 2px,
                    rgba(126, 148, 254, 0.2) -2px 2px 2px 2px,
                    rgba(0, 87, 255, 0.2) 2px -2px 2px 2px,
                    rgba(0, 87, 255, 0.2) 2px 2px 2px 2px;
        border-radius: 12px;
        padding: .25em;
        width: fit-content;
    }
}