Light theme for Spotify web player.
Spotify changed a bunch of its CSS and this style is currently out of commission. I'll probably still fix it up when I find the time, but it currently does not quite work.
Mirrored from https://raw.githubusercontent.com/Gravitonic/userstyles/main/spotifylight.user.styl
Authorastarris
LicenseMIT
Categoryspotify
Created
Updated
Code size33 kB
Code checksume4804fe7
Learn how we calculate statistics in the FAQ.
Failed to fetch stats.
Light theme for Spotify web player.
Spotify changed a bunch of its CSS and this style is currently out of commission. I'll probably still fix it up when I find the time, but it currently does not quite work.
This is a work in progress -- big time. There are probably pages that I haven't gotten to styling at all because I personally don't use them much, and I also haven't gotten around to working on browser compatibility.
Please also note that the light theme activation is based on a prefers-color-scheme
media query.
Known issues:
backdrop-filter
CSS property in about:config
for the style to work properly/* ==UserStyle==
@name Spotify Light Theme
@namespace https://github.com/gravitonic
@version 0.10.1
@description Light theme for the Spotify web player
@author Dylan Yang
@preprocessor stylus
@var color mainText "Main Text Color" #191414
@var color lightText "Light Text Color" #535353
@var color lightGrey "Light Gray Color" #b3b3b3
@var color accentColor "Accent Color" #1db954
@var color lightColor "Light Color" #f3f2f2
@var number blurRadius "Blur Radius" [20, 0, 'px']
@var checkbox compactPlayer "Horizontal Playing Bar" 1
==/UserStyle== */
// @var checkbox lightTheme "Light Theme" 1
@-moz-document domain("open.spotify.com") {
playerHeight=90px;
if compactPlayer==1 {
playerHeight=56px;
.player-controls {
flex-direction: row;
}
.player-controls__buttons {
margin: 0 12px 0 0;
}
.now-playing-bar,
.a2d114f8465b4517d0dcdf068d15e9cd-scss {
height: auto;
padding-left: 0;
}
[dir=ltr] .b63c05e4f277a01813677f1aa11b8aa3-scss {
webkit-transform: translateX(-58px);
transform: translateX(-58px);
}
.now-playing {
transition: .5s ease-in-out;
}
.now-playing.now-playing--cover-expanded {
padding-left: 16px;
transition: .5s ease-in-out;
}
.now-playing-bar__left,
.now-playing-bar__right {
width: 25%;
}
}
box-shadow() {
box-shadow: 0 0 10px 0 transparentify(mainText, #fff, 0.1);
transition: 0.3s ease-in-out;
&:hover {
box-shadow: 0 5px 10px 2px transparentify(mainText, #fff, 0.15);
transition: 0.3s ease-in-out;
}
}
@media (prefers-color-scheme: light) {
body,
button,
input {
color: lightText;
}
::-webkit-scrollbar-thumb {
background-color: hsla(0, 0%, 0%, .3);
}
.main-view-container__scroll-node::-webkit-scrollbar-track-piece {
margin-bottom: playerHeight;
}
.Root__now-playing-bar {
grid-area: none;
bottom: 0;
position: absolute;
background-color: transparent;
}
/* BACKGROUND */
.main-view-container__scroll-node-child {
padding-bottom: playerHeight + 32px;
}
html {
background-color: white;
}
.b1b53e70887a91051a9d7dc85160fc6b-scss {
background-color: white;
}
/* GENERAL */
a {
color: mainText;
}
/*
[data-context-menu-open=true] a,
a:focus,
a:hover,
a[data-context-menu-open=true] {
text-decoration: none;
}
*/
.inputBox-input {
color: lightText;
}
.inputBox-label {
color: lightText;
}
.dialog {
backdrop-filter: blur(blurRadius);
background-color: rgba(255, 255, 255, .8);
}
/* dialog x mark */
.c74a35c3aba27d72ee478f390f5d8c16-scss svg path {
fill: lightText;
}
._7c0399398b8b07b1b1fa6764a3ed59b1-scss {
background: none;
}
.inputBox {
background-color: white;
border-radius: 8px;
}
.react-contextmenu {
background-color: white;
}
.react-contextmenu-item.active,
.react-contextmenu-item:hover {
filter: brightness(90%);
}
._5991c352036dcc651a7bec853fd570a8-scss {
color: mainText;
}
/* Headings for items not found e.g. no podcasts */
._43fc5cbf15304cf223134ca70b6692f1-scss {
color: mainText;
}
/* BUTTONS/ICONs */
.a8cc695b476965309a30d01880d6cb01-scss {
color: rgba(mainText, 0.7) !important;
}
/* TRACKLIST */
._235729a60d5e265806e8509d8633b779-scss {
background-color: white;
}
/* gradient from playlist header color to black */
._59ed5f1313c7c4b211995d2b6463683f-scss {
display: none;
}
/* song names */
.da0bc4060bb1bdb4abb8e402916af32e-scss {
color: mainText;
}
/* artist names, album names, date added, song length */
._966e29b71d2654743538480947a479b3-scss a,
.c6287512c50a737d01bd9db32b301fab-scss a,
[data-testid="tracklist-row"] .f3fc214b257ae2f1d43d4c594a94497f-scss[style] {
color: lightText !important;
}
/* play icon on hover */
._38168f0d5f20e658506cd3e6204c1f9a-scss {
color: mainText;
}
/* tracklist row hover */
.e8ea6a219247d88aa936a012f6227b0d-scss:focus-within,
.e8ea6a219247d88aa936a012f6227b0d-scss:hover {
background-color: rgba(mainText, 0.05);
}
/* tracklist row hover after focused */
.e8ea6a219247d88aa936a012f6227b0d-scss.bcc38527b11ab105d496846b4ad11ef4-scss,
.e8ea6a219247d88aa936a012f6227b0d-scss.bcc38527b11ab105d496846b4ad11ef4-scss:hover {
background-color: rgba(mainText, 0.1);
}
/* ellipsis icons on tracklist row hover */
.e8ea6a219247d88aa936a012f6227b0d-scss:focus-within:not(.a735c1fd070add4b8837ff382ba2f6df-scss) ._50a94aaa6bd60a02583729be7f0e4f93-scss,
.e8ea6a219247d88aa936a012f6227b0d-scss:hover:not(.a735c1fd070add4b8837ff382ba2f6df-scss) ._50a94aaa6bd60a02583729be7f0e4f93-scss {
color: lightText;
}
/* ellipsis icon in tracklist row when menu opened */
._50a94aaa6bd60a02583729be7f0e4f93-scss[data-context-menu-open=true] {
color: lightText;
}
/* play icon on tracklist row focus */
.e8ea6a219247d88aa936a012f6227b0d-scss.bcc38527b11ab105d496846b4ad11ef4-scss ._6b1ff8eab07810e2b7845ffe28430e38-scss,
.e8ea6a219247d88aa936a012f6227b0d-scss.bcc38527b11ab105d496846b4ad11ef4-scss:hover ._6b1ff8eab07810e2b7845ffe28430e38-scss {
color: mainText;
}
/* tracklist play icon focused */
.e8ea6a219247d88aa936a012f6227b0d-scss:focus-within:not(.a735c1fd070add4b8837ff382ba2f6df-scss) ._38168f0d5f20e658506cd3e6204c1f9a-scss,
.e8ea6a219247d88aa936a012f6227b0d-scss:hover:not(.a735c1fd070add4b8837ff382ba2f6df-scss) ._38168f0d5f20e658506cd3e6204c1f9a-scss {
outline: none;
}
/* track number of plays popularity -- e.g. for top traacks on artiest page */
.e8ea6a219247d88aa936a012f6227b0d-scss:hover:not(.a735c1fd070add4b8837ff382ba2f6df-scss) .c6287512c50a737d01bd9db32b301fab-scss,
.e8ea6a219247d88aa936a012f6227b0d-scss:hover:not(.a735c1fd070add4b8837ff382ba2f6df-scss) .c6287512c50a737d01bd9db32b301fab-scss a {
color: mainText;
}
/* track number of plays popularity on tracklist row focus */
.e8ea6a219247d88aa936a012f6227b0d-scss.bcc38527b11ab105d496846b4ad11ef4-scss .c6287512c50a737d01bd9db32b301fab-scss,
.e8ea6a219247d88aa936a012f6227b0d-scss.bcc38527b11ab105d496846b4ad11ef4-scss:hover .c6287512c50a737d01bd9db32b301fab-scss {
color: mainText;
}
/* tracklist headers sticky */
._83d9fef4ae69148dc1fc9b8323f8528b-scss._2dc8cce76d72af90f5e00e781db42541-scss {
background-color: lightColor;
border: none;
}
/* Ellipsis */
.a319647e0b4638c35cbe1cc56bbe8710-scss {
color: mainText;
}
.a319647e0b4638c35cbe1cc56bbe8710-scss:hover {
color: lightText;
}
/* Also ellipsis apparently */
._605821ce181f6de6632eabd6a46377fb-scss {
color: lightText;
}
/* ellipsis next to follow, on hover */
._605821ce181f6de6632eabd6a46377fb-scss:active,
._605821ce181f6de6632eabd6a46377fb-scss:hover {
color: mainText;
}
/* Find more button at bottom of playlist */
._1de06189bc33bb25805c19bdbc99664e-scss {
color: mainText;
}
/* refresh playlist suggestions */
.e6ed3359ee250e2ecc13253d4db86076-scss {
color: mainText;
}
/* title in top bar on scroll */
._5acabdea2ee35e177c1df2bfde71d869-scss {
color: mainText;
}
/* ROUNDED RECTANGLE PANELS */
/* panel background */
._3802c04052af0bb5d03956299250789e-scss {
background: white;
box-shadow();
}
._3802c04052af0bb5d03956299250789e-scss:hover,
._3802c04052af0bb5d03956299250789e-scss[data-context-menu-open=true] {
background: darken(white, 4%);
}
._6424f268be3505ebab663700d60ebaa6-scss {
overflow: visible;
}
/* background behind images */
._2ce7a4a879bab3a4f4543c870c6d79fd-scss {
background: transparent;
border-radius: 4px;
}
/* same but for podcasts */
._3c714093dde27a95828cd3b036c6bd47-scss {
background: transparent;
border-radius: 12px;
}
.ea5ea5226ed6fbf2cc63599fbda43580-scss {
border-radius: 50%;
}
/* Circle */
._11f5fc88e3dec7bfec55f7f49d581d78-scss {
background-color: accentColor;
}
._80c2c1f0f44b53866fc1b5e9fa66b949-scss,
._231fdfa582dcc286559e37228e472dfd-scss {
color: mainText !important;
}
._244a0ac55904a7c958f4f21be2f7a673-scss {
overflow: visible !important;
}
._150ae7fd9abd9aa13b6fa9c8be2b76a6-scss {
color: mainText !important;
}
._1aca8ea6d314e58957d99cc0df0d2ca1-scss {
background-image: linear-gradient(rgba(255, 255, 255, .95), white 50%) !important;
}
/* HOME */
html[dir=ltr] .a30bc3a2554a1ee9d60cc33f550927fe-scss,
.bec438c032702fec6886039b3385e589-scss {
color: lightText;
}
._79db9bc9b8d7d51dc51191bf91a55c64-scss {
background: white;
}
._7ae3a7b5ef70bce1740ff486c4467d56-scss {
background-image: linear-gradient(rgba(255, 255, 255, .8), white);
}
/* suggestion subtitles */
._3cfbde1fd9fecaaa77935664eeb6e346-scss {
color: lightText !important;
}
/* play buttons on hover over suggestions */
._1991208eaca7e4ed0cff8a9919cfd509-scss,
._3a2318b538bc2aae78113023036a879a-scss {
box-shadow: 0 8px 8px rgba(0, 0, 0, 0.1);
}
/* shortcuts items */
._28be3af50433a1164b3a62a898dce43e-scss {
background-color: rgba(white, 0.4);
box-shadow: 0 2px 8px rgba(0, 0, 0, .05);
transition-property: all;
}
._28be3af50433a1164b3a62a898dce43e-scss:focus-within,
._28be3af50433a1164b3a62a898dce43e-scss:hover,
._28be3af50433a1164b3a62a898dce43e-scss[data-context-menu-open=true] {
background-color: rgba(white, 0.01);
box-shadow: 0 2px 8px rgba(0, 0, 0, .08);
}
/* shortcuts grid template */
._560fb0a89f4ec24665eb945cfe2c97b0-scss {
overflow: visible;
}
/* shortcuts album/playlist covers */
._28be3af50433a1164b3a62a898dce43e-scss ._9ac38655c14bc3ee70c0c38bce1c9e...