Modern Design and Dark Theme for SoundCloud

A modern design and dark theme for SoundCloud.com, inspired by the SoundCloud Android app.

// ==UserScript==
// @name         Modern Design and Dark Theme for SoundCloud
// @version      0.23.0
// @description  A modern design and dark theme for SoundCloud.com, inspired by the SoundCloud Android app.
// @author       jottocraft
// @match        *://soundcloud.com/*
// @grant        none
// @license      MIT
// @namespace    https://greasyfork.org/users/154395
// ==/UserScript==

(function () {
    "use strict";

    // Makes a SoundCloud menu dark using the built-in styles
    function setMenuDarkMode(node) {
        if (document.documentElement.classList.contains("jtc-sc-dark")) {
            node.classList.remove("m-light");
            node.classList.add("m-dark");
        } else {
            node.classList.remove("m-dark");
            node.classList.add("m-light");
        }
    }

    // Observe DOM mutations
    const observer = new MutationObserver((mutations) => {
        mutations.forEach(({ addedNodes }) => {
            addedNodes.forEach((node) => {
                // Add toggle dark button
                if (
                    node.nodeType === 1 &&
                    node.classList.contains("headerMenu") &&
                    node.classList.contains("moreMenu")
                ) {
                    node.insertAdjacentHTML(
                        "afterBegin",
                        `<ul class="headerMenu__list sc-list-nostyle"><li><a id="jtcToggle" onmousedown="event.preventDefault();" onclick="jtcScToggleDark(); event.preventDefault();" class="headerMenu__link moreMenu__link" href="#">Toggle dark theme</a></li></ul>`
                    );
                }

                // Enable built-in dark menus
                if (
                    node.nodeType === 1 &&
                    (node.classList.contains("m-light") ||
                        node.classList.contains("m-dark"))
                ) {
                    setMenuDarkMode(node);
                }
            });
        });
    });

    // Starts the monitoring
    observer.observe(document.documentElement, {
        childList: true,
        subtree: true
    });

    // Load fonts
    const scSans500 = new FontFace(
        "SoundCloudSans",
        "url(https://cdn.jottocraft.com/userscripts/modern-sc/assets/soundcloud-sans-500.woff2)",
        { style: "normal", stretch: "normal", weight: 500 }
    );
    const scSans700 = new FontFace(
        "SoundCloudSans",
        "url(https://cdn.jottocraft.com/userscripts/modern-sc/assets/soundcloud-sans-700.woff2)",
        { style: "normal", stretch: "normal", weight: 700 }
    );
    const scSans900 = new FontFace(
        "SoundCloudSans",
        "url(https://cdn.jottocraft.com/userscripts/modern-sc/assets/soundcloud-sans-900.woff2)",
        { style: "normal", stretch: "normal", weight: 900 }
    );
    scSans500.load().then(() => document.fonts.add(scSans500));
    scSans700.load().then(() => document.fonts.add(scSans700));
    scSans900.load().then(() => document.fonts.add(scSans900));

    // Toggle dark mode
    window.jtcScToggleDark = function () {
        const isDark = document.documentElement.classList.toggle("jtc-sc-dark");
        window.localStorage.setItem("jtc-sc-isDark", isDark);
        jtcScApplyDark();
    };

    // Apply dark mode
    function jtcScApplyDark() {
        // Apply dark mode to menus
        document
            .querySelectorAll(".m-light, .m-dark")
            .forEach((node) => setMenuDarkMode(node));
    }

    // Set dark mode on load
    const darkPref = window.localStorage.getItem("jtc-sc-isDark");
    const darkSys = window.matchMedia("(prefers-color-scheme: dark)").matches;
    const useDarkMode = darkPref !== null ? darkPref === "true" : darkSys;
    if (useDarkMode) {
        document.documentElement.classList.add("jtc-sc-dark");
        jtcScApplyDark();
    }

    // Insert CSS at the very end of the document
    // so it can safely override SoundCloud styles without !important.
    function addCss(cssString) {
        const newCss = document.createElement("style");
        newCss.type = "text/css";
        newCss.innerHTML = cssString;
        document.body.appendChild(newCss);
    }

    addCss(`
:root {
    --jtc-sc-root-text: #000000;
    --jtc-sc-bg: #ffffff;
    --jtc-sc-header: #000000;
    --jtc-sc-header-active: #080808;
    --jtc-sc-header-border: #111;
    --jtc-sc-border-light: #f2f2f2;
    --jtc-sc-tag-bg: #f3f3f3;
    --jtc-sc-tag-hover-bg: #eaeaea;
    --jtc-sc-light-text: #939393;
    --jtc-sc-btn-main: #000000;
    --jtc-sc-btn-main-text: #ffffff;
    --jtc-sc-btn: #f0f0f0;
    --jtc-sc-tile: #fbfbfb;
    --jtc-sc-btn-hover: #e6e6e6;
    --jtc-sc-text-verylight: #b1b1b1;
    --jtc-sc-almost-root-text: #3b3b3b;
    --jtc-sc-header-search: #f3f3f3;
    --jtc-sc-border: #d5d5d5;
    --jtc-sc-whiteout: #ffffffe6;
    --jtc-sc-block: #f3f3f3;
    --jtc-sc-bar: #ffffff;
    --jtc-sc-popup: #ffffff;
}

:root.jtc-sc-dark {
    --jtc-sc-root-text: #ffffff;
    --jtc-sc-bg: #000000;
    --jtc-sc-header: #111;
    --jtc-sc-header-active: #0c0c0c;
    --jtc-sc-header-border: #1a1a1a;
    --jtc-sc-border-light: #212121;
    --jtc-sc-tag-bg: #262626;
    --jtc-sc-tag-hover-bg: #424242;
    --jtc-sc-light-text: #bfbfbf;
    --jtc-sc-btn-main: #ffffff;
    --jtc-sc-btn-main-text: #000000;
    --jtc-sc-btn: #272727;
    --jtc-sc-tile: #0a0a0a;
    --jtc-sc-btn-hover: #373737;
    --jtc-sc-text-verylight: #707070;
    --jtc-sc-almost-root-text: #e8e8e8;
    --jtc-sc-header-search: #242424;
    --jtc-sc-border: #585858;
    --jtc-sc-whiteout: #000000e6;
    --jtc-sc-block: #101010;
    --jtc-sc-bar: #282828;
    --jtc-sc-popup: #181818;
}
`);

    addCss(
        `
:root.jtc-sc-dark {
  color-scheme: dark;
}

body {
  color: var(--jtc-sc-root-text);
  background: var(--jtc-sc-bg);
}

body.sc-classic,
.sc-font {
  font-family: SoundCloudSans, system-ui, -apple-system, Segoe UI, Roboto,
    Lucida Grande, sans-serif, Apple Color Emoji, Segoe UI EmojiSoundCloudSans,
    system-ui, -apple-system, Segoe UI, Roboto, Lucida Grande, sans-serif,
    Apple Color Emoji, Segoe UI Emoji;
}

.sc-classic .sidebarHeader__title,
.sc-text,
button,
input,
select,
textarea {
  color: var(--jtc-sc-root-text);
}

.sc-classic .header {
  background-color: var(--jtc-sc-header);
}

.sc-classic .sound__soundActions {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .header {
  font-size: 14px;
  font-weight: 400;
  font-family: inherit;
}

.sc-input {
  font-family: inherit;
}

.sc-classic .insightsSidebarModule__title {
  color: var(--jtc-sc-root-text);
}

.sc-classic .headerMenu,
.sc-font-light,
.sc-type-light,
.sc-classic .spotlightTitle,
.sc-classic .userstream__header {
  font-weight: 400;
  font-family: inherit;
}

.sc-classic .header > li > a:focus,
.sc-classic .header__navMenu > li > a.selected {
  text-decoration: underline;
  background-color: var(--jtc-sc-header-active);
}

.sc-type-h1,
.sc-type-h2,
.sc-type-h3,
.sc-type-h4,
.sc-type-h5,
.sc-type-h6,
h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: inherit;
}

.sc-type-large {
  font-size: 20px;
  font-weight: 400;
}

.sc-type-light:not(.systemPlaylistBannerItem) {
  color: var(--jtc-sc-light-text):
}

.sc-classic .profileMenu.m-dark .headerMenu__link:after {
  filter: brightness(100) saturate(0);
}

.sc-classic .profileMenu__insights:after {
  background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPHBhdGggZmlsbD0icmdiKDUxLCA1MSwgNTEpIiBkPSJNMyA2LjVjMC0uMjc2LjIxNi0uNS40OTUtLjVoMi4wMWMuMjczIDAgLjQ5NS4yMjkuNDk1LjV2MTFjMCAuMjc2LS4yMTYuNS0uNDk1LjVoLTIuMDFDMy4yMjIgMTggMyAxNy43NzEgMyAxNy41di0xMXptNy00LjAwNGMwLS4yNzQuMjE2LS40OTYuNDk1LS40OTZoMi4wMWMuMjczIDAgLjQ5NS4yMjYuNDk1LjQ5NnYxNS4wMDhjMCAuMjc0LS4yMTYuNDk2LS40OTUuNDk2aC0yLjAxYy0uMjczIDAtLjQ5NS0uMjI2LS40OTUtLjQ5NlYyLjQ5NnptNyA3LjAxNGMwLS4yODIuMjE2LS41MS40OTUtLjUxaDIuMDFjLjI3MyAwIC40OTUuMjIyLjQ5NS41MXY3Ljk4YzAgLjI4Mi0uMjE2LjUxLS40OTUuNTFoLTIuMDFjLS4yNzMgMC0uNDk1LS4yMjItLjQ5NS0uNTFWOS41MXpNMi41IDIwaDE5Yy4yNzYgMCAuNS4yMjQuNS41djFjMCAuMjc2LS4yMjQuNS0uNS41aC0xOWMtLjI3NiAwLS41LS4yMjQtLjUtLjV2LTFjMC0uMjc2LjIyNC0uNS41LS41eiIvPgogICAgPC9nPgo8L3N2Zz4K);
  background-size: 16px;
  background-position: 50%;
}

:root.jtc-sc-dark .sc-classic .banner.m-alert {
  background-color: #290c0c;
}

.sc-classic .notificationBadge--unread {
  background-color: var(--jtc-sc-tile);
}

:root.jtc-sc-dark .sc-classic .featureHeader__closeButton, :root.jtc-sc-dark .sc-classic .g-button-remove {
  filter: invert(1) brightness(2);
}

:root.jtc-sc-dark .sc-classic .loading {
  filter: invert(1);
}

:root:not(.jtc-sc-dark) .systemPlaylistBannerItem .sc-button-icon:before {
  filter: brightness(0) grayscale(1);
}

.sc-classic .header__navMenu > li > a {
  border-color: var(--jtc-sc-header-border);
}

.sc-border-light,
.sc-border-light-top,
.sc-border-light-right,
.sc-border-light-bottom,
.sc-border-light-left {
  border-color: var(--jtc-sc-border-light);
}

.sc-classic .listenContent__inner {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .l-fluid-fixed .l-main,
.sc-classic .sidebarHeader {
  border: none;
}

.sc-classic .headerMenu__link:not(.m-highlight),
.sc-classic .headerMenu__link:not(.m-highlight):focus,
.sc-classic .headerMenu__link:not(.m-highlight):hover {
  color: var(--jtc-sc-root-text);
}

.sc-classic .l-fixed-top-one-column > .l-top {
  background: var(--jtc-sc-bg);
}

.sc-classic .sidebarHeader,
.sc-classic .sidebarHeader__more {
  font-weight: 400;
}

.sidebarHeader__icon {
  filter: brightness(0) grayscale(1);
}

.sc-classic .textfield__clear:after,
.sc-classic .textfield__clear:before {
  border-color: var(--jtc-sc-root-text);
}

.sc-classic .textfield__clear {
  background-color: var(--jtc-sc-border);
}

:root.jtc-sc-dark .sidebarHeader__icon {
  filter: brightness(100) grayscale(1);
}

.soundBadge__artwork .sc-artwork {
  border-radius: 4px;
}

.sc-classic .infoStats__value {
  color: var(--jtc-sc-almost-root-text);
}

.listenNetworkInfo__imageLink .sc-artwork {
  border-radius: 6px;
}

.sc-classic .createPlaylistSuggestion__addContainer {
  background: linear-gradient(
    90deg,
    hsl(0deg 0% 100% / 0%),
    var(--jtc-sc-popup) 20px
  );
}

.playableTile__artwork {
  border-radius: 6px;
  overflow: hidden;
}

.sc-button-dropdown:focus:not(.sc-button-disabled):not(:disabled) {
  box-shadow: 0 0 0 4px var(--jtc-sc-border);
}

:root.jtc-sc-dark .soundBadge.playlist .soundBadge__artwork  {
  filter: invert(1);
}

:root.jtc-sc-dark .soundBadge.playlist .soundBadge__artwork > * {
  filter: invert(1);
}

:root.jtc-sc-dark
  .sc-classic
  .emptyNetworkPage.emptyReposts
  .emptyNetworkPage__image,
:root.jtc-sc-dark
  .sc-classic
  .emptyNetworkPage.emptyAlbums
  .emptyNetworkPage__image,
:root.jtc-sc-dark
  .sc-classic
  .emptyNetworkPage.emptyTracks
  .emptyNetworkPage__image {
  filter: invert(1);
}

:root.jtc-sc-dark .sc-button-medium.sc-button-like:before {
  filter: invert(1);
}

.sc-classic .showSpotlightUpsellBanner.spotlightUpsellBanner {
  border-color: var(--jtc-sc-border);
}

.sound__coverArt {
  border-radius: 6px;
  overflow: hidden;
}

.selectionPlaylistBanner__artwork {
  border-radius: 8px;
  overflow: hidden;
}

.sc-classic .g-modal-section {
  background-color: var(--jtc-sc-popup);
}

.sc-classic .readMoreTile__countWrapper {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .playbackTimeline {
  font-size: 14px;
}

.sc-classic .fullHero__artwork {
  border-radius: 10px;
  overflow: hidden;
}

.sc-tag,
.sc-tag:visited {
  background-color: var(--jtc-sc-tag-bg);
  color: var(--jtc-sc-root-text);
  font-weight: 400;
  border: none;
}

.sc-tag-small,
.sc-tag-small:visited {
  height: 18px;
  padding: 0 8px;
  line-height: 18px;
  font-size: 14px;
}

.sc-tag:hover {
  background-color: var(--jtc-sc-tag-hover-bg);
  color: var(--jtc-sc-root-text);
}

.sc-classic .compactTrackListItem,
.sc-classic .compactTrackList {
  border: none;
}

.sc-classic .compactTrackListItem {
  height: 32px;
}

.sc-classic .compactTrackListItem__image {
  margin: 0 5px 0 0;
}

.sc-classic .listenLogin {
  background-color: var(--jtc-sc-tile);
}

.sc-classic .editTrackItem.m-active, .sc-classic .editTrackItem.m-hover {
  background-color: var(--jtc-sc-tile);
}

.sc-classic .editTrackItem__additional {
  background: linear-gradient(90deg,transparent,var(--jtc-sc-popup) 17px);
}

.sc-classic .editTrackItem.m-active .editTrackItem__additional, .sc-classic .editTrackItem.m-hover .editTrackItem__additional {
  background: linear-gradient(90deg,transparent,var(--jtc-sc-tile) 17px);
}

.sc-classic .soundTitle__uploadTime {
  color: var(--jtc-sc-light-text);
  font-weight: 400;
}

.sc-classic .g-tabs,
.infoStats__stat,
.sc-border-light-top.g-box-full,
.sc-classic .mixedSelectionModule,
.sc-classic .l-footer.standard {
  border: none;
  font-family: inherit;
}

.sc-classic .g-type-shrinkwrap-block,
.sc-classic .g-type-shrinkwrap-block:hover,
.sc-classic .g-type-shrinkwrap-block:visited,
.sc-classic .g-type-shrinkwrap-inline,
.sc-classic .g-type-shrinkwrap-inline:hover,
.sc-classic .g-type-shrinkwrap-inline:visited {
  background-color: #000000b3;
  backdrop-filter: blur(10px);
  border-radius: 2px;
}

.sc-classic .g-type-shrinkwrap-large-primary,
.sc-classic .g-type-shrinkwrap-primary,
.sc-classic .g-type-shrinkwrap-large-secondary,
.sc-classic .g-type-shrinkwrap-large-secondary:visited,
.sc-classic .g-type-shrinkwrap-secondary,
.sc-classic .g-type-shrinkwrap-secondary:visited {
  font-weight: 400;
}

.sc-classic .g-tabs-link.active {
  font-weight: 700;
}

.sc-button$BTN_EXCLUDE {
  border: none;
  background-color: var(--jtc-sc-btn);
  color: var(--jtc-sc-root-text);
  font-weight: 400;
  border-radius: 5px;
  font-family: inherit;
}

.moreActions .sc-button:not(:hover)$BTN_EXCLUDE {
  background-color: transparent;
}

.sc-button:hover$BTN_EXCLUDE {
  background-color: var(--jtc-sc-btn-hover);
}

.sc-classic .recipientChooser .tokenInput__wrapper {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .currentPlan__planUpsell,
.sc-classic .currentPlan__planContainer {
  background-color: var(--jtc-sc-bg);
}

:root.jtc-sc-dark
  .sc-button:not(.sc-button-selected):not(.sc-button-active):not(
    .sc-button-medium.sc-button-like
  ):not(.sc-button-follow)$BTN_EXCLUDE:before {
  filter: brightness(100) grayscale(1);
}

.trackItem__image .sc-artwork {
  border-radius: 4px;
}

.sc-classic .tokenInput__token {
  background-color: var(--jtc-sc-btn);
}

.sc-button:not(.sc-button-more).sc-button-active$BTN_EXCLUDE,
.sc-button:not(.sc-button-more).sc-button-selected$BTN_EXCLUDE {
  background-color: #f50;
  color: white;
}

.sc-button.sc-button-more.sc-button-active$BTN_EXCLUDE,
.sc-button.sc-button-more.sc-button-selected$BTN_EXCLUDE {
  background-color: var(--jtc-sc-btn-hover);
}

.sc-button-active:not(.sc-button-more)$BTN_EXCLUDE:before,
.sc-button-selected:not(.sc-button-more)$BTN_EXCLUDE:before {
  filter: brightness(100) grayscale(1);
}

.sc-button.sc-button-follow:not(.sc-button-selected):not(
    .sc-button-active
  )$BTN_EXCLUDE {
  background-color: var(--jtc-sc-btn-main);
  color: var(--jtc-sc-btn-main-text);
}

.sc-button.sc-button-follow:not(.sc-button-selected):not(
    .sc-button-active
  )$BTN_EXCLUDE:before {
  filter: brightness(100) grayscale(1);
}

:root.jtc-sc-dark
  .sc-button.sc-button-follow:not(.sc-button-selected):not(
    .sc-button-active
  )$BTN_EXCLUDE:before {
  filter: brightness(0) grayscale(1);
}

a.sc-link-dark {
  color: var(--jtc-sc-root-text);
}

a.sc-link-light {
  color: var(--jtc-sc-light-text);
}

.sc-type-large,
.sc-classic .mixedSelectionModule__titleText {
  color: var(--jtc-sc-root-text);
  font-weight: 700;
}

.sc-classic .listenEngagement,
.sc-classic .l-listen-wrapper .l-about-rows,
.sc-clearfix.sc-border-light-bottom {
  border: none;
  box-shadow: none;
}

.sc-type-medium,
.sc-type-small,
.sc-ministats,
.sc-buylink-medium {
  font-weight: 400;
  font-family: inherit;
}

a.sc-link-verylight {
  color: var(--jtc-sc-text-verylight);
}

.sc-classic .soundBadge__additional {
  background: linear-gradient(
    90deg,
    hsl(0deg 0% 100% / 0%),
    var(--jtc-sc-bg) 17px
  );
}

.sc-classic
  .truncatedAudioInfo.m-overflow.m-collapsed
  .truncatedAudioInfo__wrapper:after {
  background: linear-gradient(hsla(0, 0%, 100%, 0), var(--jtc-sc-bg));
}

.sc-classic .g-tabs-link:not(.g-tabs-link.active),
.sc-classic .g-tabs-link:visited:not(.g-tabs-link.active),
.sc-buylink {
  color: var(--jtc-sc-almost-root-text);
}

:root.jtc-sc-dark .backgroundGradient {
  filter: brightness(0.4) saturate(1.6);
}

.sc-classic
  .truncatedUserDescription.m-overflow.m-collapsed
  .truncatedUserDescription__wrapper:after {
  background: linear-gradient(hsla(0, 0%, 100%, 0), var(--jtc-sc-bg));
}

.sc-classic .dropbar__content {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .image__whiteOutline .image__full {
  border-color: var(--jtc-sc-bg);
}

.sc-classic .moreActions {
  border-color: var(--jtc-sc-btn-hover);
}

.sc-classic .compactTrackListItem__number,
.sc-classic .compactTrackListItem__trackTitle {
  color: var(--jtc-sc-root-text);
}

.sc-classic .compactTrackListItem__user,
.sc-ministats-small:not(.sc-ministats-inverted) {
  color: var(--jtc-sc-light-text);
}

.sc-classic .compactTrackListItem.clickToPlay.active,
.sc-classic .compactTrackListItem.clickToPlay:focus,
.sc-classic .compactTrackListItem.clickToPlay:hover,
.sc-classic .compactTrackList__moreLink:focus,
.sc-classic .compactTrackList__moreLink:hover {
  background-color: var(--jtc-sc-btn-hover);
  color: var(--jtc-sc-root-text);
}

.sc-classic
  .compactTrackListItem.clickToPlay.active
  .compactTrackListItem__additional,
.sc-classic
  .compactTrackListItem.clickToPlay:focus
  .compactTrackListItem__additional,
.sc-classic
  .compactTrackListItem.clickToPlay:hover
  .compactTrackListItem__additional {
  background: linear-gradient(
    90deg,
    hsla(0, 0%, 100%, 0),
    var(--jtc-sc-btn-hover) 17px
  );
}

.sc-classic .tileGallery__sliderButton:after {
  border-color: var(--jtc-sc-root-text);
}

.sc-classic .searchTitle {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .searchTitle__text,
.sc-classic .g-form-section-head {
  border: none;
}

.sc-classic .g-nav-item:not(.active) > .g-nav-link {
  color: var(--jtc-sc-root-text);
}

.sc-classic .g-nav-item:not(.active) .g-nav-link {
  filter: brightness(0) grayscale(1);
}

:root.jtc-sc-dark .sc-classic .g-nav-item:not(.active) .g-nav-link {
  filter: brightness(100) grayscale(1);
}

.sc-classic .g-form-section-title {
  color: var(--jtc-sc-almost-root-text);
  font-weight: 400;
}

.sc-classic .hintButton,
.sc-ministats-small.sc-ministats-sounds:before {
  filter: brightness(0) grayscale(1);
}

:root.jtc-sc-dark .sc-classic .hintButton,
:root.jtc-sc-dark .sc-ministats-small.sc-ministats-sounds:before,
:root.jtc-sc-dark .sc-classic .reportCopyright {
  filter: brightness(100) grayscale(1);
}

input,
select,
textarea {
  background-color: var(--jtc-sc-bg);
  border-color: var(--jtc-sc-border);
  border-width: 1.5px;
  font-weight: 400;
}

.g-dark input[type="password"],
.g-dark input[type="search"],
.g-dark input[type="text"],
.g-dark select,
.g-dark textarea {
  background-color: var(--jtc-sc-header-search);
}

.sc-select {
  font-weight: 400;
}

.sc-toggle {
  background-color: var(--jtc-sc-btn);
  border-color: var(--jtc-sc-btn);
}

.sc-toggle-handle {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .commentForm__input {
  border: none;
  border-bottom: 2px solid var(--jtc-sc-bg);
  border-radius: 0px;
  transition: border-color 0.2s;
  padding: 0;
  margin: 0 9px;
}

.sc-classic .commentForm__inputWrapper.focused .commentForm__input {
  border-color: var(--jtc-sc-border);
}

.sc-classic .commentForm__wrapper {
  background-image: none;
  background-color: var(--jtc-sc-bg);
  border: none;
}

.sc-classic .audibleEditForm__audio,
.sc-classic .audibleEditForm__form,
.sc-classic .tabs__headingContainer,
.sc-classic .tabs__tabs,
.sc-classic .uploadMain__foot,
.sc-classic .uploadMain__chooserContainer,
.sc-classic .quotaMeterWrapper {
  background-color: var(--jtc-sc-popup);
}

.sc-classic .tagInput__wrapper {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .editTrackList__list .sortable-placeholder {
  background-color: var(--jtc-sc-tile);
  border-color: var(--jtc-sc-border);
}

.sc-classic .profileUploadFooter,
.sc-classic .trackManager__upsellWrapper {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .soundBadge.active:not(.compact),
.sc-classic .soundBadge.hover:not(.compact),
.sc-classic .soundBadge.selected:not(.compact),
.sc-classic .soundBadge:hover:not(.compact) {
  background-color: var(--jtc-sc-tile);
}

.sc-classic .soundBadge.active:not(.compact) .soundBadge__additional,
.sc-classic .soundBadge.hover:not(.compact) .soundBadge__additional,
.sc-classic .soundBadge.selected:not(.compact) .soundBadge__additional,
.sc-classic .soundBadge:hover:not(.compact) .soundBadge__additional {
  background: linear-gradient(90deg, transparent, var(--jtc-sc-tile) 17px);
}

:root.jtc-sc-dark .sc-classic .quotaMeter__dropdownButton:after {
  filter: invert(1);
}

.sc-button.sc-button-translucent:not(.sc-button-cta) {
  background-color: var(--jtc-sc-btn);
}

.sc-classic .modal.modalWhiteout {
  background-color: var(--jtc-sc-whiteout);
}

.sc-classic .dialog,
.sc-classic .dialog__arrow {
  background-color: var(--jtc-sc-popup);
  border-color: var(--jtc-sc-border);
}

.sc-classic .linkMenu {
  background-color: var(--jtc-sc-bg);
  border: 1px solid var(--jtc-sc-border);
}

.sc-classic .g-upsell-container,
.sc-classic .sidebarInfoBox__body {
  background-color: var(--jtc-sc-block);
  border-color: var(--jtc-sc-border);
}

.sc-classic .blockCheckbox,
.sc-text-light {
  color: var(--jtc-sc-light-text);
}

.sc-classic .blockCheckbox__title {
  color: var(--jtc-sc-root-text);
}

:root.jtc-sc-dark
  .sc-classic
  .blockCheckbox:not(.m-checked)
  .blockCheckbox__icon {
  filter: grayscale(1) brightness(0.2);
}

.sc-background-white {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .modal__modal {
  background-color: var(--jtc-sc-popup);
  border-color: var(--jtc-sc-border);
}

.sc-background-light,
.statsOverview__separator {
  background-color: var(--jtc-sc-block);
}

.topStatsItemPlaceholder__text:after,
.topStatsItemPlaceholder__text:before {
  background-color: var(--jtc-sc-light-text);
}

.sc-classic .moreActions__group:not(:first-child),
.topStatsModule__item,
.sc-border-dark,
.topStatsItemPlaceholder.listener .topStatsItemPlaceholder__visual {
  border-color: var(--jtc-sc-border);
}

.sc-classic .paging-eof:before {
  background: none;
}

.sc-classic .collection.m-overview .collection__section:not(:last-child),
.sc-classic .g-modal-title-h1 {
  border: none;
}

.sc-classic .playControls__bg,
.sc-classic .playControls__inner,
.sc-classic .volume__sliderWrapper {
  background-color: var(--jtc-sc-bar);
}

.sc-classic .playControls__inner {
  box-shadow: 0 -4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -2px rgb(0 0 0 / 10%);
}

.sc-classic .playControls__bg,
.sc-classic .playControls__inner {
  border-color: var(--jtc-sc-border);
}

.sc-classic .soundContext__line {
  color: var(--jtc-sc-light-text);
}

:root.jtc-sc-dark
  .sc-classic
  .playControls__elements
  .playControls__control
  .shuffleControl:not(.m-shuffling),
:root.jtc-sc-dark
  .sc-classic
  .playControls__elements
  .playControls__control
  .repeatControl.m-none,
:root.jtc-sc-dark
  .sc-classic
  .playControls__elements
  .playControls__control.playControl,
:root.jtc-sc-dark
  .sc-classic
  .playControls__elements
  .playControls__control.skipControl,
:root.jtc-sc-dark .sc-classic .volume__button,
:root.jtc-sc-dark
  .sc-classic
  .playbackSoundBadge__follow:not(.sc-button-selected),
:root.jtc-sc-dark
  .sc-classic
  .playbackSoundBadge__like:not(.sc-button-selected) {
  filter: brightness(100) grayscale(1);
}

:root.jtc-sc-dark .sc-classic .queue__hide {
  filter: invert(1);
}

:root.jtc-sc-dark .sc-classic .queueItemView__more.sc-button-small:before,
:root.jtc-sc-dark
  .sc-button-small.queueItemView__like:not(.sc-button-selected):before {
  filter: brightness(100) grayscale(1);
}

.sc-classic .playbackTimeline__progressBackground,
.sc-classic .volume__sliderBackground {
  background-color: var(--jtc-sc-border);
}

.sc-classic .volume__sliderWrapper:before,
.sc-classic .volume__sliderWrapper:after {
  border-color: transparent transparent var(--jtc-sc-border)
    var(--jtc-sc-border);
}

.sc-classic .volume.expanded .volume__sliderWrapper {
  border-color: var(--jtc-sc-border);
}

.sc-classic .playControls__castControl > #castbutton {
  --disconnected-color: var(--jtc-sc-root-text);
}

.sc-classic
  .playbackSoundBadge:not(.m-queueVisible)
  .playbackSoundBadge__queueIcon {
  fill: var(--jtc-sc-root-text);
}

.sc-classic .gritter-item-wrapper {
  background-color: var(--jtc-sc-block);
  color: var(--jtc-sc-root-text);
  border-color: var(--jtc-sc-border);
}

.sc-classic .playbackTimeline__duration {
  color: var(--jtc-sc-light-text);
}

.sc-classic .playbackSoundBadge__titleLink,
.sc-classic .playbackSoundBadge__titleLink:visited {
  color: var(--jtc-sc-root-text);
}

.sc-classic .queue,
.sc-classic .queue__itemWrapper {
  background-color: var(--jtc-sc-popup);
}

.sc-classic .queue__itemsHeight {
  background: var(--jtc-sc-popup);
}

.sc-classic .queue__panel {
  border-color: var(--jtc-sc-border);
}

.sc-classic .queueFallback__stationMode,
.sc-classic .queue__panel {
  border: none;
}

.sc-classic .keyboardShortcuts__shortcutsGroup > dl > dt > kbd > kbd {
  background-color: var(--jtc-sc-btn);
}

.sc-classic .queueItemView.m-active,
.sc-classic .queueItemView:hover {
  background-color: var(--jtc-sc-btn-hover);
}

.sc-classic .moreActions {
  background-color: var(--jtc-sc-popup);
  padding: 4px;
  border-radius: 5px;
}

.sc-classic .headerMenu {
  padding: 0px 4px;
  border-radius: 5px;
  margin-top: 4px;
  border: 1px solid var(--jtc-sc-border);
  background-color: var(--jtc-sc-popup);
  font-family: inherit;
}

.sc-classic .headerMenu__list {
  padding: 4px 0px;
}

.sc-classic .headerMenu__list li .headerMenu__link {
  border-radius: 5px;
}

.sc-classic .dropdownContent__container {
  background-color: var(--jtc-sc-popup);
}

.sc-classic .dropdownContent__header,
.sc-classic .dropdownContent__main,
.sc-classic .dropdownContent__container,
.sc-classic .dropdownContent__listItem,
.sc-classic .activitiesListFull__item + .activitiesListFull__item,
.sc-classic .composeMessage__bottomWrapper {
  border-color: var(--jtc-sc-border);
}

.sc-classic .notificationBadge__main {
  font-weight: 400;
  color: var(--jtc-sc-light-text);
}

.sc-classic .conversation__actions {
  background-color: var(--jtc-sc-bg);
  box-shadow: none;
}

.sc-classic .conversation__form {
  border: none;
}

.sc-classic .inbox__item:before {
  background-color: var(--jtc-sc-bg);
}

.sc-classic .inboxItem.active,
.sc-classic .inboxItem.unread,
.sc-classic .inboxItem:focus,
.sc-classic .inboxItem:hover {
  background-color: var(--jtc-sc-btn-hover);
}

.sc-classic .trackItem.active,
.sc-classic .trackItem.hover {
  background-color: var(--jtc-sc-btn-hover);
}

.sc-classic .trackItem:not(.m-disabled).active .trackItem__additional,
.sc-classic .trackItem:not(.m-disabled).hover .trackItem__additional {
  background: linear-gradient(
    90deg,
    hsla(0, 0%, 100%, 0),
    var(--jtc-sc-btn-hover) 17px
  );
}

.sc-classic .commentPopover.darkText .commentPopover__body {
  color: var(--jtc-sc-root-text);
}

.commentItem__body,
.commentItem__creatorLink, .commentItem__creatorLink:hover, .commentItem__creatorLink:visited, .commentItem__username, .commentItem__usernameLink, .commentItem__usernameLink:hover, .commentItem__usernameLink:visited,
.commentItem__replyButton, .commentItem__replyButton:hover, .commentItem__replyButton:visited {
  color: var(--jtc-sc-root-text);
}

.commentItem__createdAt, .commentItem__separator, .commentItem__timestamp {
  color: var(--jtc-sc-light-text);
}

.commentItem__timestampLink, .commentItem__timestampLink:hover, .commentItem__timestampLink:visited {
  background-color: var(--jtc-sc-tag-bg);
  color: #38d;
}

.uiEvoButton--isLight.commentItem__likeButton {
  background-color: var(--jtc-sc-bg);
}

.uiEvoButton--isLight, .uiEvoButton:hover.uiEvoButton--isLight, .uiEvoButton:link.uiEvoButton--isLight, .uiEvoButton:visited.uiEvoButton--isLight {
  background-color: var(--jtc-sc-btn);
  color: var(--jtc-sc-root-text);
}

.sc-classic .commentFormDisabled {
  background-color: var(--jtc-sc-bg);
}
`
            .replaceAll(";\n", " !important;\n")
            .replaceAll(":\n", ";\n")
            .replaceAll(
                "$BTN_EXCLUDE",
                ":not(.reportCopyright):not(.hintButton):not(.sc-classic .playbackSoundBadge .playbackSoundBadge__follow):not(.sc-classic .playbackSoundBadge .playbackSoundBadge__like):not(.sc-button-nostyle):not(.sc-button-next):not(.sc-button-pause):not(.sc-button-play):not(.sc-button-prev):not(.sc-button-blocked)"
            )
    );
})();